Home > Web Front-end > JS Tutorial > vue uses vue-i18n to implement internationalization code

vue uses vue-i18n to implement internationalization code

亚连
Release: 2018-05-26 09:48:46
Original
1702 people have browsed it

This article mainly introduces the implementation code of vue using vue-i18n to achieve internationalization. Now I will share it with you and give you a reference.

Requirements

Company projects need to be internationalized, click the button to switch Chinese/English

1. Installation

npm install vue-i18n --save
Copy after login

2. Inject into the vue instance and implement calling api and template syntax in the project

import VueI18n from 'vue-i18n'

Vue.use(VueI18n) ;

const i18n = new VueI18n({
  locale: 'zh-CN',  // 语言标识, 通过切换locale的值来实现语言切换,this.$i18n.locale 
  messages: {
   'zh-CN': require('./common/lang/zh'),  // 中文语言包
   'en-US': require('./common/lang/en')  // 英文语言包
  }
})

new Vue({
 el: '#app',
 i18n, // 最后
 router,
 template: &#39;<App/>&#39;,
 components: { App }
})
Copy after login

3. Corresponding language package

zh. js Chinese language package:

export const lang = {
 homeOverview:&#39;首页概览&#39;,
 firmOverview:&#39;公司概述&#39;,
 firmReports:&#39;财务报表&#39;,
 firmAppendix:&#39;更多附录&#39;,
 firmIndex:&#39;主要财务指标&#39;,
 firmAnalysis:&#39;对比分析&#39;,
 firmNews:&#39;新闻事件档案&#39;,
 firmOther:&#39;其他功能&#39;,
}
Copy after login

en.js English language package:

export const lang = {
 homeOverview:&#39;Home overview&#39;,
 firmOverview:&#39;firmOverview&#39;,
 firmReports:&#39;firmReports&#39;,
 firmAppendix:&#39;firmAppendix&#39;,
 firmIndex:&#39;firmIndex&#39;,
 firmAnalysis:&#39;firmAnalysis&#39;,
 firmNews:&#39;firmNews&#39;,
 firmOther:&#39;firmOther&#39;
}
Copy after login

4. Button control to switch language

this.$i18n.locale , when you assign the value to 'zh-CN', the navigation bar becomes Chinese; when the value is assigned to 'en-US', it becomes English:

<p class="top_btn" @click="changeLangEvent">中文</p>
Copy after login
changeLangEvent() {
  console.log(&#39;changeLangEvent&#39;);
  this.$confirm(&#39;确定切换语言吗?&#39;, &#39;提示&#39;, {
   confirmButtonText: &#39;确定&#39;,
   cancelButtonText: &#39;取消&#39;,
   type: &#39;warning&#39;
  }).then(() => {
   if ( this.$i18n.locale === &#39;zh-CN&#39; ) {
    this.$i18n.locale = &#39;en-US&#39;;//关键语句
    console.log(&#39;en-US&#39;)
   }else {
    this.$i18n.locale = &#39;zh-CN&#39;;//关键语句
    console.log(&#39;zh-CN&#39;)
   }
  }).catch(() => {
   console.log(&#39;catch&#39;);
   this.$message({
    type: &#39;info&#39;,
   });
  });
 }
Copy after login

5. Template rendering

Static rendering:

<span v-text="$t(&#39;lang .homeOverview&#39;)"></span>
<span>{{$t(&#39;lang .homeOverview&#39;)}}</span>
Copy after login

If it is element-ui, add a colon in front of what you want to translate

For example: label="user Name" will be changed to: label="$t('order.userName')"

Dynamic rendering:

<span class="el-dropdown-link">{{navCompany}}</span>
 computed:{
   navCompany:function(){
    if(this.nav_company){
     let str = &#39;lang&#39;+this.nav_company;
     return this.$t(str);
    }
   }
},
    
 <el-submenu
      v-for="(value, title1, one) in navList"
      :key="one+1"
      :index="(one+1).toString()">

   <template slot="title">
    <router-link :to="linkList[title1]">{{ getTitle(title1) }}</router-link>
   </template>
       
</el-submenu>

methods: {
  getTitle(title){
    let str = &#39;lang.&#39;+title;
    return this.$t(str);
  }
}
Copy after login

The above is what I compiled for everyone, I hope It will be helpful to everyone in the future.

Related articles:

JavaScript generates a time list within a specified range

nodejs method to implement file upload based on express

Detailed explanation of parameters based on webpack.config.js

The above is the detailed content of vue uses vue-i18n to implement internationalization code. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template