Vue.js で vue-i18n が動作しない問題の修正方法
はじめに
Vue.js を kazupon/vue-i18n が動作しない問題の修正方法。
TL;DR
vue add i18n
でプラグイン追加- 環境(バージョン組合せ?)によっては上手く動かないので
src/i18n.js
を修正messages[locale] = locales(key).default
->messages[locale] = locales(key)
目次
環境・条件
1 | $ sw_vers |
詳細
リポジトリ: 17number/vue-i18n-test
セットアップ
Vue CLI の vue create
でプロジェクト作成。
1 | $ vue create vue-i18n-test |
vue add i18n
で kazupon/vue-i18n を追加。
1 | $ vue add i18n |
これで $t('message')
とすると、locales/xx.json
にかかれている内容が参照される。
…はずなんだけど、どうもバージョンの組合せ問題(?)なのか上手くうごかなかった。
ファイル修正
プラグイン追加すると src/i18n.js
が作成されるのだが、どうも loadLocaleMessages
が上手く機能してないっぽい。
1 | import Vue from 'vue' |
挙動を追ったところ、 messages[locale] = locales(key).default
が undefined
になっているのが原因なので、以下のように修正する。
1 | function loadLocaleMessages () { |
これで $t('message')
や $t('hello.world', { world: '世界' })
などが動作するようになった。
まとめ
vue add i18n
でプラグイン追加- 環境(バージョン組合せ?)によっては上手く動かないので
src/i18n.js
を修正messages[locale] = locales(key).default
->messages[locale] = locales(key)
参考文献
- kazupon/vue-i18n: Internationalization plugin for Vue.js
- Vue I18n
- Vue Cli 3.x | Installation | Vue I18n
- Tooling | Vue I18n
- intlify/vue-cli-plugin-i18n: Vue CLI plugin to add vue-i18n to your Vue Project
- Vue.jsをi18nで多言語対応(言語別ファイル版) - Qiita
関連記事
- Vue.js を使ってメインページ側で動作する Chrome 拡張機能を開発する方法
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- Chart.js(vue-chartjs) でツールチップの表示内容を変更
- Vue.js で日本語変換での誤発火を抑止しつつ Enter キーで Submit
- axios で unable to verify the first certificate の対応方法
- Vue で子コンポーネントのメソッドをコールする
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア