Layers
使用层扩展带有 Nuxt i18n 的项目。
Nuxt i18n 模块支持层,并将自动合并所有扩展层的 i18n 配置。在此处阅读有关层的更多信息
合并策略
如 Nuxt 层编写指南 中所述
_layers数组中靠前的项具有更高的优先级并覆盖靠后的项- 用户项目是
_layers数组中的第一个项
混合语言环境配置(例如懒加载对象和字符串)可能无法按预期工作,Nuxt i18n 将尽力合并层。层之间 i18n 配置的一致性将最有效。
页面和路由
扩展层中 pages 目录下的页面将自动合并并具有 i18n 支持,就像它们是您项目的一部分一样。
每层配置中 i18n.pages 中定义的页面路由也将合并。
语言环境
一个扩展了 Nuxt i18n 模块的层项目不需要额外的设置,如下例所示:
export default defineNuxtConfig({
extends: ['my-layer']
})
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
locales: [
{ code: 'en', file: 'en.json' },
{ code: 'nl', file: 'nl.json' }
]
}
})
项目能够使用 i18n 功能,并且将加载由扩展层提供的配置语言环境。
合并语言环境
项目提供的语言环境将与扩展层提供的语言环境合并,可以按如下方式完成:
export default defineNuxtConfig({
extends: ['my-layer'],
i18n: {
locales: [{ code: 'en', file: 'en.json' }]
}
})
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
locales: [
{ code: 'en', file: 'en.json' },
{ code: 'nl', file: 'nl.json' }
]
}
})
此示例将导致项目支持两种语言环境('en'、'nl'),并将为 'en' 语言环境添加额外的消息。
{
"title": "foo"
}
{
"title": "layer title",
"description": "bar"
}
上述结果将如下所示
{
// 较早的层具有优先级
"title": "foo",
"description": "bar"
}
VueI18n 选项
在层中定义的 VueI18n 配置文件中的选项会根据其层优先级进行合并和覆盖。