string
''
用于此模块内部的 Vue I18n 选项的构建时配置。有关完整文档,请参见 这里
createI18n()
的配置可以通过配置文件传递。默认情况下,模块会扫描 i18n.config{.js,.mjs,.ts}
,如果没有指定则 fallback。
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 运行时中的可执行消息。string | Function
''
用作 hreflang
标签中备用 URL 的前缀的回退基本 URL。默认情况下,将使用 VueRouter 的基本 URL,只有在不可用时才会使用回退 URL。
也可以是一个函数(将传递 Nuxt 上下文作为参数)返回一个字符串。根据请求头动态获取基本 URL 时非常有用。
此属性还可以使用 runtimeConfig
来设置。
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
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'
'rtl'
、'ltr'
或 'auto'
。domain
null | string
runtimeConfig
来设置。使用 differentDomains
时,这个属性是必需的。domains
null | string[]
domain
的数组。当使用 multiDomainLocales
时,如果多个域具有同一地区则此属性是必需的。defaultForDomains
null | string[]
multiDomainLocales
时是可选的)domain
数组,在使用 domains
时该区域应为默认区域。domainDefault
null | boolean
domainDefault
设置为 true
,以使每个区域在特定域中充当默认区域。使用 differentDomains
时如果多个域具有多个区域,这个属性是必需的。...
你可以通过 localeProperties
属性访问当前区域的所有属性。当使用代码数组时,只会包含 code
属性。
string
ltr
应用的默认方向。只有在未指定 dir
时使用。
string | null
null
应用的默认区域。应与定义的 locales
中的语言代码匹配。
在使用 prefix_except_default
策略时,这里指定的区域链接不会有前缀。 建议将其设置为某个区域,无论选择的策略是什么,因为在导航到不存在的路由时将用作回退区域。
'no_prefix' | 'prefix_except_default' | 'prefix' | 'prefix_and_default'
'prefix_except_default'
路由生成策略。可以设置为以下之一:
'no_prefix'
:路由将没有区域前缀'prefix_except_default'
:每个区域添加区域前缀,默认情况除外'prefix'
:每个区域添加区域前缀'prefix_and_default'
:每个区域和默认区域添加区域前缀'page' | 'config'
'page'
是否从页面文件中提取 自定义路径
object
{}
如果 customRoutes
选项被禁用为 config
,模块将查看 pages
选项中的自定义路由。有关用法,请参考 路由。
boolean
false
如果 true
,在导航到新区域时不会设置区域。如果你想在设置区域之前等待页面过渡结束,使用 finalizePendingLocaleChange
自行设置区域,则此功能非常有用。有关更多信息,请参见 等待页面过渡。
string
'default'
附加到默认区域生成的路由名称的内部后缀,如果策略为 prefix_and_default
。你不应该需要更改这个。
string
'___'
生成的每个区域的路由名称使用的内部分隔符。你不应该需要更改这个。
string | { statusCode: number; path: string; } | null
null
设置为希望重定向到的路径,以便用户访问根 URL('/'
)。接受字符串或带有 statusCode
和 path
属性的对象。例如:
{
"statusCode": 301,
"path": "about-us"
}
boolean | LazyOptions
false
另请参见 延迟加载翻译。
翻译是否应该延迟加载。如果启用,则区域必须是对象数组,每个对象都包含 file
或 files
键。
懒加载区域消息意味着仅在页面加载时加载当前使用区域的消息(以及与当前区域不同的回退区域)。
string
locales
加载的翻译文件所在目录的相对路径。可以与延迟加载(lazy
选项)一起使用,也可以单独使用。
路径是相对于项目的根目录中的 restructureDir
解析的(默认是 'i18n'
)。
'/locales'
应更改为 'locales'
或 './locales'
)object | boolean
启用浏览器语言检测,以自动将访问者重定向到其首选区域,因为他们第一次访问您的网站。
另请参见 浏览器语言检测 的指南。
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
标志。
boolean
false
当为每个区域使用不同的域时,将此设置为 true
,启用此功能后,你必须将区域配置为包含 domain
键的对象数组。有关更多信息,请参见 不同域。
boolean
false
当使用不同的域和不同的区域时,将此设置为 true
。如果启用,则你必须将区域配置为包含 domains
和 defaultForDomains
键的对象数组。有关更多信息,请参见 多域区域。
object
{ strictMessage: true, escapeHtml: false }
配置设置区域消息编译的行为。
支持的属性:
strictMessage
boolean
true
严格检查区域消息中是否不包含 HTML 标签。如果包含 HTML 标签,则抛出错误。
escapeHtml
选项设置为 true
。escapeHtml
boolean
false
确定是否在区域消息中包括 HTML 标签时转义 HTML 标签。
strictMessage
设置为 false
来禁用,它强烈建议启用此选项。object
{ compositionOnly: true, runtimeOnly: false, fullInstall: true, dropMessageCompiler: false }
配置 nuxt i18n 模块的打包优化。
支持的属性:
compositionOnly
boolean
true
是否仅将 vue-i18n API 作为组合 API。默认情况下,旧版 API 会被树摇。更多详细信息,请参见 这里
compositionOnly
设置为 false
。请注意,设置此值将禁用 Vue I18n 组合 API。请注意,旧版 API 也可以通过在 i18n.config 中将 Vue I18n 选项设置为 allowComposition: true
来混合使用,但这是有限制的。有关详细信息,请查看 这里。runtimeOnly
boolean
false
在构建时是否自动使用仅限运行时的 Vue I18n。
fullInstall
boolean
true
是否安装完整的 API、组件等 默认情况下,将安装所有内容。如果指定为 false
,内置组件(<i18n-t>
, <i18n-d>
和 <i18n-n>
)以及指令(v-t
)将不会在 Vue 中进行安装并将被树摇。更多详细信息,请参见 这里
dropMessageCompiler
boolean
false
在打包时是否树摇消息编译器。
compilation.jit
选项。onlyLocales
string | string[]
undefined
指定需要包含的区域代码,其余的将被移除。
如果你有一个代码库(例如 Nuxt Layers)用于多个使用不同语言的类似项目,这很有用。
optimizeTranslationDirective
boolean
true
是否通过将其用法转换为 vue-i18n 翻译函数来优化 v-t
指令,此选项需要在使用 SSR 的项目中启用 v-t
指令。
实验性配置属性是一个对象,具有以下属性:
localeDetector
string
''
defineI18nLocaleDetector()
API。switchLocalePathLinkSSR
boolean
false
SwitchLocalePathLink
组件时的语言切换 SSR。autoImportTranslationFunctions
boolean
false
<script setup>
中自动导入/初始化 $t()
、$rt()
、$d()
、$n()
、$tm()
和 $te()
函数。typedPages
boolean
true
experimental.typedRoutes
启用时,此功能默认启用。experimental.typedRoutes
,如果未启用,则无法工作。typedOptionsAndMessages
false | 'default' | 'all'
false
- 禁用类型生成'default'
- 基于配置的 defaultLocale
生成类型'all'
- 基于所有配置的区域生成类型false
vue-i18n
配置的 vue-i18n
和消息类型。可以配置为使用 defaultLocale
(更好的性能)或所有区域进行类型生成。generatedLocaleFilePathFormat
'absolute' | 'relative'
'absolute'
- 区域文件和 langDir 路径包含完整的绝对路径'relative'
- 区域文件和 langDir 路径被转换为相对于 rootDir
'absolute'
useI18n()
返回的 locales
中的路径。配置 SFC 的 i18n
自定义块。
支持的属性:
defaultSFCLang
'json' | 'json5' | 'yaml' | 'yml'
'json'
对于指定了 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
i18n
自定义块。有关更多详细信息,请参见 unplugin-vue-i18n 文档globalSFCScope: true
时,所有 SFC 中的 i18n
自定义块将处于全局作用域。例如,使用 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>
'composition' | 'legacy'
'composition'
强制使用的 API 样式的类型定义。
'composition'
,支持 Vue I18n 和 @nuxtjs/i18n
提供的组合 API 类型,'legacy'
,支持选项 API 类型。nuxi prepare
以更新生成的类型。boolean | 'verbose'
false
是否使用 @nuxtjs/i18n
调试模式。如果为 true
或 'verbose'
,将输出日志到控制台,将其设置为 'verbose'
还将记录加载的消息对象。
@nuxtjs/i18n
的任何问题。你不应该在生产环境中启用此选项,因为会对性能产生负面影响。boolean
false
将插件设置为 parallel
。请参见 nuxt 插件加载策略。
string
'i18n'
可用于配置用于解析 i18n 文件的目录。