目的:用户第一次进来。根据浏览器语言设置语言环境。
问题:1.浏览器权重q 跟语言是否是默认浏览器语言并无关系。只是设置的浏览器语言的排序。但一般正常来讲,获取到的第一个语言一般为浏览器语言。
2.个别浏览器会有获取不到的情况。
方案:如果用户的url参数没有lang,也无cookie信息,则通过浏览器语言('accept-language')设置网站语言环境。一般中文,包括简体和繁体均以zh开头
代码:
const browserLang = ctx => {
const langs = ctx.header['accept-language'];
logger.info('获取到的浏览器语言', langs)
let lang = 'en_US'
if (langs && langs.startsWith('zh')) {
lang = 'zh_CN'
}
logger.info('第一次设置语言', lang)
return lang
}
const getLangFormat = ctx => {
const langs = ['zh_CN', 'en_US', 'ru_RU']
const lang = ctx.query.lang || ctx.cookies.get('Lang') || browserLang(ctx)
const realLang = langs.includes(lang) ? lang : 'zh_CN'
const cookieOptions = {
httpOnly: false,
domain: process.env.COOKIE_DOMAIN,
expires: new Date(2147483647000)
}
ctx.cookies.set('Lang', realLang, cookieOptions)
return realLang
}