i18n 多言語化対応の管理方法に Language ファイルを利用する場合と Template ファイルを利用する場合のメリット・デメリットをそれぞれ考えてみたので、ご紹介します。
多言語対応の方法
Language file で対応する場合
メリット
- 多言語対応する言語が増えたときにその言語用の language file を増やすだけで良い
- 保守コストが低い
デメリット
- HTML タグを含む文章を language file ファイルで管理することが出てきて微妙
- 言語によって表示する機能が違うことがある場合、テンプレートファイル内に if (lang === 'en') のような分岐ができる
- 文章全体で英語・日本語ともに意味は一緒だけど、1文単位で英語と日本語のコンテキストがマッチしないので language file モジュールで対応できないケースもある
言語、フレームワーク、ライブラリなどの参考情報
Template file で対応する場合
メリット
- 単なる翻訳にとどまらず、言語毎に最適な見せ方を提供できる。作り込める
- テンプレートファイルから if (lang === 'en') のような分岐が無くなる
デメリット
- 「言語数 × テンプレートファイル数」とファイル数が膨大になる
- テンプレートファイルに凝ったロジックがあると二重管理になるので、上手く共通化などしないとコードの保守性が悪くなる
- 保守コストが高い
多言語化対応の方針 まとめ
多言語対応のときに凝ったことをされない (= ただ翻訳するだけ) 想定でしたら Language file ファイルで管理するのがオススメです。
言語によって表示する機能が違うことがある場合、テンプレートファイルを言語ごとに分ける対応方法がオススメです。
以上、多言語化対応で苦しみたくない、現場からお送りしました。