我和 i18n 也有同样的情况。
假设我们有一个“卡片”对象道具,它包括所需的语言(我的情况),我们将在作为父级的 CardModal.vue 组件中使用。所以我所做的是获取所需的语言环境 json 文件(基于道具语言)并将这些消息添加到卡片道具中。
所以在父组件中,我们将拥有:
<template>
<div id="card-modal">
<h1> {{ card.locales.title }} </h1>
<ChildComponent card="card" />
</div>
</template>
<script>
export default {
name: 'CardModal',
props: {
card: {
type: Object,
required: true,
}
}
data() {
return {
locale: this.card.language, //'en' or 'es'
i18n: {
en: require('@/locales/en'),
es: require('@/locales/es'),
},
}
},
created() {
this.card.locales = this.i18n[this.locale].card_modal
}
}
</script>
请注意,我们不再依赖插件函数( $t() ),我们只是更改当前组件中的语言环境。我这样做是因为我不想在每个子组件中使用“i18n”标签,并希望将所有语言环境消息保存在每种语言的一个 json 文件中。我已经在所有子组件中使用了 card 道具,所以这就是我将语言环境添加到该对象的原因。
如果您需要使用组件中的选择标记更改区域设置的方法,我们可以使用一个观察器来查看区域设置数据属性,如文档所示