默认情况下,Nuxt i18n 模块通过检测用户的浏览器语言,尝试将用户重定向到他们首选的语言。这通过 detectBrowserLanguage
选项进行控制。
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
redirectOn: 'root' // 推荐
}
}
})
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。
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'my_custom_cookie_name'
}
}
如果您希望用户每次访问应用时都重定向到他们浏览器的语言,可以通过将 detectBrowserLanguage.useCookie
设置为 false
来禁用 cookie。
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: false
}
}
})
要完全禁用浏览器语言检测功能,将 detectBrowserLanguage
设置为 false
。
export default defineNuxtConfig({
i18n: {
// ...
detectBrowserLanguage: false
}
})
要在用户每次访问应用时重定向他们并保持他们的选择,可以开启 alwaysRedirect
:
export default defineNuxtConfig({
i18n: {
// ...
detectBrowserLanguage: {
useCookie: true,
alwaysRedirect: true
}
}
})
要在跨源环境(例如在 iFrame 中)中使用 cookie,您可以设置 cookieCrossOrigin: true
。这将把 cookie 设置从 'SameSite=Lax'
更改为 'SameSite=None; Secure'
。
export default defineNuxtConfig({
i18n: {
detectBrowserLanguage: {
useCookie: true,
cookieCrossOrigin: true
}
}
})