i18n国际化

vue中如何使用i18n实现国际化

一、前言

项目中需要实现多语言切换,这时候接触到国际化,前端框架无数,其中几种热门的框架都有相匹配的国际化插件工具。例如:

vue + vue-i18n
angular + angular-translate
react + react-intl
jquery + jquery.i18n.property

二、Vue项目实现国际化

这里来对vue使用vue-i18n这个插件进行国际化功能的实现

1、首先在自己的项目中安装 vue-i18n依赖包。

npm install vue-i18n --S

2、创建语言包、i18n实例对象,并在main.js中引入:

|-- main.js 导入文件
|-- i18n
  |-- index.js 创建实例对象
  |-- languages 各种语言包
    |-- en-us.js  英文包
    |-- zh-cn.js  中文包
  • i18n/index.js,创建i18n实例对象,代码如下:
import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)
 
// 注册i18n实例并引入语言文件
const i18n = new VueI18n({
  locale: 'zh',
  messages: {
    'zh': require('./languages/zh_cn'),
    'en': require('./languages/en_us')
  }
})

export default i18n
  • 接下来我们就需要新建两个js文件(或者josn文件)作为语言包。
    其中zh.js中文包中代码为i18n/languages/zh
module.exports = {
  message: {
    login: '欢迎登录',
    lang:{
      zh: '中文',
      en: '英文'
    }
  }
}

其中en.js英文包中代码为i18n/languages/en

module.exports = {
    message: {
      login: 'Welcome To Login',
      lang: {
        zh: 'Chinese',
        en: 'English'
      }
    }
   }
  • 将i18n实例对象挂载到Vue实例之上:main.js
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

import "@/assets/plugins/element-ui";
import i18n from '@/assets/plugins/i18n';

new Vue({
    i18n,  // 挂载到Vue实例之上
    router,
    store,
    render: (h) => h(App),
}).$mount("#app");

  1. 实现中英文切换按钮,代码如下:



#补充vue-i18n 数据渲染的模板语法

模板语法暂时分为三种:

//vue组件模板的使用
{{$t('message.zh')}}
//vue组件模板数据绑定的使用 //vue组件data中赋值的使用 data:{ msg:this.$t('message.zh'); }

你可能感兴趣的:(i18n国际化)