V7

选项

nuxt/i18n v7 选项。

请参见 设置 部分以了解在哪里设置模块选项。

baseUrl

  • type: stringfunction
  • default: ''

hreflang 标签中作为备用 URL 前缀使用的基础 URL。默认情况下,将使用 VueRouter 的基础 URL,仅在该 URL 不可用时,才会使用备用 URL。

也可以是一个函数(将以 Nuxt 上下文作为参数传递),返回一个字符串。适合根据请求头动态生成基础 URL。

在使用 SEO 功能时,设置此选项尤其重要,因为要求生成的 SEO 标签使用完全合格的 URL。

locales

  • type: array
  • default: []

支持的区域列表。可以是代码数组 (['en', 'fr', 'es']) 或用于更复杂配置的对象数组:

;[
  { code: 'en', iso: 'en-US', file: 'en.js', dir: 'ltr' },
  { code: 'ar', iso: 'ar-EG', file: 'ar.js', dir: 'rtl' },
  { code: 'fr', iso: 'fr-FR', file: 'fr.js' }
]

使用对象形式时,属性可以是:

  • code (required) - 区域的唯一标识符
  • iso (使用 SEO 功能时必需) - 用于 SEO 功能和匹配浏览器区域设置的语言范围,使用 detectBrowserLanguage 功能时。应使用 IETF 的 BCP47 定义的 语言标签语法,例如:
    • 'en'(英语的 language 子标签)
    • 'fr-CA'(在加拿大使用的法语的 language+region 子标签)
    • 'zh-Hans'(使用简体书写的中文的 language+script 子标签)
  • file - 文件名。在从文件加载区域消息时,将相对于 langDir 路径解析
  • dir (自 v6.19.0 起) - dir 属性指定元素和内容的方向,值可以是 'rtl''ltr''auto'
  • domain (使用 differentDomains 时必需) - 您希望为该区域使用的域名(如有使用,包括端口)
  • ... - 在对象上设置的任何自定义属性将在运行时暴露。这可以用于定义语言名称,以便在页面的语言选择器中使用。

您可以通过 localeProperties 属性访问当前区域的所有属性。当使用代码数组时,仅包含 code 属性。

为设置方向属性,您必须在您的布局中使用 $nuxtI18nHead 方法。
layouts/default.vue
export default {
  head() {
    return this.$nuxtI18nHead()
  }
}

defaultDirection

  • type: string
  • default: ltr

应用程序的默认方向。仅在未指定 dir 时使用。

defaultLocale

  • type: stringnull
  • default: null

应用程序的默认区域。应与已定义 locales 中的一个代码匹配。

使用 prefix_except_default 策略时,此处指定的区域 URL 不会带有前缀。建议将其设置为某个区域,无论选择的策略如何,因为它将作为导航到不存在的路由时的备用区域使用。

sortRoutes

  • type: boolean
  • default: true

是否通过使用 @nuxt/utils 包中的 sortRoutes 函数来对路由进行排序。

尽管 Nuxt 自己会对路由进行排序,但它是在 @nuxtjs/i18n 添加其生成的路由之前进行的,因此模块必须重新排序。这是必要的,因为否则某些路由可能会由于被更通用的路由遮蔽而变得无法访问。如果您以编程方式添加自定义路由,排序可能会以意想不到的方式更改您的自定义路由的顺序,在这种情况下,您可能希望禁用排序并自行处理。在这种情况下,您必须自行确保正确的顺序,以便例如,一个更通用的路由 /en/* 不会遮蔽一个更具体的路由 /en/foo/*(后者应首先注册以正常工作)。

strategy

  • type: string
  • default: 'prefix_except_default'

路由生成策略。可以设置为以下之一:

  • 'no_prefix':路由不会有区域前缀
  • 'prefix_except_default':为每个区域添加区域前缀,除了默认区域
  • 'prefix':为每个区域添加区域前缀
  • 'prefix_and_default':为每个区域和默认区域添加区域前缀

lazy

  • type: booleanLazyOptions
  • default: false

另请参见 懒加载翻译

翻译是否应懒加载。如果启用,则必须配置 langDir 选项,并且 locales 必须是一个对象数组,每个对象包含一个 file 键。

懒加载区域消息意味着在页面加载时,仅将当前使用的区域(以及备用区域,如果与当前区域不同)的消息加载。

LazyOptions

值也可以设置为一个对象,而不是 true 值,以覆盖与懒加载相关的配置选项。支持以下可选属性:

skipNuxtState

  • type: boolean
  • default: true

是否应将当前区域的翻译消息注入到 Nuxt 状态中并在客户端重新使用。阅读更多

langDir

  • type: stringnull
  • default: null

包含要加载的翻译文件的目录。可以与懒加载一起使用或单独使用(即 lazy 选项)。使用带有尾部斜杠的 Webpack 路径,如 ~/locales/

detectBrowserLanguage

  • type: object
  • default:
    {
      alwaysRedirect: false,
      fallbackLocale: '',
      redirectOn: 'root',
      useCookie: true,
      cookieAge: 365,
      cookieCrossOrigin: false,
      cookieDomain: null,
      cookieKey: 'i18n_redirected',
      cookieSecure: false,
    }
    

启用浏览器语言检测,以便在访问您的网站时首次自动将访客重定向到他们首选的区域。

另请参见 浏览器语言检测 获取指南。

注意,出于更好的 SEO,建议将 redirectOn 设置为 root

支持的属性:

  • alwaysRedirect (默认: false) - 设置为始终重定向到存储在 cookie 中的值,而不仅仅是在首次访问时。
  • fallbackLocale (默认: null) - 如果没有区域与浏览器的区域匹配,则使用此区域作为后备。
  • redirectOn (默认: root) - 支持的选项:
    • all - 在所有路径上检测浏览器区域。
    • root (推荐以改善 SEO) - 仅在站点的根路径(/)上检测浏览器区域。仅在使用除 'no_prefix' 外的策略时有效。
    • no prefix - root 的一种更宽容的变体,在根路径(/)和没有区域前缀的路径(如 /foo)上检测浏览器区域。仅在使用除 'no_prefix' 外的策略时有效。
  • useCookie (默认: true) - 如果启用,则会使用浏览器的首选区域设置一个 cookie(如果未设置),以防止后续重定向。设置为 false 可以在每次重定向时重定向。
  • cookieAge (默认: 365) - 设置 cookie 的最大生命周期(以天为单位)。
  • cookieKey (默认: 'i18n_redirected') - Cookie 名称。
  • cookieDomain (默认: null) - 设置以覆盖 cookie 的默认域名。默认为站点的 host
  • cookieCrossOrigin (默认: false) - 当 true 时,在 cookie 上设置标志 SameSite=None; Secure 以允许跨域使用 cookie(当应用嵌入在 iframe 中时需要)。
  • cookieSecure (默认: false) - 为 cookie 设置 Secure 标志。

设置为 false 以禁用。

rootRedirect

  • type: stringobjectnull
  • default: null

设置重定向用户访问根 URL (/) 的路径。接受字符串或带有 statusCodepath 属性的对象。例如:

{
  statusCode: 301,
  path: 'about-us'
}

differentDomains

  • type: boolean
  • default: false

当为每个区域使用不同的域名时,将此设置为 true。如果启用,则不会在路由中添加前缀,您必须将 locales 配置为包含 domain 键的对象数组。有关更多信息,请参见 不同域名

parsePages

  • type: boolean
  • default: true

是否使用 babel 解析器从页面文件中提取 自定义路径

pages

  • type: object
  • default: {}

如果禁用 parsePages 选项,则模块将在 pages 选项中查找自定义路由。有关用法,请参见 路由

vuex

  • type: objectfalse
  • default: { moduleName: 'i18n', syncRouteParams: true }

注册用于同步应用程序 i18n 状态的存储模块。设置为 false 以禁用。

属性:

  • moduleName (默认: 'i18n') - 模块的命名空间。
  • syncRouteParams (默认: true) - 启用 setRouteParams 变更,以便使用动态路由的自定义路由名称。在 动态路由参数 中获取更多信息。

vueI18n

  • type: objectstring
  • default: {}

用于此模块内部的 vue-i18n 库的配置。有关完整文档,请访问 http://kazupon.github.io/vue-i18n/api/#constructor-options

也支持将此属性设置为本地配置文件的路径。该文件需要导出一个函数或普通对象。如果是函数,将以 Nuxt 上下文作为参数传递。当要覆盖无法正确字符串化的复杂类型(如函数)时,使用该方法是必要的。
~/plugins/vue-i18n.js
export default context => {
  return {
    modifiers: {
      snakeCase: str => str.split(' ').join('-')
    }
  }
}

vueI18nLoader

  • type: boolean
  • default: false

如果为真,则 vue-i18n-loader 将被添加到 Nuxt 的 Webpack 配置中,允许使用自定义 i18n 块为每个页面定义区域消息。

onBeforeLanguageSwitch

  • type: function
  • default: (oldLocale, newLocale, isInitialSetup, context) => {}

在更改应用程序区域之前调用的监听器。可以覆盖即将设置的区域。

请参见 回调

onLanguageSwitched

  • type: function
  • default: (oldLocale, newLocale) => {}

在应用程序区域更改后调用的监听器。

请参见 回调

skipSettingLocaleOnNavigate

  • type: boolean
  • default: false

如果为 true,在导航到新区域时不会设置区域。如果您希望在页面过渡结束后再使用 finalizePendingLocaleChange 自行设置区域,这非常有用。有关更多信息,请参见 等待页面过渡

defaultLocaleRouteNameSuffix

  • type: string
  • default: 'default'

为默认区域生成的路由名称添加的内部后缀,如果策略是 prefix_and_default。您不需要更改此内容。

routesNameSeparator

  • type: string
  • default: '___'

为每个区域生成的路由名称使用的内部分隔符。您不需要更改此内容。