在eslint下使用vue-i18n

在eslint下编码报错真的是防不胜防,最近引用了eslint对代码进行了规范,额。。一言难尽啊。在vue-i18n这老是报错,经过修改后。。。

在main.js下引入多语以及vue-i18n:

import VueI18n from 'vue-i18n';
import LangEN from './assets/lang/en_US';
import LangCN from './assets/lang/zh_CN';
import LangTW from './assets/lang/zh_TW';

用了vue cli3.0的手脚架,所以就将lang文件夹放在了assets中。

其中,zh_CN.js为:

export default {
  language: '简体中文',
  title: '首页', 
}

同样也是在main.js中(当然也可以在其他地方):

Vue.use(VueI18n);


const i18n = new VueI18n({
  //locale: Cookies.get().language, // 语言标识
  messages: {       
    zh_CN: { m: LangCN }, // 中文语言包      //zh_CN的值是键值对的形式,也可以在zh_CN.js中写成键值对形式,然后在这里写成 zh_CN:LangCN 的形式
    zh_TW: { m: LangTW }, // 繁軆语言包
    en_US: { m: LangEN }, // 英文语言包
  },
});


new Vue({
  el: '#app',
  i18n,     
   .....
})

这样,在使用时直接用$t调用就可以了。

$t('m.title')   

  之后发现了一个问题,当第一次登录系统会报下面的错误,但是重新刷新就好了。

在eslint下使用vue-i18n_第1张图片

页面显示会是这样的:

title

在网上查看了很多,但是还是没有解决,最后找到原因是:并没有拿到对应的locale。

从前面初始化VueI18n实例时可以看到,我的locale调用的是cookies中的语言,但是在实际中那个cookie是在这个之后才set的language,所以呢,只需要给这里加一个默认值


const i18n = new VueI18n({
  locale: Cookies.get().language || ‘zh_CN’ , // 语言标识 给默认值‘zh_CN’
  messages: {       
    zh_CN: { m: LangCN }, // 中文语言包 
    ......
  },
});

 

——渣渣笔记

你可能感兴趣的:(在eslint下使用vue-i18n)