[NDC 19] 번역, 아직도 엑셀 쓰세요? 답은 바로 Git 입니다.

현지화 작업에 GitLab 이용한 <듀랑고>팀 이야기

지난 2018년 1월 출시된 <야생의 땅: 듀랑고>(이하 듀랑고)는 무려 10개의 언어로 오는 5월에 글로벌 런칭을 준비하고 있습니다. 그렇다면 10개의 언어를 어떻게 번역하고 관리할까요? 엑셀을 써가며 한땀 한땀 번역하면 쉽지 않은일이겠죠?  왓 스튜디오의 이민지 비즈니스 매니저는 소스 코드 버전 관리용 시스팀 'Git'을 활용한 <듀랑고>의 현지화 노하우를 공개했습니다.

강연자인 왓 스튜디오의 이민지 비즈니스 매니저


# 번역 프로세스, 무한히 증식하는 파일들을 어찌할 것인가


최근에 화제가 된 유비소프트의 <어쌔신 크리드> 시리즈. 고맙게도 유비소프트는 '한국어화'를 잘 해주기로 유명한 회사입니다. 유비소프트가 공들여서 한국어화를 해주지 않았다면 우리는 게임을 하기 위해 열심히 영어를 공부했어야 할지도 모릅니다.


이렇게 게임을 한 언어에서 다른 언어로 바꾸는 작업을 현지화라고 하는데요. 현지와 프로세스는 일반적으로 다음과 같이 진행됩니다.

현지화의 일반적인 프로세스 형태. 액셀과 구글 드라이브는 모두의 친구다.


먼저 개발자가 번역가에게 맡길 텍스트 파일을 준비합니다. 파일이 준비되면, 번역가에게 파일을 보내 초벌 번역을 맡깁니다. 그리고 번역가가 초벌 번역을 완수하면, 그 파일을 다시 개발자에게 보내죠. 개발자는 초벌 번역본 파일을 다시 검수자에게 맡겨 검수합니다. 그리고 검수자가 검수된 파일을 다시 개발자에게 보내면, 개발자가 이것을 마지막으로 검토합니다.


일반적으로 이런 프로세스는, 파일 포맷은 액셀을, 주고 받을 때는 구글 드라이브와 같은 클라우드를 이용해왔습니다. 처음 몇 번은 괜찮지만, 한 두 번의 "왔다 갔다"로 현지화 작업이 끝나지 않는다는게 문제입니다. 한 번의 과정만 거쳐도 해도 벌써 3개의 파일이 발생하고, 그 과정에서 계속해서 수정, 검토, 수정 검토를 거치다보면 파일 개수가 '무한 증식'하게 됩니다. 

늘어나는 액셀 파일들. Final_final은 이제 그만...



#해답은 깃(Git)이었다


<듀랑고> 팀은 이 '무한 증식'을 막고 프로세스의 효율을 높이기 위한 방법으로 Git과 GitLab을 찾았습니다. Git은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이며, GitLab은 위키와 이슈 추적 기능을 갖춘 웹 기반의 설치형 Git 저장소입니다. 


너무 어렵다구요? 쉽게 말해서, 원래 현지화 작업을 위해 쓰이던 시스템이 아니라는 뜻입니다. 그렇다면,  소스 코드 관리처럼 프로그래밍 분야에서 주로 쓰이던 이 시스템의 어떤 점이 번역에 적합했을까요?

#소스 코드 버전 관리 시스템이 번역에도 유용했던 5가지 이유


그것은 Git이 기본적으로 제공하는 몇 가지 명령어들이었습니다. Commit, Branch, Checkout, Diff, Merge, Conflict 등이었죠. 지금부터 하나씩 설명해드리도록 하겠습니다.


Commit은 기본적으로 작업을 기록해주는 기능입니다. 파일 및 폴더의 추가, 변경 사항을 저장소에 기록하게 되죠. 또한 해당 기능을 실행하면 작업자가 무슨 작업을 실행했는지 알려줄 수 있는 노트, Commit 메시지도 남길 수 있습니다.

Git 저장소의 실제 화면. 좌측에 여러 Branch가 나뉘어 있는 모습을 확인할 수 있다.


Branch와 Checkout은 각 작업자가 독립적으로 작업을 할 수 있도록 해주는 기능입니다. 마치 나무처럼 가지가 나뉘어 여러 버전의 번역 파일이 생성되면, 각 Branch에 작업자들이 Checkout해서 독립적으로 작업하는 방식이죠.


각각의 브랜치는 서로에게 영향을 주지 않기 때문에, 한 파일만 가지고 다른 여러 종류의 작업을 동시에 진행할 수 있게 해줍니다. 기존에는 9개 언어로 번역하려면 9개 버전의 파일을 만들어야했는데, Git을 사용하면 하나의 파일만으로도 작업이 가능한 것이죠. 

Branch와 Checkout을 통해 번역자, 검수자, 개발자가 원활하게 동시 작업을 수행할 수 있게 된다.



Diff는 변경점 확인을 돕는 기능입니다. 어떤 부분이 검수로 변경, 수정 됐는지 확인하게 해주죠. 같은 파일 안에서 무엇이 달라졌는지 보여주기 때문에, 기존에 변경점을 확인하기 위해 별도로 파일을 생성해야 했던 프로세스가 대폭 간소화됩니다.

Diff 기능을 통해 무엇이 바뀌었는지 한눈에 알아볼 수 있다.


Merge와 Conflict는 각 작업자들이 병렬적으로 진행한 작업을 병합하는 것을 돕는 기능입니다. 번역의 검수가 완료되면, 각각의 Branch에서 시행된 작업을 Master Branch로 Merge, 병합하게 됩니다. 이 과정에서 변경되지 않은 내용은 유지되고, 작업 Branch에서 변경된 내용이 반영, 추가되죠. 예를 들어, 어떤 텍스트가 기존에는 "A, B"라고 되어 있었는데, 어떤 작업자가 "B-, C"라는 내용으로 작업을 했다면, 병합된 파일은 자동으로 "A, B-, C"가 됩니다.


이때 Conflict는, 서로 다른 Branch에서 동일한 부분이 다르게 수정됐을 때 이를 감지해서 보여줍니다. 두 Branch가 서로 충돌(Conflict)하고 있으면 다음과 같이 보여주고, Merge를 하고 있는 작업자가 선택할 수 있게 해주는 것이죠. 이렇게 Merge와 Conflict 기능을 활용하면 기존에는 매우 힘든 과정이었던 작업 병합도 보다 효율적으로 할 수 있게 됩니다.

Merge와 Conflict 기능을 이용해 병렬 작업이 충돌해도 통제할 수 있게 된다.


여기서 또 하나 중요한 것은, 기존에 사용하던 파일 포맷인 엑셀은 Git의 이러한 기능과 잘 호환되지 않는다는 것입니다. 특히 변경점을 추적해주는 Diff와 작업을 병합해주는 Merge 기능이 잘 호환되지 않는다고 합니다. 그래서 강연자는 액셀에서 벗어나, Git에서 잘 호환되는 pot 포맷을 활용할 것을 조언하기도 했습니다.


정리하면, 작업 기록을 관리해주고, 병렬 작업을 가능하게 하고, 변경점 확인을 돕고, 또 작업 병합을 자동으로 해주는 Git의 기능은, 의외로 프로그램의 소스 코드와 무관한 번역 프로세스에도 꽤나 적합한 기능이었고, <듀랑고> 팀은 이를 적극 수용, 현지화 프로세스를 개선할 수 있었습니다.

#마무리하며: 새로운 시도는 두려운 일이지만...


"여러분 모두에게 새로운 시도나 방법에 대한 현실적인 두려움이 있는 것을 알고 있다"고 강연자는 말했습니다. 이는 직업과 직군을 막론하고 일어나는 일이라고요. 하지만 <듀랑고> 팀은 그러한 두려움을 극복하고 새로운 시도를 했고, 결과적으로 편하고, 빠르고, 또 쾌적한 새 방법을 알게 됐습니다.


강연자는 자신들이 선택한 방법이 언제나 최고라고는 할 수 없지만, 이번 자리를 통해서 Git뿐만 아니라 다른 현지화 도구의 가능성에 대해서도 다시 한번 생각해보고, 또 이야기할 수 있는 기회가 되길 바란다는 메시지를 남기며 강연을 마무리 했습니다.

강연자는 이 강연의 내용을 "Git이라는 자동차에 타서 번역과 검수라는 터널을 지나온 여정"으로 표현하기도 했다. 그리고 그 일은 두려운 일이었다고.
Git을 쓴다면 여러분도 칼퇴근 할 수 있을지 모른다.
어디서나 볼 수 있는 게임 뉴스는 이제 그만, 디스이즈게임이 당신의 인사이트를 넓혀드립니다.
Follow
4.7 Star App Store Review!
Cpl.dev***uke
The Communities are great you rarely see anyone get in to an argument :)
king***ing
Love Love LOVE
Download

Select Collections