Vue I18n 更改语言环境时删除组件内容
Vue I18n deletes component content when changing locale
我正在将 Vue I18n 集成到我的应用程序中。我有一个从 Vuex 商店呈现的列表,下面我有一些带有语言环境切换器的可翻译内容(无需重新加载页面)。当我切换语言时,字符串被翻译了,但之前的内容消失了。
我正在使用集成了 Vue-I18n 推荐的单文件组件
Vue.use(VueI18n)
const messages = {
en: {
message: {
hello: 'hello world'
}
},
ja: {
message: {
hello: 'こんにちは、世界'
}
}
}
const i18n = new VueI18n({
locale: 'en',
messages,
})
const app = new Vue({
router,
store,
i18n,
components: {
...
}
}).$mount('#app')
这是我的模板的一部分
<h3>My products</h3>
<div class="grid-x grid-x-margin margin-top" v-for="prod in products" :key="prod.id">
<router-link class="hollow button" to="/search">{{ prod.name }} </router-link>
</div>
<p>{{ $t("message.hello") }}</p>
<select v-model="$i18n.locale">
<option v-for="(lang, i) in ['ja', 'en']" :key="i" :value="lang">{{ lang }}</option>
</select>
</div>
产品对象像这样来自 Vuex 商店
computed: {
products () {
return this.$store.state.products.values()
}
}
我希望语言环境切换能够动态更新字符串而不影响上面的列表。毕竟产品名称不需要翻译。产品列表最初呈现正确,当我更改区域设置(没有重新加载页面)时它消失了。我仍然在 Vue 开发人员工具中看到该组件,所以它在那里,但内容不见了。
我怀疑这与 Vue 如何检测对象的变化有关,但我所要做的只是对计算方法进行小的修改,而不是 returning values
return Map 对象并让 v-for
调用 values
computed: {
products () {
return this.$store.state.products
}
}
<div v-for="prod in products.values()" :key="prod.id">
我正在将 Vue I18n 集成到我的应用程序中。我有一个从 Vuex 商店呈现的列表,下面我有一些带有语言环境切换器的可翻译内容(无需重新加载页面)。当我切换语言时,字符串被翻译了,但之前的内容消失了。
我正在使用集成了 Vue-I18n 推荐的单文件组件
Vue.use(VueI18n)
const messages = {
en: {
message: {
hello: 'hello world'
}
},
ja: {
message: {
hello: 'こんにちは、世界'
}
}
}
const i18n = new VueI18n({
locale: 'en',
messages,
})
const app = new Vue({
router,
store,
i18n,
components: {
...
}
}).$mount('#app')
这是我的模板的一部分
<h3>My products</h3>
<div class="grid-x grid-x-margin margin-top" v-for="prod in products" :key="prod.id">
<router-link class="hollow button" to="/search">{{ prod.name }} </router-link>
</div>
<p>{{ $t("message.hello") }}</p>
<select v-model="$i18n.locale">
<option v-for="(lang, i) in ['ja', 'en']" :key="i" :value="lang">{{ lang }}</option>
</select>
</div>
产品对象像这样来自 Vuex 商店
computed: {
products () {
return this.$store.state.products.values()
}
}
我希望语言环境切换能够动态更新字符串而不影响上面的列表。毕竟产品名称不需要翻译。产品列表最初呈现正确,当我更改区域设置(没有重新加载页面)时它消失了。我仍然在 Vue 开发人员工具中看到该组件,所以它在那里,但内容不见了。
我怀疑这与 Vue 如何检测对象的变化有关,但我所要做的只是对计算方法进行小的修改,而不是 returning values
return Map 对象并让 v-for
调用 values
computed: {
products () {
return this.$store.state.products
}
}
<div v-for="prod in products.values()" :key="prod.id">