반응형
Vuex 스토어 내의 vue-i18n에서 $t를 사용하여 정적 문자열을 초기화하는 방법
내 vuex 스토어 모듈에는 Vuetify 드롭다운 선택 상자에 데이터 소스로 제공하는 distanceData가 있습니다.
provinceData: [
{value:"AB", text: "Alberta"},
{value:"BC", text: "British Columbia"},
...
],
제가 할 수 있어요.import i18n from '../plugins/i18n'
콘솔 출력으로 확인됩니다.i18n.t('province.BC')
리소스 파일에서 적절한 텍스트 반환
i18n.t('province.BC') British Columbia
click onLanguageChange fr
i18n.t('province.BC') British Columbia (Fr)
그런데 이 번역들을 데이터 소스에 삽입하려면 어떻게 해야 하나요?
provinceData: [
{value:"AB", text: ???i18n.t('province.AB')??? },
{value:"BC", text: ???i18n.t('province.BC')??? },
...
]
이제 i18n.t('province')로 포장하여 실수를 깨달았습니다.AB')를 백틱으로 변환합니다.다음은 영어 전용 메시지를 표시하는 수정 버전입니다.
provinceData: [
{value:"AB", text: i18n.t('province.AB') },
{value:"BC", text: i18n.t('province.BC') },
...
]
또한 현재 로케일을 전환하면 다시 초기화됩니까?
추신. 이 데이터 소스의 getter를 누르면 현재 로케일에 따라 검색된 메시지를 볼 수 있습니다.하지만 드롭다운 상자가 다시 로드되지 않습니다.그게 문제야
다음 getter는 호출할 때마다 올바른 번역문을 인쇄합니다.
provinceData: (state) => {
console.log("i18n.t('province.BC')",i18n.t('province.BC'));
return state.provinceData;
},
저장소 내의 distributeData는 변환자 이외에는 수정할 수 없습니다.그래서 이 어레이를 게터에 직접 작성하기로 했습니다만, 매우 고속으로 되어 있었습니다.
provinceData: ( state ) =>
{
const provinceData = [ "AB", "BC", "MB", "NB", "NF", "NT", "NS", "NU", "ON", "PE", "QC", "SK", "YT" ];
let provinces = [];
provinceData.forEach( (province) => {
provinces.push
({
value : province,
text : i18n.t( 'province.'+province )
})
})
return provinces;
}
언급URL : https://stackoverflow.com/questions/64249237/how-to-use-t-from-vue-i18n-inside-vuex-store-to-initialize-static-strings
반응형
'IT이야기' 카테고리의 다른 글
틀렸나요?v-bind 내부의 v-for와 동일한 요소의 일치 항목을 사용할 수 있습니까? (0) | 2022.06.07 |
---|---|
VueJ 상위 업데이트 시 하위 구성 요소가 업데이트되지 않도록 함 (0) | 2022.06.07 |
Vuex 작업 유형을 알 수 없는 이유는 무엇입니까? (0) | 2022.06.07 |
쉼표를 소수 구분 기호로 사용하여 이중을 구문 분석하는 가장 좋은 방법입니다. (0) | 2022.06.07 |
Java에서 SoftReference와 WeakReference의 차이점은 무엇입니까? (0) | 2022.06.07 |