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: {…} 객체 리터럴을 찾습니다. 다음을 보고합니다:
- 오류: 누락된 키, 배열 길이 불일치, 플레이스홀더 불일치 (
{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, 소수점 쉼표 및 숫자 뒤에
kr(1 299 kr), 날짜 형식19 okt/2026-10-19. - 영어 품질: 문장형 대소문자, 스웨덴어 구두점 습관 없음, 로케일에 맞는 통화 형식.
- 일관성: 페이지 전체에서 동일한 사항에 동일한 용어 사용 (기존 용어 선택).
종료 기준
- i18n-parity가 0으로 종료되거나, 남아 있는 모든 경고가 판단되었습니다.
- 금지된 문구가 없으며, 모든 사실 클레임이 설정, 약관 또는 출처와 일치합니다.
- 수정 사항은 복사본에만 적용되며, 리디자인이 끼어들지 않았습니다.
- 사용자에게 짧은 요약을 제공합니다.