选项
vueI18n
- type:
string
- default:
''
用于此模块内部的 Vue I18n 选项的构建时配置。完整文档见 这里
createI18n()
的配置可以通过配置文件传递。默认情况下,如果未指定,则模块会扫描 i18n.config{.js,.mjs,.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
}
}
})
messages
选项应由 简单对象 返回。这将在 nuxt i18n 模块中通过 vue-i18n 消息编译器预编译为 vue-i18n 运行时中的可执行消息。baseUrl
- type:
string | Function
- default:
''
用于在 hreflang
标签中作为备用 URL 前缀的后备基本 URL。默认情况下,将使用 VueRouter 的基本 URL,如果不可用,则使用后备 URL。
也可以是一个函数(将传递一个 Nuxt 上下文作为参数),返回一个字符串。根据请求头动态生成基本 URL 时很有用。
此属性还可以使用 runtimeConfig
设置。
locales
- type:
string[] | LocaleObject[]
- default:
[]
您的应用程序支持的语言环境列表。可以是语言代码的数组(['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
- type:
string
- 语言环境的唯一标识符
language
- type:
undefined | string
- 在使用 SEO 功能时必需
- 用于 SEO 功能的语言范围,用于使用
detectBrowserLanguage
功能时匹配浏览器语言种类。应使用 IETF 的 BCP47 定义的 语言标签语法,例如:'en'
(英语的language
子标签)'fr-CA'
(在加拿大使用的法语的language+region
子标签)'zh-Hans'
(用简体字书写的中文的language+script
子标签)
file
- type:
null | string | { path: string; cache: string; }
- 文件名。当从文件加载语言环境消息时,将相对于
langDir
路径解析。
files
- type:
null | string[] | { path: string; cache: string; }[]
- 定义多个语言环境消息的文件名。当从文件加载语言环境消息时,将相对于
langDir
路径解析。
dir
- type:
null | 'rtl' | 'ltr' | 'auto'
dir
属性指定元素和内容的方向,值可以是'rtl'
,'ltr'
或'auto'
。
domain
- type:
null | string
- 您希望为该语言环境使用的域名(如果使用则包括端口)。此属性也可以使用
runtimeConfig
设置。在使用differentDomains
时此属性是必需的。
domains
- type:
null | string[]
domain
的数组。当使用multiDomainLocales
时,此属性是必需的,而一个或多个域具有相同的多个语言环境。
defaultForDomains
- type:
null | string[]
- (在使用
multiDomainLocales
时可选) - 当使用
domains
时,语言环境应为默认语言环境的domain
数组。
domainDefault
- type:
null | boolean
- 将
domainDefault
设置为true
,以使每个应成为特定域默认语言环境的语言环境。此属性在使用differentDomains
时是必需的,而一个或多个域具有多个语言环境。
...
- 在对象上设置的任何自定义属性将在运行时公开。这可以用于定义用于页面上语言选择器的语言名称。
您可以通过 localeProperties
属性访问当前语言环境的所有属性。当使用代码数组时,它将仅包含 code
属性。
defaultDirection
- type:
string
- default:
ltr
应用程序的默认方向。当未指定 dir
时将使用。
defaultLocale
- type:
string | null
- default:
null
应用程序的默认语言环境。应与定义的 locales
中的某个语言代码匹配。
使用 prefix_except_default
策略时,此处指定的语言环境的 URL 将没有前缀。建议将其设置为某个语言环境,无论选择的策略如何,因为将在导航到不存在的路由时用作后备语言环境。
strategy
- type:
'no_prefix' | 'prefix_except_default' | 'prefix' | 'prefix_and_default'
- default:
'prefix_except_default'
路由生成策略。可以设置为以下之一:
'no_prefix'
: 路由将没有语言环境前缀'prefix_except_default'
: 对每个语言环境添加语言环境前缀,但默认语言环境除外'prefix'
: 对每个语言环境添加语言环境前缀'prefix_and_default'
: 对每个语言环境和默认语言环境添加语言环境前缀
customRoutes
- type:
'page' | 'config'
- default:
'page'
是否从页面文件中提取 自定义路径。
pages
- type:
object
- default:
{}
如果使用 config
禁用 customRoutes
选项,则模块将查找 pages
选项中的自定义路由。有关使用方法,请参阅 路由。
skipSettingLocaleOnNavigate
- type:
boolean
- default:
false
如果为 true
,则在导航到新语言环境时将不会设置语言环境。如果您希望在页面过渡结束后再使用 finalizePendingLocaleChange
手动设置语言环境,这很有用。有关更多信息,请参阅 等待页面过渡。
defaultLocaleRouteNameSuffix
- type:
string
- default:
'default'
在生成默认语言环境的路由名称时添加的内部后缀,如果策略为 prefix_and_default
。您不需要更改此设置。
routesNameSeparator
- type:
string
- default:
'___'
用于每个语言环境生成的路由名称的内部分隔符。您不需要更改此设置。
rootRedirect
- type:
string | { statusCode: number; path: string; } | null
- default:
null
设置为您想要重定向的用户访问根 URL('/'
)的路径。接受字符串或具有 statusCode
和 path
属性的对象。例如:
{
"statusCode": 301,
"path": "about-us"
}
lazy
- type:
boolean | LazyOptions
- default:
false
另请参见 惰性加载翻译。
是否应惰性加载翻译。如果启用,则 locales 必须是对象数组,每个对象都包含一个 file
或 files
键。
惰性加载语言环境消息意味着仅在页面加载时加载当前使用的语言环境的消息(如果与当前语言环境不同,则还包括后备语言环境的消息)。
langDir
- type:
string
- default:
locales
指向包含要加载的翻译文件的目录的相对路径。可以与或不与惰性加载(lazy
选项)一起使用。
该路径相对于项目根目录的 restructureDir
解析(默认是 'i18n'
)。
'/locales'
应更改为 'locales'
或 './locales'
)。detectBrowserLanguage
- type:
object | boolean
启用浏览器语言检测,以便在访客第一次访问您的网站时自动重定向到其首选语言环境。
另请参见 浏览器语言检测 以获取指南。
redirectOn
设置为 'root'
。设置为 false
禁用。
支持的属性:
alwaysRedirect
- type:
boolean
- default:
false
设置为总是重定向到存储在 cookie 中的值,而不仅仅是在第一次访问时。
fallbackLocale
- type:
string | null
如果没有本地化与浏览器的语言环境匹配,则使用此作为后备。
redirectOn
- type:
string
- default:
'root'
支持的选项:
'all'
- 在所有路径上检测浏览器语言环境。'root'
(建议用于提高 SEO) - 仅在网站根路径 ('/'
) 上检测浏览器语言环境。只有在使用除'no_prefix'
外的策略时有效。'no prefix'
-'root'
的更宽松变体,将在根路径 ('/'
)和没有语言环境前缀的路径(例如'/foo'
)上检测浏览器语言环境。只有在使用除'no_prefix'
的策略时有效。
useCookie
- type:
boolean
- default:
true
如果启用,在用户重定向到浏览器首选语言环境后,将设置一个 cookie,以防止后续重定向。设置为 false
则每次都会重定向。
cookieKey
- type:
string
- default:
'i18n_redirected'
cookie 名称。
cookieDomain
- type:
string | null
- default:
null
设置以覆盖 cookie 的默认域。默认为 网站 的主机。
cookieCrossOrigin
- type:
boolean
- default:
false
当为 true
时,在 cookie 上设置标志 SameSite=None; Secure
以允许跨域使用 cookie(当应用程序嵌入在 iframe 中时需要)。
cookieSecure
- type:
boolean
- default:
false
为 cookie 设置 Secure
标志。
differentDomains
- type:
boolean
- default:
false
当为每个语言环境使用不同的域时,将此设置为 true
,启用后,您必须将语言环境配置为对象数组,每个对象包含一个 domain
键。有关更多信息,请参阅 不同域。
multiDomainLocales
- type:
boolean
- default:
false
当使用不同域的不同语言环境时,将此设置为 true
。如果启用,您必须将语言环境配置为对象数组,每个对象包含 domains
和 defaultForDomains
键。有关更多信息,请参阅 多域语言环境。
compilation
- type:
object
- default:
{ strictMessage: true, escapeHtml: false }
配置设置语言环境消息编译行为的标志。
支持的属性:
strictMessage
- type:
boolean
- default:
true
严格检查语言环境消息是否不包含 HTML 标签。如果包含 HTML 标签,则会抛出错误。
escapeHtml
选项设置为 true
。escapeHtml
- type:
boolean
- default:
false
确定是否在包含语言环境消息时转义 HTML 标签。
strictMessage
设置为 false
来禁用它,我们建议启用此选项。bundle
- type:
object
- default:
{ compositionOnly: true, runtimeOnly: false, fullInstall: true, dropMessageCompiler: false }
配置 nuxt i18n 模块的打包优化。
支持的属性:
compositionOnly
- type:
boolean
- default:
true
是否仅将 vue-i18n API 制作为组合 API。默认情况下,遗留 API 会被 tree-shaken。有关更多详细信息,请参见 这里。
compositionOnly: false
。请注意,设置此值将禁用 Vue I18n 组合 API。请注意,遗留 API 也可以通过将 Vue I18n 选项设置为 allowComposition: true
在 i18n.config 中以混合方式使用,但这是有限制的。有关详细信息,请参见 这里 。runtimeOnly
- type:
boolean
- default:
false
在构建时是否自动使用 Vue I18n 运行时。
fullInstall
- type:
boolean
- default:
true
是否安装完整的 API、组件等。默认情况下,所有将被安装。如果指定为 false
,则内置组件(<i18n-t>
, <i18n-d>
和 <i18n-n>
)和指令(v-t
)将不会被安装到 vue 中,而会被 tree-shaken。有关更多详细信息,请参见 这里。
dropMessageCompiler
- type:
boolean
- default:
false
在打包时是否 tree-shake 消息编译器。
onlyLocales
- type:
string | string[]
- default:
undefined
指定需要包含的语言环境代码,其余会被删除。
如果您有一个代码库(例如 Nuxt Layers)用于多个使用不同语言的类似项目,这可能很有用。
optimizeTranslationDirective
- type:
boolean
- default:
true
是否通过将其用法转换为 vue-i18n 翻译函数来优化 v-t
指令,使用 SSR 的项目需要启用此功能。
experimental
实验性配置属性是一个具有以下属性的对象:
localeDetector
- type:
string
- default:
''
- 指定在服务器端每次请求时调用的语言环境检测器。您需要指定语言环境检测器定义的文件路径。
defineI18nLocaleDetector()
API。switchLocalePathLinkSSR
- type:
boolean
- default:
false
- 更改动态路由参数的跟踪和更新方式,从而改善使用
SwitchLocalePathLink
组件时的语言切换器 SSR。
autoImportTranslationFunctions
- type:
boolean
- default:
false
- 在使用时自动导入/初始化
$t()
、$rt()
、$d()
、$n()
、$tm()
和$te()
函数。
typedPages
- type:
boolean
- default:
true
- 生成在组合和配置中使用的路由类型,在启用 Nuxt 的
experimental.typedRoutes
时,该功能默认启用。
experimental.typedRoutes
,如果未启用,则无法使用。typedOptionsAndMessages
- type:
false | 'default' | 'all'
false
- 禁用类型生成'default'
- 根据配置的defaultLocale
生成类型'all'
- 根据所有配置的语言环境生成类型
- default:
false
- 生成在翻译函数和
vue-i18n
配置中使用的vue-i18n
和消息类型。可以配置为使用defaultLocale
(性能更好)或所有语言环境生成类型。
generatedLocaleFilePathFormat
- type:
'absolute' | 'relative'
'absolute'
- 语言环境文件和 langDir 路径包含完整的绝对路径'relative'
- 语言环境文件和 langDir 路径被转换为相对于rootDir
'off'
- locale 文件和 langDir 路径在构建时使用,并从最终构建中剥离 - 这将是 v10 中的默认设置,并将完全取代绝对和相对配置。
- default:
'absolute'
- 这会改变生成的语言环境文件和 langDir 路径,这些路径在 v9(及以下版本)中默认是绝对的,可能会在生产中暴露敏感路径信息。
useI18n()
返回的 locales
中的路径。alternateLinkCanonicalQueries
- type:
boolean
- default:
false
- 是否从备用链接元标签中删除非规范查询参数。
hmr
- type:
boolean
- default:
true
- 开发模式下用于语言环境消息文件和 vue-i18n 配置的热模块替换。
customBlocks
配置 SFC 的 i18n
自定义块。
支持的属性:
defaultSFCLang
- type:
'json' | 'json5' | 'yaml' | 'yml'
- default:
'json'
- 指定所有内联 i18n 自定义块的内容。有关更多详细信息,请参阅 unplugin-vue-i18n 文档。
在内联 i18n
自定义块中指定 lang
属性时,不应用 defaultSFCLang
。
例如,使用 defaultSFCLang: "yaml"
或 defaultSFCLang: "yml"
,此自定义块:
<i18n lang="yaml">
en:
hello: Hello
es:
hello: Hola
</i18n>
将等效于:
<i18n>
en:
hello: Hello
es:
hello: Hola
</i18n>
globalSFCScope
- type:
boolean
- default:
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
- type:
'composition' | 'legacy'
- default:
'composition'
强制使用的 API 风格的类型定义。
- 设置为
'composition'
,支持 Vue I18n 和@nuxtjs/i18n
提供的组合 API 类型, - 设置为
'legacy'
,支持选项 API 类型。
nuxi prepare
以更新生成的类型。debug
- type:
boolean | 'verbose'
- default:
false
是否使用 @nuxtjs/i18n
调试模式。如果为 true
或 'verbose'
,将输出日志到控制台,将此设置为 'verbose'
还将记录加载的消息对象。
@nuxtjs/i18n
的任何问题。您不应在生产环境中启用此选项,因为它会对性能产生负面影响。parallelPlugin
- type:
boolean
- default:
false
将插件设置为 parallel
。请参阅 nuxt 插件加载策略。
restructureDir
- type:
string
- default:
'i18n'
可以用于配置解析 i18n 文件所使用的目录。