多语言

配置:

使用i18n实现多语言功能,直接加载的多语言文件为/src/pubilc/locales。

编辑时使用表格,/localization/locales.xlsx,编辑完毕后,命令行运行:

npm run export-locales

脚本将取表格中的数据,生成文件覆盖掉/src/pubilc/locales中的多语言文件。

注意,在没有缓存的情况下,部署在服务器包中的前端文件的多语言文件,修改它后是可以立即生效的。

使用:

在组件或页面中使用this.$t('xx')获得多语言文本。
如果要将多语言文本作为数据源,将其写在computed中,否则切换多语言后数据不会自动更新。

# 在标签中
  <div>{{$t('xxx')}}</div>
# 在script中
  1. let a = this.$t('xx')
  2. data(){
    message:this.$t('xx')
     }
  3. computed:{
     message(){
    return this.$t('xx')
     }
     }
     适用于组件的placeholder、表格的columns等

在无法使用this.$t('xx')时,引入language.js,使用language.t('xxx')来获得多语言文本。

注意,使用这个方法获取的多语言,在多语言切换时,并不会自动更新渲染,需要手动监听切换事件,所以在页面中不使用这个方法。

import language from '/src/util/language.js'

let a = language.t('xx')

切换:

this.$store.dispatch('lang/change',{i18n:this.$i18n,locale:'zh'})

这里将多语言状态加入Vuex全局管理,以便在切换时可以监听切换事件。

监听切换事件:

在为某些组件提供数据时(例如select组件),因为其只在初始化时执行一次国际化,所以需要监听多语言变化,并重新赋值

    computed: {
      ...mapGetters([
        'lang'
      ])

    },
    watch:{
      lang(){
        console.log(this.lang)
      }
    },

在watch中重新为当前页面的文本赋值。

results matching ""

    No results matching ""