Плагин i18n необходимо инициализировать на компоненте «запись» (т. Е. На том, который формирует основу веб-компонента) вместо корневого компонента.
Но даже при этом важно, чтобы все сообщения были определены в компоненте ввода . Определение сообщений в дочернем компоненте, либо непосредственно в компоненте, либо с использованием элемента <i18n>
, эффективно переопределяет конфигурацию vue-i18n из компонента entry и заставляет этот дочерний компонент использовать язык по умолчанию en-US.
Вот простой рабочий пример:
Компонент ввода
<template>
<div>
<p>{{ $t('hello') }}</p>
<child-component />
</div>
</template>
<script>
import ChildComponent from "./child.vue"
import Vue from "vue"
import VueI18n from "vue-i18n"
Vue.use(VueI18n)
export default {
name: "App",
i18n: new VueI18n({
locale: 'ja',
messages: {
en: {
hello: "hello in en",
test: "test in en"
},
ja: {
hello: "hello in ja",
test: "test in ja"
},
}
}),
components: { ChildComponent }
};
</script>
дочерний компонент
<template>
<div>{{ $t("test") }}</div>
</template>
<script>
export default {
name: "child-component"
};
</script>