i18n 中英文翻译

执行以下命令安装vue 国际化插件vue-i18n

1 npm install vue-i18n --save

执行以下命令安装 js-cookie

npm install js-cookie --save

在src目录下 新建lang文件夹 在lang文件夹下存放 语言脚本 如下:

 en.js

 1 export default {
 2     // 导航栏
 3     linkArr: [
 4         {content: 'Homepage', id: 'HomePage'},
 5         {content: 'Product', id: 'Product'},
 6         {content: 'information', id: 'InforMation'},
 7         {content: 'AboutUs', id: 'About'},
 8         {content: 'JoinUs', id: 'Join'}
 9         // {content: 'English', id: 'English'}
10     ]
11 }

zh.js

 1 export default {
 2     // 导航栏
 3     linkArr: [
 4         {content: '首页', id: 'HomePage'},
 5         {content: '产品', id: 'Product'},
 6         {content: '资讯', id: 'InforMation'},
 7         {content: '关于我们', id: 'About'},
 8         {content: '加入我们', id: 'Join'}
 9         // {content: 'English', id: 'English'}
10     ]
11 }

index.js

 1 import Vue from 'vue'
 2 import VueI18n from 'vue-i18n'
 3 import Cookies from 'js-cookie'
 4 // import locale from 'element-ui/lib/locale';
 5 import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
 6 import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
 7 import enLocale from './en'
 8 import zhLocale from './zh'
 9  
10 Vue.use(VueI18n);
11  
12 const messages = {
13   en: {
14     ...enLocale,
15     ...elementEnLocale
16   },
17   zh: {
18     ...zhLocale,
19     ...elementZhLocale
20   }
21 };
22 const i18n = new VueI18n({
23     locale: Cookies.get('language') || 'en',
24     messages
25 })
26 export default i18n

main.js

 1 import Vue from 'vue'
 2 import App from './App'
 3 import router from './router'
 4 import ElementUI from 'element-ui'
 5 import 'element-ui/lib/theme-chalk/index.css'
 6 import i18n from './lang'
 7  
 8 Vue.use(ElementUI, {
 9     size: 'medium',
10     i18n: (key, value) => i18n.t(key, value)
11 });
12  
13 new Vue({
14     router,
15     store,
16     i18n,
17     render: h => h(App)
18 }).$mount("#app");

xxx.vue

 1 <template>
 2    <ul>
 3       <router-link :to="{path: '/' + item.id}" v-for="(item,index) in $t('linkArr')" :key="index">
 4           <div class="line" v-if="5===index"></div>
 5       </router-link>
 6       <li @click="liClick1">
 7           <span>English</span>
 8       </li>
 9    </ul>
10 </template>
11  
12 methods: {
13     liClick1() {
14        if (this.$i18n.locale === 'zh') {
15           this.$i18n.locale = 'en';
16           // 将新语言保存到全局状态管理
17           this.$store.dispatch('update_current_lang', 'en');
18           cookie.set('language', 'en');
19         }else {
20           this.$i18n.locale = 'zh';
21           // 将新语言保存到全局状态管理
22           this.$store.dispatch('update_current_lang', 'zh');
23           cookie.set('language', 'zh');
24         }
25     }
26 }

猜你喜欢

转载自www.cnblogs.com/xiaozhu-zhu/p/11946870.html
今日推荐