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