Skip to content

i18n

Source and Ownership

  • [必須] feature-owned source は app/features/<feature>/i18n/{ja,en}.json、shared-owned source は app/shared/<concept>/i18n/{ja,en}.json に置く。
  • [必須] i18n/locales/{ja,en}.json は生成物として扱い、直接編集しない。
  • [必須] key は <owner>.<category>.<shortCamelCaseLeaf> または <owner>.<leaf> とし、owner namespace で文脈が明らかな key を過剰に深くしない。
  • [必須] 他 feature/shared concept が所有する言葉を利用側で再定義せず、所有者の key を参照する。
  • [必須] ja.jsonen.json の key set を一致させる。
  • [必須] Firestore、共有 game state、validation schema には翻訳済み表示文字列を保存しない。
  • [必須] Zod validation message は所有者 namespace の i18n key を schema に直接書き、composable で組み立てない。

Merge and Verification

  • [必須] source locale を編集したら Nuxt project root で pnpm run i18n:merge を実行する。
  • [条件付き] merge command が未導入なら ../scripts/merge-i18n.mjs を project の scripts/ に配置し package script を追加する。
  • [条件付き] key consumer も変更した場合は関連 unit test と pnpm tc を実行する。