다국어(i18n) 업데이트 자동화 하고 싶다?
프로젝트내 다국어(i18n) 처리 과정에서 매번 반복되는 작업과 불편함이 있었습니다. 이번 글에서는 기존 방식(AS IS)부터 개선 과정(TO BE), 그리고 최종적으로 어떻게 구조를 확정했는지까지 공유해 보려고 합니다.
AS IS
현재 프로젝트 내 다국어 처리 과정은 다음과 같았습니다.
- 번역 시트에서 문구를 각 언어로 번역
- 로컬 환경에서 스크립트를 실행해 다국어 JSON 파일을 생성 또는 업데이트
- 생성된 JSON 파일을 기반으로 화면에 언어별 문구를 노출
- 업데이트된 JSON 파일을 직접 branch에 push 하여 반영
겉보기에는 큰 문제가 없어 보이지만, 마지막 단계(4번)에서 코드 충돌이 발생하거나, 매번 업데이트를 위해 PR을 직접 생성해야 하는 불편함이 존재합니다.
TO BE
이러한 불편을 해소하기 위해, 이번에 CI 기반 자동화를 도입하게 되었습니다.
우선, 작업자의 개입 없이 다국어 파일이 자동으로 업데이트되는 방향을 목표로 삼아 스크립트 초안을 작성하고 PR을 생성했습니다.
초기 구상한 플로우는 다음과 같았습니다.
- prebuild 단계에서 스크립트를 실행해 다국어 JSON 파일들을 자동 업데이트
- 단, 로컬에서 생성된 JSON 파일은 commit 대상에 포함되지 않도록
.gitignore
에 추가
- 이후 build 완료 → 배포 진행
이 접근 방식은 프로젝트내 JSON 파일을 따로 관리할 필요가 없다는 장점이 있었지만, 여러 팀원들과 논의한 결과 몇 가지 한계를 확인했습니다.
- 실제로는 빌드 과정에서만 임시로 파일이 덮어씌워진다는 점
- 배포 환경별(dev, staging, prod)로 반영되는 최신화 버전이 달라질 수 있다는 점 즉, 단순 자동화 이상으로 버전 관리와 환경별 일관성까지 고려해야 한다는 결론에 도달했습니다.
최종 개선
논의 끝에 최종적으로는 다음과 같은 구조로 정리하게 되었습니다. 물론 이게 최선의 방법은 아닐수 있겠지만, 현재 상황에서는 그나마 이게 최선이지 않을까 싶습니다.
- 자동화 (정기)
매일 오전 10시(주말 제외) 에 CI Job이 실행되어
chore/i18n
브랜치로 PR이 자동 생성·최신화 합니다. 필요하다면 Pipeline 수동 실행 진행도 가능합니다. - 번역 시트 업데이트 주기가 불안정하기에 우선 하루에 한 번으로 설정했습니다.
- 일반 동작 기본적으로는 자동 생성된 을 머지해야만 번역 변경이 실제 배포에 반영됩니다. 즉, 평소에는 “자동 PR → 머지” 과정을 통해 안정적으로 관리하는 흐름입니다.
- 즉시 반영이 필요한 경우 (긴급 케이스)
정말 급하게 반영해야 할 상황이라면, Run pipeline → Variables →
RUN_LANG_UPDATE=1
을 지정한 뒤 빌드를 실행하면 됩니다. 이렇게 하면 해당 브랜치 빌드에서만 언어팩이 갱신되어 임시 반영이 가능합니다.
👉 결과적으로, 평소에는 자동화된 PR과 머지 과정을 통해 안정적으로 운영하면서도, 필요할 때는 수동 변수를 활용해 빠르게 대응할 수 있는 유연한 구조를 갖추게 되었습니다.

개선 효과
이번 개선을 통해 얻은 효과는 다음과 같습니다.
- 반복 작업 제거: 매번 직접 PR을 생성하거나 push 할 필요가 사라짐
- 코드 충돌 최소화: 자동 MR 방식으로 충돌 발생 가능성이 크게 감소
- 환경별 일관성 확보: 모든 배포 환경(dev/staging/prod)이 동일한 번역 버전을 사용
- 유연한 대응 가능: 자동화된 기본 흐름을 유지하면서도, 필요할 때는 수동 변수를 통해 빠르게 반영 가능
무엇보다도, 팀원들이 만족해하는 모습을 보며 개인적으로도 뿌듯함을 크게 느낄 수 있었습니다.