指南
路由策略
Nuxt i18n 模块覆盖 Nuxt 默认路由,为每个 URL 添加语言前缀与路由策略。
此功能建立在 Nuxt 的路由 之上,需要你的项目中有
pages
目录才能启用。路由
Nuxt i18n 模块 覆盖了 Nuxt 默认路由,为每个 URL 添加语言前缀(在 'no_prefix'
策略中除外)。
假设你的应用支持两种语言:法语和英语(默认语言),并且你的项目中有以下页面:
-| pages/
---| about.vue
---| index.vue
---| posts/
-----| [id].vue
[
{
path: "/",
name: "index___en",
},
{
path: "/fr",
name: "index___fr",
},
{
path: "/about",
name: "about___en",
},
{
path: "/fr/about",
name: "about___fr",
},
{
path: "/posts/:id",
name: "posts-id___en",
},
{
path: "/fr/posts/:id",
name: "posts-id___fr",
}
]
请注意,英语版本的路由没有任何前缀,因为它是默认语言,更多细节请参见路由策略部分。
策略
有 4 种支持的策略会影响应用路由的生成方式:
'no_prefix'
使用此策略,您的路由不会添加语言前缀。语言将被检测并更改,而不会更改 URL。这意味着你必须依赖浏览器和 Cookie 检测,并通过调用 i18n API 实现语言切换。
'prefix_except_default'
使用此策略,所有路由都会添加语言前缀,除了默认语言。
'prefix'
使用此策略,所有路由都会添加语言前缀。
'prefix_and_default'
此策略结合了前两种策略的行为,意味着您将获得每种语言带有前缀的 URL,但默认语言的 URL 也将有一个不带前缀的版本(尽管当启用 detectBrowserLanguage
时,带前缀的版本将被优先使用)。
配置
要配置策略,请使用 strategy
选项。
确保定义了 defaultLocale
,特别是在使用 prefix_except_default
、prefix_and_default
或 no_prefix
策略时。对于其他策略,也建议设置此项,因为在尝试从 404 页面重定向时将作为后备使用。
nuxt.config.ts
export default defineNuxtConfig({
// ...
i18n: {
strategy: 'prefix_except_default',
defaultLocale: 'en'
}
// ...
})