选项

nuxt/i18n v7 选项。

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

baseUrl

  • 类型: stringfunction
  • 默认: ''

用于 hreflang 标签中替代 URL 的后备基本 URL。默认情况下,将使用 VueRouter 的基本 URL,如果不可用,则使用后备 URL。

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

当使用 SEO 功能时,设置此选项尤其重要,这种情况下生成的 SEO 标签要求使用完全限定的 URL。

locales

  • 类型: array
  • 默认: []

应用程序支持的区域列表。可以是代码的数组(['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 (必填) - 区域的唯一标识符
  • iso(在使用 SEO 功能时必填) - 用于 SEO 功能的语言范围,用于匹配使用 detectBrowserLanguage 功能时的浏览器区域。应使用 IETF 的 BCP47 定义的语言标签语法,例如:
    • 'en'(英语的language子标签)
    • 'fr-CA'(加拿大法语的language+region子标签)
    • 'zh-Hans'(简体中文的language+script子标签)
  • file - 文件名。加载区域消息时,将相对于 langDir 路径解析
  • dir(从 v6.19.0 开始)该属性指定元素和内容的方向,可为 'rtl''ltr''auto'
  • domain(在使用 differentDomains 时必填) - 想要为该区域使用的域名(如果使用了端口,需要包括端口)
  • ... - 在对象上设置的任何自定义属性将在运行时暴露。这可用于定义语言名称,以便在页面上的语言选择器中使用。

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

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

defaultDirection

  • 类型: string
  • 默认: ltr

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

defaultLocale

  • 类型: stringnull
  • 默认: null

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

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

sortRoutes

  • 类型: boolean
  • 默认: true

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

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

strategy

  • 类型: string
  • 默认: 'prefix_except_default'

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

  • 'no_prefix':路由将没有区域前缀
  • 'prefix_except_default':为每个区域添加区域前缀,但不包括默认区域
  • 'prefix':为每个区域添加区域前缀
  • 'prefix_and_default':为每个区域和默认区域添加区域前缀

lazy

  • 类型: booleanLazyOptions
  • 默认: false

另请参见延迟加载翻译

是否应懒加载翻译。如果启用,您必须配置 langDir 选项,并且区域必须是包含 file 键的对象数组。

懒加载区域消息意味着仅加载当前使用的区域(以及后备区域,如果不同于当前区域)的消息。

LazyOptions

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

skipNuxtState

  • 类型: boolean
  • 默认: true

当前区域的翻译消息是否应注入到 Nuxt 状态中并在客户端上重用。了解更多

langDir

  • 类型: stringnull
  • 默认: null

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

detectBrowserLanguage

  • 类型: object
  • 默认:
    {
      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 的默认域。默认为网站的主机
  • cookieCrossOrigin(默认: false) - 当 true 时,在 cookie 上设置标志 SameSite=None; Secure 以允许跨域使用该 cookie(当应用嵌入在 iframe 中时需要)。
  • cookieSecure(默认: false) - 为 cookie 设置 Secure 标志。

设置为 false 以禁用。

rootRedirect

  • 类型: stringobjectnull
  • 默认: null

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

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

differentDomains

  • 类型: boolean
  • 默认: false

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

parsePages

  • 类型: boolean
  • 默认: true

是否通过 babel 解析器从页文件中提取自定义路径

pages

  • 类型: object
  • 默认: {}

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

vuex

  • 类型: objectfalse
  • 默认: { moduleName: 'i18n', syncRouteParams: true }

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

属性:

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

vueI18n

  • 类型: objectstring
  • 默认: {}

该模块内部使用的 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

  • 类型: boolean
  • 默认: false

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

onBeforeLanguageSwitch

  • 类型: function
  • 默认: (oldLocale, newLocale, isInitialSetup, context) => {}

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

参见 回调

onLanguageSwitched

  • 类型: function
  • 默认: (oldLocale, newLocale) => {}

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

参见 回调

skipSettingLocaleOnNavigate

  • 类型: boolean
  • 默认: false

如果为 true,则在导航到新区域时不会设置区域。如果您希望在使用 finalizePendingLocaleChange 设置区域之前等待页面过渡结束,这很有用。有关更多信息,请参阅等待页面过渡

defaultLocaleRouteNameSuffix

  • 类型: string
  • 默认: 'default'

为默认区域生成的路由名称添加的内部后缀,尤其是在策略为 prefix_and_default 时。您不应更改此内容。

routesNameSeparator

  • 类型: string
  • 默认: '___'

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