i18n 多言語化対応の管理方法 ~ Language ファイルと Template ファイルのメリット・デメリット比較

i18n 多言語化対応の管理方法に Language ファイルを利用する場合と Template ファイルを利用する場合のメリット・デメリットをそれぞれ考えてみたので、ご紹介します。

多言語対応の方法

Language file で対応する場合

メリット

  • 多言語対応する言語が増えたときにその言語用の language file を増やすだけで良い
  • 保守コストが低い

デメリット

  • HTML タグを含む文章を language file ファイルで管理することが出てきて微妙
  • 言語によって表示する機能が違うことがある場合、テンプレートファイル内に if (lang === ‘en’) のような分岐ができる
  • 文章全体で英語・日本語ともに意味は一緒だけど、1文単位で英語と日本語のコンテキストがマッチしないので language file モジュールで対応できないケースもある

言語、フレームワーク、ライブラリなどの参考情報

Template file で対応する場合

メリット

  • 単なる翻訳にとどまらず、言語毎に最適な見せ方を提供できる。作り込める
  • テンプレートファイルから if (lang === ‘en’) のような分岐が無くなる

デメリット

  • 「言語数 × テンプレートファイル数」とファイル数が膨大になる
  • テンプレートファイルに凝ったロジックがあると二重管理になるので、上手く共通化などしないとコードの保守性が悪くなる
  • 保守コストが高い

多言語化対応の方針 まとめ

多言語対応のときに凝ったことをされない (= ただ翻訳するだけ) 想定でしたら Language file ファイルで管理するのがオススメです。
言語によって表示する機能が違うことがある場合、テンプレートファイルを言語ごとに分ける対応方法がオススメです。

以上、多言語化対応で苦しみたくない、現場からお送りしました。