copy-check
1. 機械化檢查
參數:$ARGUMENTS
node ${CLAUDE_SKILL_DIR}/scripts/i18n-parity.mjs <目錄, 預設為目前專案的 app 根目錄> --locales sv,en
此腳本會尋找 **/messages|locales|i18n/<locale>.json 目錄以及 TypeScript/JS 中以 sv: {…} / en: {…} 形式出現的物件字面值。它會回報:
- 錯誤: 缺少按鍵、陣列長度不符、佔位符不符(
{name}、${x}、{{x}})。請修正所有此類錯誤。 - 警告: 英文字串中出現瑞典文功能詞(och、att、för、med、inte、är 等),或反之亦然;以及較長且完全相同的字串(可能是未翻譯?)。請逐一判斷;產品名稱及以引號括起來的瑞典文術語是允許的。
- 無法解析: 迷你解析器無法讀取的區塊。請以人工檢查這些檔案。
在此模式之外建構的字串(JSX 字面值、包含內建預設值的 t())不在此範圍內。請 grep 已變更的檔案,找出用錯誤語系寫死的文字。
2. 判斷階段(先處理已變更的檔案,再處理它們所屬的頁面)
- 禁用或過時片語: 閱讀專案的 CLAUDE.md 及專案記憶條目。專案通常會保留一份已淘汰的標語、必要引言清單,或是絕對不得公開陳述的內容。
- 宣稱與實際情況: 價格、試用期長度、限制以及「免費」等詞,須對照實際定價設定檔、Stripe 產品及條款頁面。覆蓋率宣稱不得將顯示上限當作覆蓋率。「最快」、「每個」和「所有」需要來源佐證。
- 法律/同意措辭: 行銷同意不得與條款綑綁,且瑞典法律術語需正確(ångerrätt、personuppgifter)。
- 語系品質(以瑞典語為例): 自然的詞序、無複合詞錯誤(如「hyres lägenhet」)、正確的 en/ett、小數點使用逗號、貨幣格式為
1 299 kr(數字後加 kr)、日期格式為19 okt/2026-10-19。 - 英語品質: 使用句子大小寫,無瑞典文標點習慣,且貨幣格式符合該語系規範。
- 一致性: 跨頁面使用相同術語指稱相同事物(沿用既有的)。
退出條件
- i18n-parity 以結束碼 0 退出,或所有剩餘的警告都已被判斷。
- 無禁用片語,且每項事實宣稱都與設定檔、條款或來源一致。
- 僅對文案進行修正,未夾帶重新設計。
- 向使用者提供簡短摘要。