レンダリングを見てください:
最初のステップ:
Vueの-I18Nは、まずあなた自身のプロジェクトで依存関係をインストール。本明細書で使用する場合、以下のように、NPMのインストールが(CNPMも実装のために使用すること)、インストールがあります。
npm install vue-i18n --save-dev
ステップ2:
国際化VUE例の導入は、実装は、プロジェクト内のAPIと構文テンプレートを呼び出します。今main.js.でVUE-I18Nを導入 次のように:
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App'
import router from './router'
import VueI18n from 'vue-i18n' //引入vue-i18n
Vue.use(ElementUI);
Vue.use(VueI18n); //通过插件的形式挂载
Vue.config.productionTip = false;
/*---------使用语言包-----------*/
const i18n = new VueI18n({
locale: 'zh-CN', // 语言标识
//this.$i18n.locale // 通过切换locale的值来实现语言切换
messages: {
'zh-CN': require('./common/lang/zh'), // 中文语言包
'en-US': require('./common/lang/en') // 英文语言包
}
});
/* eslint-disable no-new */
new Vue({
el: '#app',
i18n, //挂载到实例,一定得在这个位置,而不是comonents中
router,
components: { App },
template: '<App/>'
})
上記のコードは、正式にオブジェクトの国際化、便利なグローバルコールのインスタンスを作成し、VUE VUE-国際化プロジェクトを紹介します。私たちは、 this.$i18n.locale
言語に切り替えます。
第三段階:
次は、言語パックなどの2つのJSファイル(またはjosnファイル)を作成する必要があります。
前記言語のコードはen.jsパック:
module.exports = {
message: {
login: 'Login',
Username: 'Username',
Password: 'Password',
Captcha: 'Captcha',
Language: 'Language',
zh: 'Chinese',
en: 'English'
}
}
前記言語のコードはzh.jsパック:
module.exports = {
message: {
login: '登录',
Username: '用户名',
Password: '密码',
Captcha: '验证码',
Language: '语言',
zh: '中文',
en: '英文'
}
}
最後に、私たちは、対応する言語パックは、国際的な友人を達成することができます呼び出すために、ロケールの値を制御するためのトリガイベントの形で渡す必要があります。
ステップ4:
コンポーネントは、スイッチングの言語を有効にすると、イベントの切り替え値ロケールをトリガーします。次のようにテンプレートコードは次のようになります。
<div class="lang">
<div class="change-lang" @click="changeLangEvent()">{{changeLang}}</div>
<ul>
<li>{{$t('message.login')}}</li>
<li>{{$t('message.Username')}}</li>
<li>{{$t('message.Password')}}</li>
<li>{{$t('message.Captcha')}}</li>
<li>{{$t('message.Language')}}</li>
<li>{{$t('message.zh')}}</li>
<li>{{$t('message.en')}}</li>
</ul>
</div>
次のようにscrpitコードは次のとおりです。
data () {
return {
lang: 'zh-CN',
changeLang: '切换English',
}
},
methods: {
changeLangEvent() {
if (this.changeLang == '切换English') {
this.changeLang = '切换中文';
} else {
this.changeLang = '切换English';
}
if (this.lang === 'zh-CN') {
this.lang = 'en-US';
this.$i18n.locale = this.lang;
} else {
this.lang = 'zh-CN';
this.$i18n.locale = this.lang;
}
},
},
注:データはビューはコンポーネントを更新されない更新されない場合は、いくつかのデータを更新する必要がある場合は原因のJavaScriptの制限のため、Vueのは、現在の配列の変化を検出することができない、一度だけレンダリング、スイッチの言語は、多言語コンポーネント内で切り替えることができます。
ステップ5:
テンプレート構文レンダリングVUE-国際化データ、一時的に3種類に分け文法テンプレート:
//vue组件模板的使用
<div>{{$t('message.zh')}}</div>
//vue组件模板数据绑定的使用
<input :placeholder="$t('message.zh')"></input>
//vue组件data中赋值的使用
data:{
msg:this.$t('message.zh');
}
追加:VUE-国際化互換性の問題を持つ要素UIコンポーネントライブラリ
このプロジェクトは、エレメントUIコンポーネントライブラリを使用するので、それはまた、国際的に必要な内部で、それが幸い要素のUIは、国際化をサポートすることがあり、いくつかのテキストを構築しました。しかし、要素UI公式文書「エレメントUIのデフォルトは、バージョン5.xのVUE-I18Nとのみ互換性があり、そして今VUE-国際化バージョンはを7.xになってきた国際この具体的な説明の」セクション。手動設定アウト内容は下記の投稿しました:
import Vue from 'vue'
import ElementUI from 'element-ui'
import VueI18n from 'vue-i18n'
import enLocale from 'element-ui/lib/locale/lang/en' //引入Element UI的英文包
import zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入Element UI的中文包
Vue.use(VueI18n);
Vue.use(ElementUI, {
i18n: (key, value) => i18n.t(key, value)
}); //兼容i18n 7.x版本设置
const i18n = new VueI18n({
locale: 'zh', // 语言标识
messages: {
zh: Object.assign(require('@/components/common/lang/zh'), zhLocale), //这里需要注意一下,是如何导入多个语言包的
en: Object.assign(require('@/components/common/lang/en'), enLocale),
}
});