国际化i18n

256 阅读1分钟

i18n是什么?

i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.

场景

这是我第一次遇到国际化的需求,也是第一次在掘金发表的文章,我估计是一个插件或者是一个包之类的东西,装完以后配一下就好了,今后会在此专栏记录自己遇到过的各种需求和问题.

如何使用

安装

npm install vue-i18n

引入插件

在main.js中

import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use (VueI18n)

注册实例

在main.js中

const i18n = new VueI18n({
locale: 'zh',
message: {
// 在message中定义各种语言的键值对
    en: {
    loginTxt: 'login',
    change: 'change'
    },
    zh: {
    loginTxt: '登录',
    change: '切换'
    }
   }
  })
  
  new Vue({
  router,
  store,
  i18n,
  render:h=>h(App)
  }).$mount('#app')

使用

这个时候在模板中就不能传统写法了:

<button>登录</button>

而是应该去那个配置文件的对象中读取对应语言的那个值:

模板:

<button>{{$t('loginTxt')}}</button>

"$t"就是i18n在Vue上挂载的属性.

此时如果在main.js中修改"locale"属性值为"en"就可以看到按钮名字变成login了,但用户肯定不在这里修改啊,用户需要一个按钮,单击修改这个属性,所以接下来要给一个按钮,专门来切换这个语言.

    <button @click="changeLanguage">{{$t('change')}}</button>
    changeLanguage(){
    // 假设该场景只有"zh""en"两种语言
    if(this.$i18n.locale="zh") {
         this.$i18n.locale="en"
        } else  {
            this.$i18n.locale="zh"
        }
    }

以上就是引入i18n国际化的全过程,但工作中可能是新接手的项目,人家都已经配好了,会有专门的文件来存放他国语言的key-value,而使用时就要从这个文件引入,但区别不大,本质还是这些东西.

学习来源: b站视频 BV18i4y1w7gG