メインコンテンツまでスキップ

ADR-007: i18nライブラリ選定

Context

jamjamは複数プラットフォーム向けGUIを提供する:

  • デスクトップ: Tauri 2.0 + TypeScript
  • モバイル: Flutter + Dart(Phase 5)

国際化の要件:

  • 日本語と英語の初期対応
  • プラットフォーム間で翻訳キー構造を統一
  • 型安全な翻訳アクセス
  • i18nライブラリのバンドルサイズ < 50KB

候補ライブラリ:

ライブラリプラットフォームサイズ型安全性
i18nextTauri約28KBプラグイン経由
typesafe-i18nTauri約5KBネイティブ
flutter_localizationsFlutter組み込みネイティブ
easy_localizationFlutter約15KB部分的

Decision

  • デスクトップ(Tauri): i18next + i18next-browser-languageDetector
  • モバイル(Flutter): flutter_localizations + intl

選定理由:

  • i18nextは最も成熟したエコシステムを持つ
  • flutter_localizationsはFlutter公式の標準的アプローチ
  • JSON/ARBファイルで翻訳キー構造を共有可能

Consequences

利点:

  • 大規模コミュニティによるサポート
  • 豊富なドキュメント
  • 補間・複数形対応

欠点:

  • i18nextはtypesafe-i18nより大きい(28KB vs 5KB)
  • プラットフォーム間で翻訳ファイル形式が異なる(JSON vs ARB)