vue.js 当初始化在外部文件中时更改区域设置

f4t66c6m  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(113)

我用的是Vue 3和Vue-i18 n。我有一个名为i18n.js的文件,位于App.vue文件和main.js的位置。在这个文件中,我初始化了组件,如下所示:

import { createI18n } from 'vue-i18n';
import translations from '@/translation.js';
    
const i18n = createI18n({
  legacy: false,
  locale: '', // It's empty because i want to set it in App.vue
  fallbackLocale: 'de', 
  translation,
});

export default i18n;

字符串
然后我可以导入这个文件并使用i18n.global.t('translation. KEY');但它永远不会改变语言。它总是de=多伊奇。在我的App.vue文件中,我从一个文件中阅读客户端设置,在读取后的挂载部分中,我设置了如下语言环境:

mounted() { 
  this.$i18n.locale = this.$store.getters['settings'].language; 
}


此外,在设置选项卡上的多项选择的变化,我正在改变它,并保存到文件。但没有用。始终显示多伊奇文本。如果我删除fallbackLocale,它将显示:* translation.KEY..*
这个问题有什么解决办法吗?

main.js

import {createApp} from 'vue';
import App from './App.vue';
import i18n from './config.js';

const app = createApp(App); 
app.use(i18n); 
app.mount('#app');

erhoui1w

erhoui1w1#

根据您的语法,您似乎仍在使用Options API。只需将legacy选项设置为true

const i18n = createI18n({
  legacy: true,
  ...
});

字符串
分配给this.$i18n.locale将起作用。如果你想看一个完整的工作示例,这里有一个codesandbox

相关问题