概要
Vue を使ったアプリケーションで多言語対応を行う方法について解説します。
Vue I18n
Vue I18n は Vue アプリケーションを多言語対応するためのプラグインです。
使い方
1. プロジェクトを作成する
チュートリアル用に作成したサンプルをベースに使用します。
git clone https://github.com/nekobean/vue2-minimum-sample.git
cd vue2-minimum-sample
ディレクトリ構造は vue-cli で生成したもので、以下のようになっています。
2. Vue I18n をインストールする
3. ロケールデータを定義する
main.js
に以下の記述を追加します。
また、言語コードごとに、キーとそれに対応する文字列を定義したオブジェクトを作成します。
言語コードは ISO 639-1コード一覧 で確認できます。
以下の例では、英語 (言語コード en
) では、キー message.hello
に「Hello World」、日本語 (言語コード ja
) では、キー message.hello
に「こんにちは世界」が定義されています。
このオブジェクトを VueI18n オブジェクトを作成する際のコンストラクタに渡します。
/src/main.js
4. ロケールデータを使用する
$t(キー)
で先程定義したキーに対応する文字列が得られます。
/src/App.vue
/src/components/Home.vue
出力
こんにちは世界
単一のコンポーネントでのみ使用するロケールデータを定義する
最初の例では、main.js 内にロケールデータを定義し、VueI18n のコンストラクタに渡しました。このロケールデータは、すべてのコンポーネントから参照できます。 あるコンポーネントでしか使用しないロケールデータは、そのコンポーネント内でロケールデータを定義することもできます。 main.js で定義したロケールデータとコンポーネントで定義したロケールデータで同じキーがある場合、コンポーネントで定義したロケールデータが優先されます。
コード
/src/main.js
/src/App.vue
/src/components/Home.vue
出力
こんにちは、世界 (component)
ほげ (component)
複数のコンポーネントで使用するロケールデータを定義する
複数のコンポーネントで使用するロケールデータは、別ファイルでロケールデータを定義し、それを import してsharedMessages プロパティに設定します。
コード
/src/main.js
/src/App.vue
/src/locales/common.js
./components/Home.vue
出力
こんにちは、世界 (component)
言語を動的に切り替える
使用する言語の初期値は VueI18n のコンストラクタの locale
プロパティの値が使用されます。
あとから言語を変更する場合は $i18n.locale
の言語コードを変更します。
/src/main.js
/src/App.vue
/src/components/Home.vue
出力
こんにちは世界
コメント