浏览器语言检测
检测用户浏览器的语言。
默认情况下,Nuxt i18n 模块通过检测用户的浏览器语言,尝试将用户重定向到其首选语言。这由 detectBrowserLanguage 选项控制。
nuxt.config.ts
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
redirectOn: 'root' // 推荐
}
}
})
为了更好的 SEO,建议将
redirectOn 设置为 root(这是默认值)。设置后,只有当用户访问站点的根路径 ('/') 时,才会尝试语言检测。这允许爬虫访问所请求的页面,而不是根据检测到的语言环境被重定向走。它还允许链接到特定语言环境中的页面。浏览器语言是在客户端运行时从 navigator 检测,或者从 accept-language HTTP 头检测。配置的 locales(或当语言环境以对象形式指定时,语言环境的 language 和/或 code)与浏览器报告的语言环境(例如 en-US,en;q=0.9,no;q=0.8)进行匹配。如果完整语言环境没有精确匹配,则语言代码(- 之前的字母)与配置的语言环境进行匹配。
为了防止用户每次访问应用程序时都被重定向,Nuxt i18n 模块 使用检测到的语言环境设置一个 cookie。你可以通过将 detectBrowserLanguage.cookieKey 选项设置为你想要的任何名称来更改 cookie 的名称,默认是 i18n_redirected。
nuxt.config.ts
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'my_custom_cookie_name'
}
}
如果你希望用户每次访问应用程序时都被重定向到其浏览器语言,请将 detectBrowserLanguage.useCookie 设置为 false 以禁用 cookie。
nuxt.config.ts
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: false
}
}
})
要完全禁用浏览器语言检测功能,请将 detectBrowserLanguage 设置为 false。
nuxt.config.ts
export default defineNuxtConfig({
i18n: {
// ...
detectBrowserLanguage: false
}
})
要让用户每次访问应用程序时都重定向并保留他们选择的语言,请启用 alwaysRedirect:
nuxt.config.ts
export default defineNuxtConfig({
i18n: {
// ...
detectBrowserLanguage: {
useCookie: true,
alwaysRedirect: true
}
}
})
要在跨域环境(例如 iFrame)中使用 cookie,你可以设置 cookieCrossOrigin: true。这将把 cookie 设置从 'SameSite=Lax' 更改为 'SameSite=None; Secure'。
nuxt.config.ts
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieCrossOrigin: true
}
}
})