指南

路由策略

Nuxt i18n 模块覆盖 Nuxt 默认路由,为每个 URL 添加区域前缀,采用路由策略。
此功能建立在 Nuxt 的路由 之上,需要您的项目有一个 pages 目录才能启用。

路由

Nuxt i18n 模块 覆盖了 Nuxt 默认路由,为每个 URL 添加区域前缀(除非在 'no_prefix' 策略中)。

假设您的应用程序支持两种语言:法语和英语为默认语言,并且您的项目中有以下页面:

-| pages/
---| about.vue
---| index.vue
---| posts/
-----| [id].vue

请注意,英语版本的路由没有任何前缀,因为它是默认语言,有关更多详细信息,请参阅路由策略部分。

策略

有 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'
  }

  // ...
})