copy-check
1. 機械的パス
引数: $ARGUMENTS
node ${CLAUDE_SKILL_DIR}/scripts/i18n-parity.mjs <dir, デフォルト: カレントプロジェクトのアプリルート> --locales sv,en
このスクリプトは、**/messages|locales|i18n/<locale>.json カタログと、TS/JS内の兄弟 sv: {…} / en: {…} オブジェクトリテラルを検出します。以下の内容を報告します:
- ERROR: キー不足、配列長の不一致、プレースホルダーの不一致 (
{name},${x},{{x}})。これらはすべて修正してください。 - warn: 英語文字列中のスウェーデン語機能語(och, att, för, med, inte, är, …)、およびその逆。また、長く同一の文字列(未翻訳?)。それぞれを判断してください。製品名や引用されたスウェーデン語の用語は問題ありません。
- unparsed: ミニパーサーが読み取れなかったブロック。該当ファイルを目視で確認してください。
これらのパターン外で構築された文字列(JSXリテラル、インラインデフォルト値を持つ t() など)は対象外です。変更されたファイルを、誤ったロケールのハードコードされたテキストについてgrepしてください。
2. 判断パス(最初に変更ファイル、次にそれらが表示されるページ)
- 禁止または古いフレーズ: リポジトリのCLAUDE.mdとプロジェクトのメモリエントリを読んでください。プロジェクトは、廃止されたタグライン、必須のリード行、公に言ってはいけないことのリストを保持していることがよくあります。
- 主張と現実の一致: 価格、試用期間、制限および「無料」を実際の価格設定、Stripeの製品、利用規約ページと照合してください。カバレッジの主張は、表示上限をカバレッジとして引用してはいけません。「最速」、「すべての」、「あらゆる」には出典が必要です。
- 法律/同意の文言: マーケティング同意は決して利用規約にバンドルされてはならず、スウェーデン法の用語が正しいこと(ångerrätt, personuppgifter)を確認してください。
- ロケール品質(スウェーデン語の例): 自然な語順、複合語の誤った分割(「hyres lägenhet」)がないこと、正しい en/ett、小数点カンマと数値の後ろの
kr(1 299 kr)、日付は19 okt/2026-10-19の形式であること。 - 英語品質: 文頭のみ大文字(sentence case)であること、スウェーデン語の句読点習慣がないこと、通貨がロケールに合わせてフォーマットされていること。
- 一貫性: 同じものを指す用語がページ間で同一であること(既存のものを採用してください)。
終了条件
- i18n-parity が終了コード0で終了するか、残っているすべての警告が判断されている。
- 禁止フレーズがなく、すべての事実に基づく主張が設定、規約、または出典と一致している。
- 修正はコピーのみに行われ、デザインの変更が紛れ込んでいない。
- ユーザー向けの短いサマリーが提供されている。