반응형
Vue-i18n 싱글 파일 컴포넌트가 작동하지 않음
sfc 방식으로 프로젝트에 v-i18n을 구현하려고 합니다.나는 그것을 해낼 수 없었다.제 프로젝트와 혼동하지 않도록 하겠습니다.그래서 공식 v-i18n sfc 예제에 10~15줄의 코드를 추가하는 것으로 수정한 것입니다.
이것은 매우 간단하게 나의 질문을 보여준다.
원하는 분은 github에서 이 아주 작은 질문 프로젝트를 확인하세요.
컴포넌트 1표시하다
<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.displaces
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"
이는 단일 파일 구성 요소의 의도된 동작입니다.모든 컴포넌트의 모든 로케일을 변경할 경우 다음을 사용할 수 있습니다.
locale (val) {
// this.$i18n.locale = val
this.$root.$i18n.locale = val
}
이 문제를 참조하십시오.
언급URL : https://stackoverflow.com/questions/56125033/vue-i18n-single-file-component-not-working
반응형
'programing' 카테고리의 다른 글
문자열에 메모리 공간을 동적으로 할당하고 사용자로부터 해당 문자열을 가져오려면 어떻게 해야 합니까? (0) | 2022.07.16 |
---|---|
C/C++에서의 누적 정규 분포 함수 (0) | 2022.07.16 |
요청된 대상에 대한 올바른 인증 경로를 찾을 수 없음 - 인증서를 가져온 후에도 오류가 발생했습니다. (0) | 2022.07.16 |
Vee-validate는 항상 true를 반환합니다. (0) | 2022.07.16 |
Vuex - 네임스페이스 + mapMutations + 함수? (0) | 2022.07.16 |