使用 vue-i18n 切换中英文效果

vue-i18n 仓库地址:nofollow" href="https://github.com/kazupon/vue-i18n">https://github.com/kazupon/vue-i18n

兼容性:

支持 Vue.js 2.x 以上版本

安装方法:(此处只演示 npm)

使用方法

1、在 main.js 中引入 vue-i18n (前提是要先引入 vue)

2、准备本地的翻译信息

3、创建带有选项的 VueI18n 实例

4、把 i18n 挂载到 vue 根实例上

5、在 HTML 模板中使用

查看运行效果

我们刚才选定的语言标识是 “en” 英语,现在改成 “zh” 中文,并查看效果

这样就可以轻松实现国际化了,实际开发中,页面内容肯定是很多的,我们可以把对应语言的信息保存为不同的 json对象

zh.js

内容不是 string module.exports = { message: { title: '运动品牌' },placeholder: { enter: '请输入您喜欢的品牌' },brands: { nike: '耐克',adi: '阿迪达斯',nb: '新百伦',ln: '李宁' } }

en.js

接下来,在HTML 模板中使用,要特别注意在 js 中的国际化写法

{{$t("message.title")}}
  • // JS data () { return { brands: [this.$t('brands.nike'),this.$t('brands.adi'),this.$t('brands.nb'),this.$t('brands.ln')] } },

    查看编译效果

    现在换成英文的:

    在上面的操作中,我们都是通过手动修改 locale 的属性值来切换语言,实际上,更希望浏览器自动识别,这里可以借助于 cookie

    1、新建一个 cookie.js 文件,用于读取cookie

    2、在 main.js 中引入这个js,并通过 PLAY_LANG 属性获取浏览器的语言

    这里需要注意两个极易出错的地方:

    (1)、将 $t() 写成了 $()

    (2)、json 中在同一个对象里有同名属性

    vue-i18n 提供了一个全局配置参数叫 “locale”,通过改变 locale 的值可以实现不同语种的切换

    下面的案例借用了 Element UI 的弹窗样式,上面的步骤不再赘述,直接上核心代码

    {{$t('test')}}

    // js方法
    changeLocale () {
    this.$confirm(this.$t('layer.toggle'),this.$t('layer.tips'),{
    confirmButtonText: this.$t('button.ok'),cancelButtonText: this.$t('button.cancel'),type: 'warning'
    }).then(() => {
    let locale = this.$i18n.locale
    locale === 'zh' ? this.$i18n.locale = 'en' : this.$i18n.locale = 'zh'
    }).catch(() => {
    this.$message({
    type: 'info',})
    })
    },

    效果

    总结

    以上所述是小编给大家介绍的使用 vue-i18n 切换中英文效果。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

    相关文章

    问题现象 elmentui的el-tree数据加载问题,导致第一次加载选中当前节点和高亮当前节点没有生效。 解决方...
    因为刚打开文件,vscode默认是预览状态,如果编辑过之后,就不会有这个问题。 可以通过双击将预览状态接...
    前言 上篇文章我们介绍了国产SM4加密算法的后端java实现方案。没有看过的小伙伴可以看一下这篇文章。 h...
    在项目中引入动态路由时报错 写法: 报错: Module build failed (from ./node_modules/_eslint-loader@2...
    问题产生 在使用babel编译es6时,遇到报错Uncaught ReferenceError: regeneratorRuntime is not define...
    父组件的编写 <a:orgCode=orgCode ></a> 在data里面增加...