指南
路由策略
Nuxt i18n 模块覆盖 Nuxt 默认路由,为每个 URL 添加区域前缀,使用路由策略。
此功能基于 Nuxt 路由。假设您在使用
pages
目录来控制路由。路由
Nuxt i18n 模块 覆盖 Nuxt 默认路由,为每个 URL 添加区域前缀(在 no_prefix
策略中除外)。
假设您的应用程序支持两种语言:法语和英语(作为默认语言),并且在您的项目中有以下页面:
└── pages
├── about
│ └── index.vue
└── index.vue
这会生成以下路由
[
{
path: "/",
name: "index___en",
...
},
{
path: "/fr/",
name: "index___fr",
...
},
{
path: "/about",
name: "about___en",
...
},
{
path: "/fr/about",
name: "about___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'
}
// ...
})