【发布时间】:2022-01-03 15:02:06
【问题描述】:
这是我的代码,可以正常运行:
import { createI18n } from 'vue-i18n'
import messages from './components/json/foo/foo_messages.json'
const app = createApp(App)
installI18n(app)
const i18n = createI18n({
locale: 'ru',
messages
})
app
.use(i18n)
.use(vuetify)
.mount('#app')
现在我还需要从./components/json/bar/bar_messages.json 加载消息。我试图这样做:
import { createI18n } from 'vue-i18n'
import foo_msg from './components/json/foo/foo_messages.json'
import bar_msg from './components/json/bar/bar_messages.json'
const app = createApp(App)
installI18n(app)
const i18n = createI18n({
locale: 'ru',
messages: {foo_msg, bar_msg}
})
app
.use(i18n)
.use(vuetify)
.mount('#app')
但它没有用。谁能告诉我怎么做?
编辑:这是我的 foo json 文件
{
"ru": {
"header": {
"hello": "Привет"
}
},
"en": {
"header": {
"hello": "Hello"
}
}
}
这是bar json文件
{
"ru": {
"footer": {
"bye": "Пока"
}
},
"en": {
"footer": {
"bye": "Goodbye"
}
}
}
【问题讨论】:
-
json 文件长什么样子?
-
@BoussadjraBrahim 请看编辑。
-
@PeterKrebs 这不起作用,因为所有顶级属性(语言标识符)都会覆盖来自不同来源的其他顶级属性...
-
@MichalLevý 再往下看答案。例如recursive object merge。代码总是可以根据需要进行调整,例如保留所有属性等。但无论哪种方式,这都是一个很好的答案。
标签: javascript vue.js vuejs3 vue-i18n