Vue.js3xでvue-i18nの$tを拡張する方法

Vue.js は柔軟性が高く、ライブラリの拡張も容易に実現できます。特に、公式のプラグインガイドに従ってプラグインを作成することで、多くのカスタマイズが可能です。
しかし、既存の$tをapp.config.globalPropertiesメソッドに追加して上書きする方法では
なぜかうまくメソッドが走らなくなったのでVue I18n インスタンスの上書きをすることで今回は$tの拡張を実現させました。

https://ja.vuejs.org/guide/reusability/plugins.html

Vue I18n インスタンスの上書き

まず、Vue I18n インスタンスを通常通り作成します。

import { createI18n } from 'vue-i18n'

export const i18n = createI18n({
  locale: __locale,
  fallbackLocale: 'ja',
  warnHtmlInMessage: 'off',
  silentTranslationWarn: true,
  allowComposition: true
})

次に、Vue I18n の $t メソッドをカスタマイズします。この例では、特定の条件(hoge)でカスタムロジックを適用し、それ以外の場合は元の $t メソッドを使用します。

// 元の$tをoriginaTに格納しておく
const originalT = i18n.global.t

i18n.global.t = function (key, values = {}) {
  if (hoge) {
    // カスタムの内容を記述する
    // 例: キーに特定の接尾辞を追加する
    key += '_custom';
  }
  // カスタムではない場合元の$tを使用する
  return originalT.call(this, key, i18n.global.locale, values);
}

この方法を使用することで、Vue I18n の $t メソッドを効果的にカスタマイズできます。

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。