zoukankan      html  css  js  c++  java
  • Vue-i18n实现应用多语言切换(附代码)

    什么是Vue-i18n

    vue-i18n是一个Vue.js国际化的插件,就是在vue应用中嵌入语言切换功能,可以切换已导入到项目中的各个语系。

    先看一下效果

    这里我以Vue+Element-ui创建的一张卡片为栗:

    如何实现:

    • 1、安装 vue-i18n,推荐 npm 包依赖:

        npm install vue-i18n
      
    • 2、注入 vue 实例中,项目中实现调用 api 和 模板语法
      在main.js中使用Vue-i18n

        // main.js
        import VueI18n from "vue-i18n";
        Vue.use(VueI18n)
        const i18n = new VueI18n({
          locale: 'zh-CN', // 标识当前所用的语言
          messages:{
            // 将定义好的语言包导入
            'zh-CN': require('./assets/lang/zh.js'), // 已经定义好的中文包
            'en-US': require('./assets/lang/en.js') // 已经定义好的英文包
          }
        })
        
        new Vue({
          el: '#app',
          router,
          i18n, // 记得把创建的VueI18n实例绑定到Vue组件中
          components: { App },
          template: '<App/>'
        })
      
    • 3、定义要用到的关键字的相关属性和值:(用js导出对象或者定义相关的json文件都行)
      这里我两种方式都给大家演示一下,大家用哪一种都行

      如果是定义js对象,以下为en.js和zh.js

        // zh.js
        export default {
          lan: '中文',
          countrys:['中国','美国','英国', '加拿大']
        }
      
        // en.js
        export default {
          lan: 'English',
          countrys:['China','US','Unity Kingdom', 'Canada']
        }
      

      如果是定义json对象,以下为en.json和zh.json

        // en.json
        {
          "lan":"English",
          "countrys":["China","US","Unity Kingdom","Canada"]
        }
        
        // zh.json
        {
          "lan":"中文",
          "countrys":["中国","美国","英国","加拿大"]
        }
      
    • 4、属性引用:
      引用相关的变量的时候,不论是在v-text,v-html中还是{{}}里边,原来的prop.value,要变成$t('prop.value')

        <template>
            <div>
              <el-card class="card">
                <div class="header" slot ="header" >
                  <!--当用到 语言包里边的属性时,要使用$t('prop.value')代替直接使用的prop.value,下同-->
                  <span>{{$t('default.lan')}}</span>
                  <el-button @click="tog" type="success">切换</el-button>
                </div>
                <p>以下为要切换语种的对象:</p>
                  <p v-for = "i in $t('default.countrys')" :key="i">
                    {{i}}
                  </p>
              </el-card>
            </div>
        </template>
      
    • 5、语言切换:

        export default {
            name: "testI18",
            methods:{
                // 语言切换逻辑,主要是更改this.$i18n.locale的值
                tog(){
                    this.$confirm('确定要切换语言吗?','提示',{
                        confirmButtonText: '切换',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }).then(()=>{
                        if(this.$i18n.locale == 'zh-CN'){
                            this.$i18n.locale = 'en-US'
                            this.$message.success('当前语言为:英文')
                        }else {
                            this.$i18n.locale = 'zh-CN'
                            this.$message.success('当前语言为:中文')
                        }
                    }).catch(()=>{
                        this.$message.error('切换失败!,请重试')
                    })
                }
            }
        }
      

    最后

    附上Vue-i18n源码的传送门:https://github.com/kazupon/vue-i18n

  • 相关阅读:
    Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
    用Recycle()方法对Java对象的重要性
    Lotus中千奇百怪的 $$
    Developing a simple application using steps "User Decision" and "Mail"(1) 沧海
    沟通中的情绪管理(演讲稿) 沧海
    人只有在压力之下,才可能成功,没做一件事,都必须成功,不许言败 沧海
    什么是IDOC,以及IDOC的步骤 沧海
    VS2008 Professional Edition CHS中的deffactory.dat读取错误 沧海
    Including custom text in the step "User Decision" 沧海
    SAP Upgrade Strategy 沧海
  • 原文地址:https://www.cnblogs.com/aiyadc/p/13907007.html
Copyright © 2011-2022 走看看