Skip to content

빠진 번역 열아홉 개 · CI로 막기 - #40

Merged
dongglehada merged 1 commit into
mainfrom
fix/missing-translations
Oct 10, 2026
Merged

dongglehada merged 1 commit into
mainfrom
fix/missing-translations

Conversation

@dongglehada

Copy link
Copy Markdown
Contributor

docs/ANALYTICS.md가 사라진 걸 추적하다가 — 그건 JunYoung이 지운 게 맞았고 제가 git add -A로 쓸어 담은 것이었다 — 그 김에 문자열 카탈로그를 들여다보니 새로 들어간 문구 열아홉 개가 전부 번역 없이 나갈 뻔했다.

무엇이 비어 있었나

할 일 탭과 하루 마무리 알림을 만들며 들어간 것들이다.

  • 섹션 머리글 이번 주, 나중
  • 디데이 카드의 D-DAY
  • 설정의 하루 마무리 알림, 받을 시각, 그리고 그 설명 한 줄
  • 알림 본문 안 끝낸 일이 %lld개 남았어요, 오늘 할 일을 확인해요
  • 빈 화면 할 일이 없어요, 아래에 한 줄 적으면 여기에 쌓여요
  • 오늘로 칩
  • 기기 식별 쪽 기기 ID, 내부 사용자 등(이건 이번 세션 이전 것)

영어·일본어 기기에서는 이 자리가 전부 한국어로 보였을 것이다. 1.4.0에서 두 언어를 붙여놓고 그 뒤 기능을 얹으며 매번 샐 수 있는 구멍이다.

왜 안 잡혔나

Xcode는 새 String(localized:)를 만나면 카탈로그에 키만 만들고 번역은 비워둔다. 비어 있어도 빌드는 통과하고 한국어 기기에서는 멀쩡하다. 언어를 바꿔 켜봐야 보이고, 새 문구가 들어갈 때마다 매번 그래야 한다 — 눈으로 지킬 수 있는 종류가 아니다.

CI가 센다

tools/i18n_check.py를 추가하고 CI에 물렸다. 모든 문구가 en·ja·ko 번역을 갖고 있는지 보고, 없으면 목록을 찍고 실패한다. 번역할 것이 없는 문구는 EXEMPT에 이유와 함께 적게 했다 — 적을 이유가 없으면 대개 번역해야 하는 것이다.

artifact_check.sh와 같은 자리에 둔다(품질 기준선과 달리 이건 실패시킨다).

예외 셋

%lld, D+%lld, D-%lld는 비워둔다. 번역할 것이 없기도 하지만 번역을 달면 빌드가 깨진다 — Xcode가 그 키로 Swift 심볼을 만들려다 D+와 D-가 같은 이름이 되어 충돌한다. 실제로 한 번 깨뜨리고 알았다. 비워두면 키가 그대로 쓰이고 D-5는 어느 언어에서나 같은 말이다.

번역 몇 개

기존 카탈로그의 어투를 따랐다(지난 할 일 → Overdue / 過ぎたやること, 할 일 → To-Do / やること).

한국어 English 日本語
이번 주 This Week 今週
나중 Later この先
D-DAY TODAY 当日
오늘로 To Today 今日へ
하루 마무리 알림 Daily Wrap-Up 一日のまとめ通知
할 일이 없어요 Nothing to do やることがありません

D-DAY를 영어에서 그대로 두지 않고 TODAY로 한 건, 영어권에서 "D-Day"가 먼저 노르망디를 뜻해서다. 카드가 말하려는 건 "오늘이 그날"이다.

확인

  • python3 tools/i18n_check.py 통과 (문구 229개)
  • 테스트 283건 통과, App · MoscoWidget · Mac Catalyst 빌드 통과
  • CLAUDE.md의 도구 목록에도 한 줄 넣었다

🤖 Generated with Claude Code

할 일 탭과 하루 마무리 알림을 만들면서 들어간 문구가 전부 번역 없이 나갈
뻔했다. 섹션 머리글('이번 주', '나중'), 디데이 카드, 설정의 알림 스위치와
시각, 빈 화면 안내, 알림 본문, 그리고 기기 식별 쪽 문구까지 - 영어·일본어
기기에서는 그 자리가 전부 한국어로 보였을 것이다.

Xcode는 새 String(localized:)를 만나면 카탈로그에 키만 만들고 번역은
비워둔다. 비어 있어도 빌드는 통과하고 한국어 기기에서는 멀쩡해서, 언어를
바꿔 켜보기 전에는 드러나지 않는다. 새 문구가 들어갈 때마다 매번 그래야
하는 종류라 눈으로는 놓친다.

그래서 tools/i18n_check.py를 만들어 CI에 물렸다. 카탈로그의 모든 문구가
en·ja·ko 번역을 갖고 있는지 보고, 번역할 것이 없는 문구는 EXEMPT에 이유와
함께 적게 했다.

%lld, D+%lld, D-%lld 셋은 예외다. 번역할 것이 없기도 하지만 번역을 달면
Xcode가 그 키로 Swift 심볼을 만들려다 D+/D-가 같은 이름으로 충돌해 빌드가
깨진다. 비워두면 키가 그대로 쓰이고 "D-5"는 어느 언어에서나 같은 말이다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dongglehada
dongglehada merged commit ac2181a into main Oct 10, 2026
1 check passed
@dongglehada
dongglehada deleted the fix/missing-translations branch October 10, 2026 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant