string''用于构建时配置 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 运行时执行的消息。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" }
]
对象形式的属性说明如下:
codestringlanguageundefined | stringdetectBrowserLanguage 匹配浏览器语言的语言范围。应使用 IETF 的 BCP47定义的语言标签语法,例如:
'en'(仅语言子标签,英语)'fr-CA'(语言+地区,法语加拿大用法)'zh-Hans'(语言+书写脚本,简体中文)filenull | string | { path: string; cache: string; }langDir 路径解析,用于加载本地化消息。filesnull | string[] | { path: string; cache: string; }[]langDir 路径解析。See also Multiple files lazy loading to learn more.
dirnull | 'rtl' | 'ltr' | 'auto''rtl'(右到左),'ltr'(左到右),或 'auto'。domainnull | stringruntimeConfig 设置。使用 differentDomains 时必填。domainsnull | string[]domain的数组。使用 multiDomainLocales 并且多个域名包含同一语言时必填。defaultForDomainsnull | string[]multiDomainLocales 时可选)domains 时哪个域名数组对应的语言应为默认语言。domainDefaultnull | booleantrue 表示该语言为特定域的默认语言。使用 differentDomains 并且一个或多个域名有多个语言时必填。...可通过 localeProperties 属性访问当前语言的所有属性。若为语言代码数组,仅包含 code 属性。
stringltr应用默认文本方向,仅在 dir 未指定时生效。
string | nullnull应用默认语言,应匹配定义的 locales 中的语言代码。
使用 prefix_except_default 策略时,此处指定的语言的 URL 不带前缀。建议无论使用何种策略都设置此项,它作为访问不存在路由时的回退语言。
'no_prefix' | 'prefix_except_default' | 'prefix' | 'prefix_and_default''prefix_except_default'路由生成策略,可选:
'no_prefix':路由不带语言前缀'prefix_except_default':除默认语言外均添加语言前缀'prefix':所有语言都添加语言前缀'prefix_and_default':所有语言包括默认语言均添加前缀'meta' | 'page' | 'config''page'自定义路径的来源:
'meta':从页面组件中 definePageMeta() 函数提取'page':从页面组件中 defineI18nRoute() 宏提取'config':在模块配置的 pages 选项中配置object{}当 customRoutes 设置为 config 时,模块将在此查找自定义路由。使用方式见路由。
booleanfalse若为 true,切换语言时不自动设置本地化。适合在页面切换结束后自行调用 finalizePendingLocaleChange 设置语言。详见等待页面过渡。
string'default'默认语言路由名称的内部后缀,仅在策略为 prefix_and_default 时使用,通常不需要更改。
string'___'生成的每个语言路由名称间的内部分隔符,通常不需更改。
string | { statusCode: number; path: string; } | nullnull指定访问根路径 ('/') 时的重定向路径。可为字符串或含有 statusCode 和 path 的对象,例如:
{
"statusCode": 301,
"path": "about-us"
}
number302指定在从任何 URL(除了根 URL '/')重定向到本地化路由时使用的 HTTP 状态代码。
stringlocales翻译文件目录的相对路径。
路径相对于项目根目录的 restructureDir 解析(默认是 'i18n')。
'/locales' 应改为 'locales' 或 './locales')object | boolean启用浏览器语言检测,首次访问自动重定向到首选语言。
详见浏览器语言检测。
redirectOn 设置为 'root'。设置为 false 禁用。
支持的属性:
alwaysRedirectbooleanfalse是否总是重定向到 cookie 中保存的语言,而非仅首次访问时。
fallbackLocalestring | null浏览器语言不匹配任何可用语言时使用的回退语言。
redirectOnstring'root'支持的选项:
'all':所有路径都检测浏览器语言。'root'(推荐以提升 SEO):仅在根路径 ('/') 检测。仅在使用非 'no_prefix' 策略时生效。'no prefix':相较 'root' 更宽松,检测根路径及无语言前缀的路径(如 '/foo')。仅在使用非 'no_prefix' 策略时生效。useCookiebooleantrue是否使用 cookie 记录用户重定向状态,防止重复重定向。设为 false 则每次访问都会重定向。
cookieKeystring'i18n_redirected'cookie 名称。
cookieDomainstring | nullnull覆盖 cookie 的默认域,默认为站点的 host。
cookieCrossOriginbooleanfalse为 true 时,在 cookie 上设置 SameSite=None; Secure,允许跨域使用(如嵌入 iframe 的情况)。
cookieSecurebooleanfalse设置 cookie 的 Secure 标志。
booleanfalse当每种语言使用不同域名时设置为 true。启用时必须将 locales 配置为含有 domain 键的对象数组。详见不同域名。
booleanfalse使用多域名和多语言时设置为 true。启用时必须将 locales 配置为含有 domains 和 defaultForDomains 键的对象数组。详见多域名语言。
object{ strictMessage: true, escapeHtml: false }编译本地化消息时的行为配置。
支持属性:
strictMessagebooleantrue严格检查本地化消息是否包含 HTML 标签。若包含,抛出错误。
false,但 可能导致 XSS 安全风险,此时建议开启 escapeHtml 选项。escapeHtmlbooleanfalse是否对消息中的 HTML 标签进行转义。
strictMessage,建议启用此选项。object{ compositionOnly: true, runtimeOnly: false, fullInstall: true, dropMessageCompiler: false }配置 nuxt i18n 模块的打包优化。
支持属性:
compositionOnlybooleantrue是否仅使用 vue-i18n 的 Composition API。默认会进行遗留 API 的 tree-shaking。详情见 此处
compositionOnly: false。此时 Vue I18n 的 Composition API 将被禁用。遗留 API 还可通过在 i18n.config 中设置 allowComposition: true 混合使用,但有限制。详情见 这里。runtimeOnlybooleanfalse是否在构建时自动使用 Vue I18n 的 runtime-only 版本。
fullInstallbooleantrue是否安装完整 API、组件等。若设为 false,则内建组件(<i18n-t>, <i18n-d>, <i18n-n>)和指令(v-t)不会被安装到 Vue 中,会被 tree-shake。详情见 此处
dropMessageCompilerbooleanfalse是否在打包时将消息编译器 tree-shake。
onlyLocalesstring | string[]undefined指定要包含的语言代码,未包含的将被剔除。
适用于一个代码库(如 Nuxt Layers)支持多个语言不同项目的情况。
实验性配置对象,包含以下属性:
localeDetectorstring''defineI18nLocaleDetector() APIstrictSeoboolean | SeoAttributesOptionsfalsetypedPagesbooleantrueexperimental.typedRoutes 启用时默认开启。experimental.typedRoutes,未启用则不可用。typedOptionsAndMessagesfalse | 'default' | 'all'false:禁用类型生成'default':基于配置的 defaultLocale 生成类型(性能更优)'all':基于全部配置语言生成类型falsevue-i18n 和消息函数中的类型定义。alternateLinkCanonicalQueriesbooleantruehttpCacheDurationnumber1086400 for 24 hours) to reduce redundant network requests for unchanged translations.hmrbooleantrue配置 SFC 的 i18n 自定义块。
支持属性:
defaultSFCLang'json' | 'json5' | 'yaml' | 'yml''json'i18n 自定义块的内容格式。详见 unplugin-vue-i18n 文档内联 i18n 自定义块指定了 lang 属性时,不适用此默认值。
例如,设置 defaultSFCLang: "yaml" 或 defaultSFCLang: "yml",如下自定义块:
<i18n lang="yaml">
en:
hello: Hello
es:
hello: Hola
</i18n>
等同于:
<i18n>
en:
hello: Hello
es:
hello: Hola
</i18n>
globalSFCScopebooleanfalsei18n 自定义块放在全局作用域。详见 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 的 Composition API 类型。'legacy',支持 Options API 类型。nuxi prepare 以更新生成的类型。boolean | 'verbose'false是否开启 @nuxtjs/i18n 的调试模式。设为 true 或 'verbose' 会输出日志,后者还会输出加载的消息对象。
booleanfalse设置插件为 parallel 类型。详见 nuxt 插件加载策略。
string'i18n'用于解析 i18n 文件的目录配置。
booleantrue<script setup> 使用时,自动导入/初始化 $t(), $rt(), $d(), $n(), $tm() 和 $te() 函数。string'/_i18n'Sets the prefix for the server route used for loading locale messages.