浏览器语言检测
默认情况下,@nuxtjs/i18n 通过检测用户浏览器的语言来尝试将用户重定向到他们首选的语言。此功能由 detectBrowserLanguage
选项控制:
nuxt.config.ts
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
redirectOn: 'root', // 推荐
}
}
为了提高 SEO,建议将
redirectOn
设置为 root
(这是默认值)。设置后,只有当用户访问网站的根路径(/
)时,才会尝试语言检测。这使爬虫能够访问请求的页面,而不是根据检测到的区域设置被重定向。这也允许链接到特定区域的页面。浏览器语言要么是从 navigator
中检测(当在客户端运行时),要么是从 accept-language
HTTP 头中获取。配置的 locales
(或在对象形式指定的 locales iso
和/或 code
)与浏览器报告的 locales 进行匹配(例如 en-US,en;q=0.9,no;q=0.8
)。如果没有完全匹配的区域设置,则语言代码(在 -
之前的字母)与配置的 locales 进行匹配。
为了防止用户每次访问应用时都进行重定向,@nuxtjs/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
i18n: {
detectBrowserLanguage: {
useCookie: false
}
}
要完全禁用浏览器语言检测功能,请将 detectBrowserLanguage
设置为 false
。
nuxt.config.ts
i18n: {
detectBrowserLanguage: false
}
要在每次用户访问应用时进行重定向,并保持他们的选择,可以启用 alwaysRedirect:
nuxt.config.ts
i18n: {
detectBrowserLanguage: {
useCookie: true,
alwaysRedirect: true
}
}
要在跨域环境中(例如在 iFrame 中)使用 cookie,您可以设置 cookieCrossOrigin: true
。这将把 cookie 设置从 SameSite=Lax
更改为 SameSite=None; Secure
。
nuxt.config.ts
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieCrossOrigin: true
}
}