피드로 돌아가기
I shipped a Pomodoro app in 39 languages as a solo dev — here's how i18n actually went
Dev.toDev.to
Frontend

String Catalog 기반의 i18n 파이프라인 구축을 통한 39개국 언어 동시 런칭

I shipped a Pomodoro app in 39 languages as a solo dev — here's how i18n actually went

Yoshiaki Hirokawa2026년 6월 27일4intermediate

Context

기존 Localizable.strings 방식의 다수 파일 관리로 인한 동기화 오류와 유지보수 비용 증가 문제 발생. 소규모 UI 어휘를 가진 서비스 특성을 활용해 언어 추가에 따른 한계 비용을 제로에 가깝게 설계하려는 전략적 접근 필요.

Technical Solution

  • Xcode 15 String Catalog(.xcstrings) 도입을 통한 단일 JSON 기반의 중앙 집중식 번역 관리 체계 구축
  • String 단위의 Translation State(New/Translated) 필드를 활용한 미번역 키 추적 및 워크플로우 자동화
  • Hard-coded Width 제거 및 SwiftUI의 Content-based Sizing 적용으로 독일어/핀란드어의 30~40% 텍스트 확장 대응
  • Leading/Trailing 레이아웃 시스템 적용 및 Custom Drawing 영역의 RTL(Right-to-Left) 미러링 예외 처리
  • 복합적인 언어별 Plural Rule 대응을 위해 단순 문자열 결합 대신 String Catalog의 Plural Variations 기능 채택
  • Core UI와 Long-tail 언어 간의 품질 기준을 차등 적용한 번역 검수 프로세스 설계

- 독일어/핀란드어를 활용한 UI Layout Overflow 스트레스 테스트 수행 - 아랍어/히브리어를 통한 RTL 레이아웃 및 커스텀 그래픽 미러링 검증 - 숫자 카운트 포함 문자열 설계 시 단순 Concatenation 금지 및 Plural Variations 적용 여부 확인 - .xcstrings 파일의 state 필드를 활용한 번역 누락 자동 검사 스크립트 검토

원문 읽기