指南

路由策略

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 实现语言切换。

此策略不支持 自定义路径忽略路由 功能,除非您也使用 differentDomains

prefix_except_default

使用此策略,除了默认语言外,您所有的路由将添加语言前缀。

prefix

使用此策略,所有路由将添加语言前缀。

prefix_and_default

此策略结合了前两种策略的行为,这意味着您将获得每种语言的带前缀的 URL,但默认语言的 URL 也将有一个不带前缀的版本(尽管带前缀的版本在启用 detectBrowserLanguage 时会被优先考虑)。

配置

要配置策略,请使用 strategy 选项。 确保您定义了 defaultLocale,特别是如果使用 prefix_except_defaultprefix_and_defaultno_prefix 策略。对于其他策略,建议您也设置此选项,因为它将在尝试从 404 页面重定向时用作后备。

nuxt.config.ts
export default defineNuxtConfig({
  // ...

  i18n: {
    strategy: 'prefix_except_default',
    defaultLocale: 'en'
  }

  // ...
})