Appearance
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.jsonとen.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を実行する。