Lzh on GitHub

选项

您可以用来配置 Nuxt I18n 的所有选项。

vueI18n

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

用于此模块内部的 Vue I18n 选项的构建时配置。完整文档请参见 此处

createI18n() 的配置可以通过配置文件传递。默认情况下,如果未指定任何内容,模块将扫描 i18n.config{.js,.mjs,.ts}

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxtjs/i18n'],
  i18n: {
    vueI18n: './nuxt-i18n.js' // 自定义路径示例
  }
})

你需要 export default 一个普通对象函数

导出普通对象示例:

export default {
  legacy: false,
  locale: 'en',
  messages: {
    en: {
      welcome: 'Welcome'
    },
    fr: {
      welcome: 'Bienvenue'
    }
  }
}

导出函数示例:

import en from '../locales/en.json'
import fr from '../locales/fr.yaml'

// 你可以使用 `defineI18nConfig` 来获取传递给 vue-i18n 的选项的类型推断。
export default defineI18nConfig(() => {
  return {
    legacy: false,
    locale: 'en',
    messages: {
      en,
      fr
    }
  }
})
Vue I18n 的 messages 选项应该由普通对象返回。它将通过 vue-i18n 消息编译器在 nuxt i18n 模块中预编译为 vue-i18n 运行时中的可执行消息。

baseUrl

  • 类型:string | Function
  • 默认值:''

用于 hreflang 标签中备用 URL 前缀的回退基本 URL。默认情况下,将使用 VueRouter 的基本 URL,并且只有当它不可用时,才使用回退 URL。

也可以是一个函数(将 Nuxt 上下文作为参数传递)并返回一个字符串。这对于根据请求头使基本 URL 动态化很有用。

此属性也可以使用 runtimeConfig 设置。

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

locales

  • 类型:string[] | LocaleObject[]
  • 默认值:[]

您的应用程序支持的语言环境列表。可以是语言代码数组 (['en', 'fr', 'es']) 或用于更复杂配置的语言环境对象数组:

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

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

code

  • 类型:string
  • 语言环境的唯一标识符

language

  • 类型:undefined | string
  • 使用 SEO 功能时必需
  • 用于 SEO 功能和在使用 detectBrowserLanguage 功能时匹配浏览器语言环境的语言范围。应使用 IETF 的 BCP47 定义的 语言标签语法,例如:
    • 'en' (英语的 language 子标签)
    • 'fr-CA' (加拿大法语的 language+region 子标签)
    • 'zh-Hans' (使用简体脚本书写的中文的 language+script 子标签)

file

  • 类型:null | string | { path: string; cache: string; }
  • 文件的名称。从文件加载语言环境消息时,将相对于 langDir 路径解析。

files

  • 类型:null | string[] | { path: string; cache: string; }[]
  • 定义了多个语言环境消息的文件名称。从文件加载语言环境消息时,将相对于 langDir 路径解析。

dir

  • 类型:null | 'rtl' | 'ltr' | 'auto'
  • dir 属性指定元素和内容的方向,值可以是 'rtl''ltr''auto'

domain

  • 类型:null | string
  • 您希望用于该语言环境的域名(包括端口,如果使用)。此属性也可以使用 runtimeConfig 设置。使用 differentDomains 时,此属性是必需的。

domains

  • 类型:null | string[]
  • 一个 domain 数组。当使用 multiDomainLocales 且一个或多个域具有多个相同的语言环境时,此属性是必需的。

defaultForDomains

  • 类型:null | string[]
  • (使用 multiDomainLocales 时可选)
  • 使用 domains 时,此语言环境应作为默认语言环境的 domain 数组。

domainDefault

  • 类型:null | boolean
  • 对于每个应作为特定域的默认语言环境的语言环境,将 domainDefault 设置为 true。当使用 differentDomains 且一个或多个域具有多个语言环境时,此属性是必需的。

...

  • 在对象上设置的任何自定义属性都将在运行时公开。例如,这可以用于定义语言名称,以便在页面上的语言选择器中使用。

您可以通过 localeProperties 属性访问当前语言环境的所有属性。当使用代码数组时,它将只包含 code 属性。

defaultDirection

  • 类型:string
  • 默认值:ltr

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

defaultLocale

  • 类型:string | null
  • 默认值:null

应用程序的默认语言环境。应与定义的 locales 中的一个语言代码匹配。

当使用 prefix_except_default 策略时,此处指定的语言环境的 URL 将没有前缀。建议将其设置为某个语言环境,无论选择何种策略,因为它将在导航到不存在的路由时用作回退语言环境。

strategy

  • 类型:'no_prefix' | 'prefix_except_default' | 'prefix' | 'prefix_and_default'
  • 默认值:'prefix_except_default'

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

  • 'no_prefix':路由将没有语言环境前缀
  • 'prefix_except_default':除默认语言环境外,每个语言环境都添加语言环境前缀
  • 'prefix':每个语言环境都添加语言环境前缀
  • 'prefix_and_default':每个语言环境都添加语言环境前缀和默认语言环境

customRoutes

  • 类型:'meta' | 'page' | 'config'
  • 默认值:'page'

自定义路径 是从页面文件提取还是在模块配置中配置:

  • 'meta':自定义路径从页面组件中的 definePageMeta() 函数中提取。
  • 'page':自定义路径从页面组件中的 defineI18nRoute() 宏中提取。
  • 'config':自定义路径在模块配置的 pages 选项中配置。

pages

  • 类型:object
  • 默认值:{}

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

skipSettingLocaleOnNavigate

  • 类型:boolean
  • 默认值:false

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

defaultLocaleRouteNameSuffix

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

如果策略为 prefix_and_default,则添加到默认语言环境的生成路由名称的内部后缀。您不需要更改此项。

routesNameSeparator

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

用于每个语言环境的生成路由名称的内部分隔符。您不需要更改此项。

rootRedirect

  • 类型:string | { statusCode: number; path: string; } | null
  • 默认值:null

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

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

redirectStatusCode

  • 类型:number
  • 默认值:302

指定将任何 URL(除根 URL ('/') 外)重定向到本地化路由时使用的 HTTP 状态码。

langDir

  • 类型:string
  • 默认值:locales

包含要加载的翻译文件的目录的相对路径。

该路径是相对于项目根目录下的 restructureDir ('i18n' 默认) 解析的。

绝对路径在生产环境中将失败(例如,'/locales' 应更改为 'locales''./locales'

detectBrowserLanguage

  • 类型:object | boolean

启用浏览器语言检测,以便访问者首次访问您的网站时自动将其重定向到其首选语言环境。

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

请注意,为了更好的 SEO,建议将 redirectOn 设置为 'root'

设置为 false 禁用。

支持的属性:

alwaysRedirect

  • 类型:boolean
  • 默认值:false

设置为始终重定向到 cookie 中存储的值,而不仅仅是首次访问时。

fallbackLocale

  • 类型:string | null

如果所有语言环境都不匹配浏览器的语言环境,则使用此语言环境作为回退。

redirectOn

  • 类型:string
  • 默认值:'root'

支持的选项:

  • 'all' - 在所有路径上检测浏览器语言环境。
  • 'root' (推荐用于改进 SEO) - 仅在网站的根路径 ('/') 上检测浏览器语言环境。仅在使用 'no_prefix' 以外的策略时有效。
  • 'no prefix' - 'root' 的更宽松变体,它将在根路径 ('/') 上检测浏览器语言环境,以及没有语言环境前缀的路径(如 '/foo')。仅在使用 'no_prefix' 以外的策略时有效。

useCookie

  • 类型:boolean
  • 默认值:true

如果启用,一旦用户被重定向到浏览器首选语言环境,就会设置一个 cookie,以防止后续重定向。设置为 false 可每次重定向。

cookieKey

  • 类型:string
  • 默认值:'i18n_redirected'

Cookie 名称。

cookieDomain

  • 类型:string | null
  • 默认值:null

设置以覆盖 cookie 的默认域。默认为站点的 主机

cookieCrossOrigin

  • 类型:boolean
  • 默认值:false

当为 true 时,在 cookie 上设置 SameSite=None; Secure 标志,以允许跨域使用 cookie(当应用程序嵌入在 iframe 中时需要)。

cookieSecure

  • 类型:boolean
  • 默认值:false

为 cookie 设置 Secure 标志。

differentDomains

  • 类型:boolean
  • 默认值:false

当为每个语言环境使用不同的域名时,请将其设置为 true,启用此功能后,您必须将语言环境配置为对象数组,每个对象都包含一个 domain 键。有关更多信息,请参阅 不同域名

multiDomainLocales

  • 类型:boolean
  • 默认值:false

当使用带有不同语言环境的不同域名时,请将其设置为 true。如果启用,您必须将语言环境配置为对象数组,每个对象都包含一个 domainsdefaultForDomains 键。有关更多信息,请参阅 多域名语言环境

compilation

  • 类型:object
  • 默认值:{ strictMessage: true, escapeHtml: false }

配置设置语言环境消息行为编译的标志。

支持的属性:

strictMessage

  • 类型:boolean
  • 默认值:true

严格检查语言环境消息是否不包含 HTML 标签。如果包含 HTML 标签,则抛出错误。

如果您不希望抛出错误,可以通过将其设置为 false 来解决。但是,这意味着语言环境消息可能会导致 XSS 安全问题。在这种情况下,我们建议将 escapeHtml 选项设置为 true

escapeHtml

  • 类型:boolean
  • 默认值:false

确定如果语言环境消息中包含 HTML 标签是否转义它们。

如果通过将其设置为 false 禁用 strictMessage,我们建议启用此选项。

bundle

  • 类型:object
  • 默认值:{ compositionOnly: true, runtimeOnly: false, fullInstall: true, dropMessageCompiler: false }

配置 nuxt i18n 模块的打包优化。

支持的属性:

compositionOnly

  • 类型:boolean
  • 默认值:true

是否使 vue-i18n API 仅支持组合式 API。默认情况下,旧版 API 会被 tree-shaken。有关更多详细信息,请参阅 此处

如果您想使用 Vue I18n 的旧版 API,则必须设置 compositionOnly: false请注意,设置此值将禁用 Vue I18n 组合式 API。请注意,旧版 API 也可以通过在 i18n.config 中将 Vue I18n 选项设置为 allowComposition: true 来混合使用,但这受到限制。有关详细信息,请参阅 此处

runtimeOnly

  • 类型:boolean
  • 默认值:false

是否在构建中自动使用 Vue I18n 仅运行时。

当您启用此选项时,vue-i18n 消息编译器将不会打包。这意味着您将无法通过 fetch 从后端 API 动态检索语言环境消息以在应用程序中使用,也无法以编程方式组合语言环境消息。也就是说,您必须能够在构建时完全解析语言环境消息。

fullInstall

  • 类型:boolean
  • 默认值:true

是否安装完整的 API、组件等。默认情况下,所有这些都将安装。如果指定 false,则内置组件(<i18n-t><i18n-d><i18n-n>)和指令 (v-t) 将不会安装在 vue 中,并且将被 tree-shaken。有关更多详细信息,请参阅 此处

dropMessageCompiler

  • 类型:boolean
  • 默认值:false

打包时是否对消息编译器进行 tree-shake。

如果您启用此选项,您应该检查您的应用程序中的资源是否已通过 nuxt i18n 模块预编译。如果您将通过 API 从后端动态加载资源,启用此选项将无法工作,因为没有消息编译器。

onlyLocales

  • 类型:string | string[]
  • 默认值:undefined

指定需要包含的语言环境代码,其余的将被删除。

如果您有多个使用不同语言的相似项目(例如 Nuxt Layers),这会很有用。

选项的值不会与其他 Nuxt 层合并。此选项应仅在最终项目配置中指定。

experimental

实验性配置属性是一个包含以下属性的对象:

localeDetector

  • 类型:string
  • 默认值:''
  • 指定在服务器端按请求调用的语言环境检测器。您需要指定定义语言环境检测器的文件路径。
有关如何定义语言环境检测器的更多详细信息,请参阅 defineI18nLocaleDetector() API

strictSeo

  • 类型:boolean | SeoAttributesOptions
  • 默认值:false
  • 启用严格 SEO 模式。

typedPages

  • 类型:boolean
  • 默认值:true
  • 生成用于可组合项和配置的路由类型,当 Nuxt 的 experimental.typedRoutes 启用时,此功能默认启用。
此功能依赖于 Nuxt 的 experimental.typedRoutes,如果未启用此功能,则无法工作。

typedOptionsAndMessages

  • 类型:false | 'default' | 'all'
    • false - 禁用类型生成
    • 'default' - 根据配置的 defaultLocale 生成类型
    • 'all' - 根据所有配置的语言环境生成类型
  • 默认值:false
  • 生成用于翻译函数和 vue-i18n 配置的 vue-i18n 和消息类型。可以配置为使用 defaultLocale(更好的性能)或所有语言环境进行类型生成。

alternateLinkCanonicalQueries

  • 类型:boolean
  • 默认值:true
  • 从备用链接 meta 标签中删除非规范查询参数

hmr

  • 类型:boolean
  • 默认值:true
  • 开发模式下语言环境消息文件和 vue-i18n 配置的热模块替换。
此功能仅支持使用 vite 的项目。

customBlocks

配置 SFC 的 i18n 自定义块。

支持的属性:

defaultSFCLang

  • 类型:'json' | 'json5' | 'yaml' | 'yml'
  • 默认值:'json'
  • 为 SFC 上所有内联的 i18n 自定义块指定内容。有关更多详细信息,请参阅 unplugin-vue-i18n 文档

对于指定了 lang 属性的内联 i18n 自定义块,不应用 defaultSFCLang

例如,使用 defaultSFCLang: "yaml"defaultSFCLang: "yml",此自定义块:

<i18n lang="yaml">
en:
  hello: Hello
es:
  hello: Hola
</i18n>

将等同于此:

<i18n>
en:
  hello: Hello
es:
  hello: Hola
</i18n>

globalSFCScope

  • 类型:boolean
  • 默认值:false
  • 是否将 SFC 上所有 i18n 自定义块包含在全局作用域中。有关更多详细信息,请参阅 unplugin-vue-i18n 文档
请注意启用 globalSFCScope: true,所有 SFC 中的所有 i18n 自定义块都将在 global 作用域中。

例如,使用 globalSFCScope: true,此自定义块:

<i18n lang="yaml" global>
en:
  hello: Hello
es:
  hello: Hola
</i18n>

将等同于此:

<i18n lang="yaml">
en:
  hello: Hello
es:
  hello: Hola
</i18n>

这与 defaultSFCLang 结合使用,使用 defaultSFCLang: "yaml",以下将等同于之前的示例:

<i18n>
en:
  hello: Hello
es:
  hello: Hola
</i18n>

types

  • 类型:'composition' | 'legacy'
  • 默认值:'composition'

强制执行要使用的 API 风格的类型定义。

  • 设置为 'composition',支持 Vue I18n 和 @nuxtjs/i18n 提供的组合式 API 类型,
  • 设置为 'legacy',支持选项式 API 类型。
您可能需要运行 nuxi prepare 以更新生成的类型。

debug

  • 类型:boolean | 'verbose'
  • 默认值:false

是否使用 @nuxtjs/i18n 调试模式。如果为 true'verbose',日志将输出到控制台,将其设置为 'verbose' 还会记录加载的消息对象。

此选项的目的是帮助识别 @nuxtjs/i18n 的任何问题。您不应在生产环境中启用此选项,因为它会对性能产生负面影响。

parallelPlugin

  • 类型:boolean
  • 默认值:false

将插件设置为 parallel。请参阅 nuxt 插件加载策略

restructureDir

  • 类型:string
  • 默认值:'i18n'

用于配置用于解析 i18n 文件的目录。

autoDeclare

  • 类型:boolean
  • 默认值:true
  • <script setup> 中使用时,自动导入/初始化 $t()$rt()$d()$n()$tm()$te() 函数。
此功能依赖于 Nuxt 的自动导入,如果禁用此功能将无法工作。