gpt4 book ai didi

vue.js - Vue-i18n 单文件组件不工作

转载 作者:搜寻专家 更新时间:2023-10-30 22:49:42 25 4
gpt4 key购买 nike

我正在尝试使用 sfc 方法在我的项目中实现 v-i18n。我无法让它发挥作用。我不会让您与我的项目混淆,这就是为什么只是通过向官方 v-i18n sfc 示例添加 10-15 行代码进行修改。

这很简单地说明了我的问题。

对于那些喜欢在 github 上检查这个非常小的问题项目的人

https://github.com/berkansivri/V-i18n-Question

Component1.vue

<template>
<p>{{$t('lang')}}</p>
</template>

<i18n>
{
"en":{
"lang" : "English"
},
"es":{
"lang": "Espanol"
}
}
</i18n>

App.vue

<template>
<div id="app">
<label for="locale">locale</label>
<select v-model="locale">
<option>en</option>
<option>es</option>
</select>
<p>message: {{ $t('hello') }}</p>
<Comp1></Comp1>
</div>
</template>

<i18n>
{
"en": {
"hello": "hello"
},
"es": {
"hello": "hola"
}
}
</i18n>

<script>
import Comp1 from './components/component1'
export default {
components:{
Comp1
},
name: 'App',
data () { return { locale: 'en' } },
watch: {
locale (val) {
this.$i18n.locale = val
}
}
}
</script>

所以,多个 <i18n>在多个组件中标记。我刚刚从 App.vue 修改了 $i18n.locale 但它没有触发相关的 i18n 函数 $t('lang')在 Component1 上,只修改 $t('hello')对自己。我怎样才能让它发挥作用?

最佳答案

使用vue devtools你会发现单个文件组件中$i18n的消息是不一样的,所以是不同的对象。

你需要做的是:

i18n.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from '@/lang'

Vue.use(VueI18n)

const i18n = new VueI18n({
locale: 'cn',
fallbackLocale: 'en',
messages
})

export default i18n

App.vue

import i18n from "./i18n.js"
i18n.locale = "en"

关于vue.js - Vue-i18n 单文件组件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com