작성자: 컴맹 집사
시즌 2 「비록 작은 왕국이지만, 왕립 개집사협회 앱의 세계관을 넓혀 가는 과정」 5편
대표 이미지: 나란히 앉은 강아지와 고양이, 한 집에 사는 두 가족 (사진: GiselaFotografie / Pixabay)
이 글에서 얻는 것
- 이런 분께 비슷한 파일을 복사해 조금씩 고쳐 쓰다 한쪽만 빠뜨리는 분
- 핵심 답 한국·미국·일본판과 고양이판을 한 저장소로 합쳤다. 공통 파일은 하나만 두고, 나라마다 다른 글자 파일에만 .ko. .en. .ja. 이름표를 붙였다
- 바로 쓰는 팁 AI에게 “이 세 파일에서 똑같은 부분과 다른 부분을 나눠 줘. 똑같은 부분은 하나로 합치고 싶어”라고 부탁해 보자
집사 아카데미를 새로 만든 날, 한국판에서는 잘 보이는 아카데미 버튼이 일본판에는 없었다. 일부러 뺀 게 아니었다. 일본판은 아예 다른 상자에 들어 있어서, 한국판에 넣은 새 기능이 넘어갈 길이 없었던 것이다.
앞 글에서 세 나라 앱을 한 번에 올리는 자동 배포 이야기를 했다. 그게 가능해진 건 그 전에 먼저 한 일이 있어서다. 흩어져 있던 여러 판을 한 저장소로 모으는 일이었다.
상자가 여러 개면 생기는 일
코드를 보관하는 GitHub 저장소를 상자라고 생각해 보자. 처음 일본판을 만들 때 AI에게 “일본어판을 만들어 줘”라고만 했더니, 한국판 상자를 통째로 복사해서 새 상자를 하나 만들었다. 그때는 편했다. 일본어로 바꾸는 것만 신경 쓰면 됐으니까.
문제는 그다음부터였다. 한국판 상자에 아카데미를 넣어도 일본판 상자에는 그대로였다. 버그를 고쳐도 한쪽만 고쳐졌다. 같은 앱인데 상자마다 조금씩 다른 앱이 되어 갔다. 상자가 둘이면 할 일도 두 배, 셋이면 세 배였다.
상자 하나, 이름표 세 개
AI가 제안한 방법은 간단했다. 상자를 하나로 합치고, 나라마다 다른 파일에만 이름표를 붙이는 것이다.
- 세 나라가 똑같이 쓰는 파일: 화면을 움직이는 코드, 작위증을 그리는 코드, 디자인. 이름표 없이 하나만 둔다.
- 나라마다 다른 파일: 글자, 질문과 결과 문구, 웹툰 대사. 파일 이름 뒤에 .ko., .en., .ja.를 붙여 나라를 표시한다.
예를 들어 앱의 글자를 모은 파일은 strings.ko.js, strings.en.js, strings.ja.js 세 개로 나뉜다. 반면 화면을 움직이는 app.js는 하나뿐이다. 이제 버튼 하나를 고치면 세 나라에 똑같이 고쳐진다. 일본판을 만들 때는 정리 프로그램이 .ja. 이름표가 붙은 파일과 공용 파일만 모아서 일본판 사이트를 만든다.
같은 건물에 간판만 나라별로 바꿔 다는 것과 비슷하다. 건물 수리는 한 번만 하면 된다.
고양이판도 같은 방법으로
사실 우리 왕국에는 강아지판만 있는 게 아니다. 고양이를 키우는 집사를 위한 고양이판도 있고, 고양이판 역시 한국판, 일본판, 미국판이 따로따로 만들어져 있었다. 강아지판에서 겪은 문제가 고양이판에도 그대로 생길 게 뻔했다.
그래서 같은 날 고양이판도 한 상자로 합쳤다. 이때 재미있는 일이 있었다. 미국판 고양이 웹툰은 미국 독자에 맞춰 캐릭터와 그림체를 따로 만든 것이었다. 이런 건 공용으로 묶을 수 없다. 그래서 미국판 전용 웹툰 그림은 별도 폴더에 두고, 나라마다 다른 파일 규칙을 그대로 적용했다. 공용으로 묶을 것과 따로 둘 것을 구분하는 게 합치기의 핵심이었다.

사진: Chiemsee2024 / Pixabay
합치다가 하마터면 생길 뻔한 사고
새 사이트를 만드는 과정에서 아찔한 순간이 있었다. Vercel에 새 사이트를 만들면, 자동으로 GitHub 저장소와 연결이 걸려 버리는 경우가 있다. 그대로 두면 나중에 한국판을 올릴 때마다 미국판 사이트에도 한국판이 올라간다. 앞 글에서 말한 “영어 앱을 열었는데 한국어가 나오는” 바로 그 문제다.
AI가 이 위험을 기록해 두었던 덕분에, 새 사이트를 만들자마자 자동 연결을 바로 끊었다. 이 일은 결정 기록에 “주의사항 재확인”으로 남아 있다. 한 번 겪은 실수를 문서로 남겨 두면, 다음엔 AI가 먼저 챙겨 준다.
없는 기능은 알아서 숨는다
한 상자로 합치고 나서 생긴 고민이 하나 더 있었다. 친구 강아지와 궁합 보기 기능은 문구가 한국어로만 준비되어 있었다. 공용 코드는 하나니까 미국판에도 궁합 버튼이 생길 텐데, 누르면 빈 화면이 나올 것이다.
그래서 규칙을 하나 정했다. 그 나라 글자 파일에 기능 문구가 없으면, 버튼 자체를 보여 주지 않는다. 덕분에 한국판에 먼저 기능을 내놓고, 번역이 준비되는 대로 다른 나라에 하나씩 열 수 있게 되었다. 일본판에 아카데미 문구가 아직 없을 때도 이 규칙 덕에 일본판 화면은 깨지지 않았다.
옛 상자는 바로 버리지 않았다
합친 뒤 예전 일본판, 미국판 상자는 어떻게 했을까? 지우지 않고 그대로 두었다. 혹시 합치는 과정에서 빠뜨린 게 있으면 꺼내 볼 수 있게 하기 위해서다. 정리는 나중에 해도 늦지 않다. 되돌릴 수 없는 일은 서두르지 않는다, 이것도 이번에 세운 원칙이다.
내 일에 가져갈 한 가지
비슷한 파일을 복사해서 조금씩 고쳐 쓰고 있다면 이 방법을 떠올려 보자. 공통인 부분은 하나로 모으고, 다른 부분에만 이름표를 붙이는 것이다. 엑셀 양식, 블로그 글 틀, 계약서 양식도 마찬가지다. AI에게는 “이 세 파일에서 똑같은 부분과 다른 부분을 나눠 줘. 똑같은 부분은 하나로 합치고 싶어”라고 부탁하면 된다. 시즌 1의 앱과 웹앱의 차이 글에서 웹앱을 고른 이유 중 하나가 “고치기 쉬워서”였는데, 이번에 그 장점을 제대로 누렸다.
이전 글: 한국판 하나 고쳤는데 미국·일본판까지? 3개국 자동 배포 만든 날
다음 이야기: 웹툰 한 편으로 세 플랫폼? 네이버웹툰·인스타용으로 나눠 만든 법


답글 남기기