19. Vue+i18n 实现多语言翻译

摘要:
1.安装npminstallvue-i18n2。在src/assets文件夹下安装i18n文件夹,然后在i18n的文件夹Js文件中创建langs文件夹和i18n。最后,在langs文件夹中创建相应的语言文件。这是cn。js中文文件和en。js英文文件。

1. npm 安装

  npm install vue-i18n

2. src/assets文件夹下穿件文件夹i18n,

  然后再在i18n文件夹中创建langs文件夹和i18n.js文件,

  最后再在langs文件夹下创建相应语言文件,我这里是cn.js中文文件,en.js英文文件。

  如图所示(相应文件的代码在下面):

  19. Vue+i18n 实现多语言翻译第1张

3.main.js入口文件中导入,并在new Vue 实例中加上i18n:

  import i18n from './assets/i18n/i18n' // 引入中英文语言翻译文件

  new Vue({
    el: '#app',
    store,
    router,
    i18n,
    components: { App },
    template: '<App/>'
  })
 
4.i18n.js文件中:
  
import Vue from 'vue'
import locale from 'element-ui/lib/locale';
import VueI18n from 'vue-i18n'
import en from './langs/en'
import cn from './langs/cn'
// import tn from './langs/tn'
Vue.use(VueI18n)

const messages = {
  en: en,
  cn: cn,
//   tn: tn
}

const i18n = new VueI18n({
  locale:  sessionStorage.getItem('changeLang') || 'cn',            //从sessionStorage中拿到用户的语言选择,如果没有,那默认中文。
  messages,
  silentTranslationWarn: true,
})
// locale.i18n((key, value) => i18n.t(key, value)) //为了实现element插件的多语言切换

// Vue.use(Element, {
  i18n: (key, value) => i18n.t(key, value)
// })

export default i18n

5. cn.js文件中:

const cn = {
    message: {
        i1: '欢迎来到我的项目',
 
        public: {
            aaa: '你看不见我',
        },
    }
}

export default cn

6. en.js文件中:

  

const en = {
    message: {
        i1: 'Welcome to my project',

        public: {
            aaa: 'You dont see me',
        },
        
    }
}

export default en

7.Vuex 的store.js 文件中存储语言当前状态(没有安装vuex依赖的自己去安装):

// 引入vue 和 vuex
import Vue from 'vue';
import Vuex from 'vuex';

// 使用vuex插件,跟router一样
Vue.use(Vuex);              

// 直接导出 一个 Store 的实例
export default new Vuex.Store({
    state: {             
        Language: sessionStorage.getItem('changeLang') ? sessionStorage.getItem('changeLang') : 'cn',
    },
    getters: {

    },
    // 同步操作直接修改state里面的数据
    mutations: {
        setLanguage: (state, data) => {
            state.Language = data;
            sessionStorage.setItem('changeLang', data);
        },
    }
});

8. 页面中使用:

  1.文本格式:<div > {{$t('message.public.aaa')}} </div>

  2.input的placeholder:<el-input type="text" v-model=" " autocomplete="off" :placeholder="$t('message.public.aaa')"></el-input>

  3.data中:

data() {
    var validateAccount = (rule, value, callback) => {    // 验证规则
        if (value === '') {
           callback(new Error(this.$t('message.public.aaa')));
        } else {
           callback();
        }
    };        
}

  

4.验证规则中使用,具体查看另一篇文档:https://www.cnblogs.com/xintao/p/11138500.html

免责声明:文章转载自《19. Vue+i18n 实现多语言翻译》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Java学习】jar打包连接查询,子查询,联合查询下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一步一步实现网站的多语言版本

    网站在开发的过程中需要实现多语言版本,我们暂且认为有英语和汉语两个版本。网站结构包括,UI过程,rest服务,以及相应的js,各个部分我们都要实现多语言,不要求一键切换,但是在部署过程中要能实现多与语言配置。 首先我们出场的是资源文件,C#的项目实现本地化和区域化,我们要用到资源文件。 添加资源文件夹 添加资源文件项 这里文件的命名最好能规范,...

VueX 基本使用(vue状态管理)及简单小实例

1、安装vuex依赖包 npm install vuex --save 2、导入vuex包 import Vuex from 'vuex' Vue.use(Vuex) 3、创建 store 对象 export default new Vuex.Store({ // state 中存放的就是全局共享的数据 state: { count: 0...

用js把数据从一个页面传到另一个页面

打开支付宝首页搜索: 4046160(可保存下来,每天可领一次) 领取方式,一定要点击 立即领取 按钮 这个才是金额比较大的余额宝红包。 红包平均为 3-5块 ,每天可领一次,有效期三天,必须上一次领的用了才可以领取下一个。 使用方法: 淘宝购物、门店付款、个人收款码、水电煤缴费、还信用卡都可以,但是 必须使用余额宝支付,付款金额大于等于红包就可以。 重...

使用百度翻译的API接口

http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码  有一个PHP文件,把这两个静态变量的值改一下就可以用了   用的话,只要使用一下这个方法就OK了,$from是要翻译的语言类型,中国当然是中文 $to是要翻译成什么语...

快速重置vuex数据

首发于: https://lonhon.top最近遇到的一个场景,由于项目的权限系统+路由控制中用到了vuex存储全局数据,在登出时需要将所有数据进行重置or清空。 比如 store.state.username初始为'' => 登陆后变成'张三' => 登出后还是'张三',此时需要置为''. 解决方法0.1 actions.resetVuex...

prototype1.6.0官方文档翻译(一)

Prototype framework 定义类和继承 在prototype的早期版本中, 这个框架来为类创建基本支持: Class.create() 方法。 直到现在,只有以这种方式定义类的功能,称为方法构造函数自动初始化: initialize。 Prototype 1.6.0 现在支持类模块继承, 相比较之前的版本有了很大提高;你可以比 之前...