작업 일지

26개 로케일 번역을 고치고 나서, 진짜로 틀려 있던 것

iOS 앱 17개의 번역을 한 번에 손보고 심사에 넣었다. 걱정은 기계 번역 티였는데, 다시 뜯어 보니 결함은 다른 데 있었다. 일괄 치환이 문장을 잘라 먹은 자리들이다.

3분#ios#android#l10n#review

앱 하나가 26개 로케일을 갖는다. 앱 17개면 문자열 파일만 2,153개다. 9월 초에 그 번역을 한 번에 감사하고 고쳐서 17개 앱을 심사에 넣었다. 그리고 제출 직후에 수정본을 다시 검토했다. 제출 전에 못 본 걸 제출 뒤에라도 보려고.

걱정했던 것과 실제로 나온 것

걱정은 하나였다. 대량으로 손본 번역이 기계 냄새를 풍기지 않을까. 그래서 검토를 세 겹으로 짰다.

  • 기계 검사. 지적 항목별로 현재 값 대조, placeholder와 스크립트 누출 스캔, 인접 중복이나 조사 겹침 같은 치환 사고 시그니처, 한국어 받침-조사 규칙, 메타데이터 1,932개 파일의 길이 한도.
  • 앱별 리뷰어 6개. old→new 덤프를 전수로 읽는다. 판정 기준은 첫 감사와 같은 루브릭에 회귀, 과금 정확성, 대량 생성 흔적을 더했다.
  • 다른 모델의 독립 횡단 리뷰. 앱 사이의 고지 불일치, 복붙, 치환 사고를 본다.

결과. 기계 번역 티는 없었다. 대신 진짜 결함은 일괄 치환 사고였다. 원인은 하나, 앱은 셋.

앱 문장 무슨 일이 있었나
constella (ja) …評価につながる**される**時期です 부분 문자열 치환이 동사와 겹침
constella (zh) …踏实积起、**成为中**情绪变化 成为中|心的流势 경계에서 절단
constella (zh) 知道**自己自己**的性格与优势 중복
focusmind (ko) 조사 파손 6건 명사만 바꾸고 뒤에 붙은 조사를 안 바꿈
LogoForm 1건 같은 종류

세 앱 밖에는 없었다. 17개 앱의 새 문자열을 전수로 뒤졌다.

돈이 걸린 문장이 제일 오래 걸렸다

페이월과 구독 고지는 번역 하나가 심사 반려나 환불 분쟁으로 이어진다. 그래서 여기에 시간을 제일 많이 썼다.

  • 공용 페이월의 한국어 기간 표기를 월간/연간에서 1개월/1년으로. en·ja·zh·es가 이미 그 꼴이었다.
  • 번체 중국어 50키를 대만 어휘로. 設定, 回復購買項目, 隱私權政策.
  • 일본어 결제 맥락의 解除. 한국어 '해제'를 옮긴 건데 일본어로는 '해지'로 읽힌다. 購入, 利用으로 바꿨다.
  • 한 앱은 무료 체험 조건에 없는 24시간 조항이 들어 있었다. 4개 로케일에서 지웠다.
  • 다른 앱은 구독으로 뭘 받는지 설명하는 문장이 5개 로케일에서 "앱에 표시된 프리미엄 기능이 포함됩니다"로 비어 있었다. 심사 지침 3.1.2 소지. 메타데이터만 고쳐 다시 냈다.

리뷰어 지적을 기각한 것

리뷰어가 올린 것 중 넷은 근거를 대조해 기각했다. "설명문이 로케일마다 다르다"는 지적은 그 앱에 해당 로케일 설명문 자체가 없었고, "스토어는 워터마크 없음인데 앱에는 페이월이 있다"는 지적은 소스에 페이월 뷰가 없었다. 죽은 카탈로그 항목이 번역된 것이었다. 리뷰어 출력은 검증의 시작이지 판정이 아니다.

그 다음, 안드로이드

iOS에서 고친 걸 안드로이드 이식 앱 9개에 옮겼다. 원칙은 셋. iOS HEAD가 정답이다. base와의 diff가 작업 목록이다. 생성기가 있으면 생성기를 돌린다.

옮기다가 구조 결함 둘을 찾았다.

  1. 생성물 ARB를 손으로 고친 것이 재생성으로 사라져 있었다. 전 세션이 넣은 안드로이드 결제 문구 7키×5언어가 Apple 문구로 되돌아가 있었다. overrides.json 계층으로 옮겼다. 37건.
  2. iOS 대조 테스트가 실패가 아니라 skip으로 빠져 있었다. 폴더를 옮기면서 상대 경로가 깨졌고, 매핑 36개와 l10n 전체가 초록불인 채 아무것도 대조하지 않았다.

그리고 실제 버그 하나. constella가 Play 사용자에게 "환불은 Apple 정책을 따른다"고 고지하고 있었다. 한 키 안에서 첫 문장은 5개 로케일이 오버라이드됐는데 둘째 문장은 ko만 됐다. 오버라이드가 문장 단위로 샜다. 새 가드는 키가 아니라 값을 스캔하고, 스토어 고지 항목이 5개 로케일 전부에서 Google을 언급하는지까지 본다.

남긴 규칙

  • 번역 일괄 치환은 단어가 아니라 문장 단위로. 조사와 동사 어미가 붙는 언어에서는 특히.
  • 리뷰가 초록이면 리뷰가 뭘 봤는지 확인한다. skip은 초록이 아니다.
  • 플랫폼 고유 문구(환불·결제 주체)는 값 스캔으로 지킨다.