为了账号安全,请及时绑定邮箱和手机立即绑定

vue国际化初探

标签:
Vue.js

安装

npm install vue-i18n

基本使用

我假设你的项目是基于vue-cli创建的。
main.js文件如下:

// main.js import Vue from 'vue' import App from './App.vue' import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n({   locale: 'en',   messages: {     zh: {         msg: '你好世界'     },     en: {         msg: 'hello world'     }    }, }) new Vue({   i18n,   render: h => h(App) }).$mount('#app')

App.vue文件如下:

// App.vue <template>   <h4>{{ $t('msg') }}</h4> </template>

以上就是vue-i18n的最简单使用,我们发现上面的例子存在一些问题,例如默认是英文,没有根据用户的设置来动态初始化,还有我们无法实现各种语言的切换,国际化的时候对于数字时间日期是如何处理呢等等许多问题。

更多用法

针对上面的问题,我们可以做出相对应的优化。

  • 根据用户语言动态初始化。

    let lang = (navigator.languages && navigator.languages[0]) || navigator.language.split('-')[0]

  • 利用下拉框或按钮实现语言的切换。

     changeLang() {    const lang = this.$i18n.locale    this.$i18n.locale = lang==='zh'?'en':'zh'  }

  • 设置国际化时时间日期数字的处理方式。

     const numberFormats = {    'zh': {        currency: {        style: 'currency',currency:'CNY'        }    },    'en': {        currency: {        style: 'currency',currency:'USD',minimumFractionDigits:3        }    }  }  const dateTimeFormats = {    'zh': {        short: {          year: 'numeric', month: '2-digit', day: '2-digit',        }    },    'en': {        short: {          year: 'numeric', month: '2-digit', day: 'numeric',weekday:'long'        }    }  }  let.language || (navigator.languages&&navigator.languages[0])  const i18n = new VueI18n({    locale: lang.split('-')[0],    messages: {      zh,      en     },    numberFormats,    dateTimeFormats  })

  • 语言文件单独放在一个文件中,利于后期维护。
    效果截图:


       webp  中文

webp  英文

我们可以看到表格中的时间日期与数字均按照我们设置的指定格式所展示。例如英文数字小数点后面最少三位,英文日期有带星期,中文日期日子都是2位的等等。

总结

万变不离其宗,我们发现国际化的步骤都是一样的。

  1. 安装对应的国际化包,如vue-i18n

  2. 准备不同语言的语言文件(需要进行国际化的文本)。

  3. 在项目启动时根据用户的语言自动加载对应语言文件,在需要国际化的地方按照对应的语法进行文本替换。



作者:tiancai啊呆
链接:https://www.jianshu.com/p/2b7ef28e50df


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消