🌐
문서 번역으로 구글 컨트리뷰터가 되어보자

GitLocalize를 이용해 Google의 Web Fundamental 문서를 번역하여 기여한 경험을 공유합니다.

April 19, 2020


Translation OpenSource


인증

작년에 썼던 회고글에서 잠깐 언급하긴 했지만, 구글의 Web Fundamental의 문서 중 하나인 웹에서 가변 폰트의 도입 문서를 번역했습니다. Web Fundamental 페이지에서 기여하는 방법을 처음 알게 된 게 작년 10월이었는데, 이번 달 초에 머지가 되었습니다. 의도했던 건 아닌데 장장 6개월에 걸친(?) 프로젝트가 되었네요.

프로덕션에 배포된 문서는 이 곳에서 확인하실 수 있습니다. 사실 번역 품질이 제가봐도 썩 좋은 편은 아니라 좀 부끄럽긴 하네요. 현재는 번역 품질을 좀 더 개선하기 위한 추가 작업을 진행 중입니다.

구글 문서 번역에 관한 한국어 자료가 거의 없는 상태이기 때문에, 기여 과정에서 삽질을 꽤 많이 했습니다. 그래서 오늘은 번역한 문서에 대한 내용보다는 기여 작업을 하면서 겪었던 경험들을 공유해보고자 합니다.

동기

Web Fundamental 페이지 구글의 Product 페이지 내에 Web이 있고, 그 안에 Fundamental 페이지가 있습니다.

제가 이번에 기여한 Web Fundamental 페이지는 구글 개발자 페이지 하위에 있는 수 많은 페이지 중 하나입니다. 주로 차세대 웹 경험을 구축하기 위한 튜토리얼, 안내서 및 모범 사례 등을 소개하는 페이지입니다. 디바이스 API, 웹 결제 API, 웹 컴포넌트처럼 새로운 기술을 소개할 뿐만 아니라 애니메이션, UX, 반응형 디자인, 시멘틱 태그의 사용 등 웹 전반에 걸친 튜토리얼을 제공하고 있죠.

몇몇 페이지를 둘러보면 알 수 있지만, 번역이 된 문서도 있고 안 된 문서도 있습니다. 그래서 왜 여기는 번역이 안 되어 있지? 라는 생각이 들었는데, 문득 구글에서 어떤 식으로 번역을 관리하고 있는지가 궁금해졌습니다. 그래서 좀 더 찾아보니, 기여하기(Contribute) 메뉴 내에 번역(Translating) 영역이 따로 있더군요.

컨트리뷰터 페이지 Web Fundamental에 숨겨진 기여자 목록 페이지

기여하기 메뉴 안에는 컨트리뷰터 페이지가 별도로 숨겨져 있었습니다. 목록 중에서는 한국 분들도 종종 보이더군요. 아직 번역이 안 된 문서가 많았기 때문에, 그 중에서 하나를 번역해서 기여해보면 꽤 유익하고 재밌을 것 같다는 생각이 들었습니다. 컨트리뷰터 목록에 이름을 싣어보고 싶기도 했구요.

GitLocalize

프리뷰 Github의 Marketplace에서 가져온 GitLocalize 스크린샷. 왼쪽이 원본, 우측이 번역본입니다.

GitLocalize는 구글 Web Fundamental 리포지터리에서 각 언어별 번역을 위해 실험적으로 사용하고 있는 서드파티 어플리케이션입니다. 예전에는 풀 리퀘스트(이하 PR)를 올리려면 리포지터리를 직접 포크(Fork)하고 로컬에서 개발 환경을 갖춘 후 수정하는 과정을 거쳐야 했는데, GitLocalize를 통해서 웹에서도 간편하게 문서를 번역하고 PR을 올릴 수 있게 되었죠.

번역 기계에 의해 번역된 예시를 제시해주기 때문에 번역하는 데 좀 편했습니다

현재 구글에서 제안하고 있는 번역 과정이 다음과 같아서, 저도 아래 과정을 그대로 따랐습니다.

  1. GitLocalize의 Web Fundamentals 저장소로 이동합니다.
  2. GitHub 계정으로 GitLocalize에 로그인합니다.
  3. 번역하고자 하는 문서를 검색합니다.
  4. 번역을 시작합니다.
  5. 번역이 완료되면, 해당 언어의 관리자에 의해 리뷰를 받습니다.
  6. 해당 언어의 관리자에 의해 리뷰가 완료되면, Github에 PR이 생성됩니다.

4번 과정 같은 경우에는 꽤 편리하게 사용했습니다. 위에서의 사진처럼 전체적인 레이아웃이 두 개의 컬럼으로 나뉘어져있고, 왼쪽에 영어 원본, 오른쪽에 번역 가능한 문서가 있는 형태입니다. 원본과 번역본을 싱크(sync) 하려면 그림판에서 마우스로 선을 긋듯이 이어주기만 하면 됩니다. 화면 아래에 기계에 의해 번역된 예시를 제공해주기 때문에, 번역하는데 도움이 되는 점도 편리했습니다. 사용해보지는 않았는데 번역할 기계를 선택할 수 있는 옵션도 있는 모양이더군요.

5번 과정이 일반 PR을 만드는 것과는 조금 다릅니다. 제가 번역을 완료하면 Github에서 PR이 생성되는 게 아니라, GitLocalize 내에서 각 언어별 관리자에 의해 사전 리뷰(Review Request)를 받고 승인이 되면 그때 Github에서 PR이 생성됩니다. 즉 승인을 두 번 받아야 하는 것이죠.

번역

가변 폰트 예시 CSS를 이용해 동작하는 가변 폰트의 예시입니다. font-style을 이용하지 않고, 너비, 두께에 대한 수치값을 동적으로 지정할 수 있습니다. 이미지 출처는 이 곳입니다.

사실 번역 과정도 쉽지는 않았습니다. 저에게 너무 낯설지 않은 주제면서도 의미가 있는 문서를 번역해보고 싶었습니다. 저는 프론트엔드 개발을 주로 해서, 그나마 CSS 선의 지식에서 이해가 가능한 가변 폰트(variable fonts)라는 주제를 골랐죠. 뭐 그렇다고 해도 가변 폰트를 잘 아는 상태로 번역을 시작한 것은 아닙니다.

폰트와 관련된 이야기라 그런지 디자인적인 요소에 대한 설명들도 많이 나왔기 때문에, 낯선 용어의 등장이 번역 과정에서 꽤나 난관이었습니다. 가장 큰 이유는 디자인에 대한 제 지식이 짧았다는 것이겠지요. 가령 가변 폰트에는 너비(Width)라던가 이탤릭(Italic)처럼 적용할 수 있는 스타일을 선형(linear)의 축(axis) 형태의 옵션으로 제공하는 마스터(master)라는 용어가 있습니다. 하지만 단순히 마스터라는 용어만 떼어놓고 보면 일반적으로는 문맥을 파악하기가 쉽지 않죠. 보통 일반적으로 마스터라면 숙련된 장인(匠人)을 떠올리니까요.

그리고 영어만의 은유적이고 비유적인 표현을 한국어로 자연스럽게 번역하는 것 역시 가장 어려웠던 점들 중 하나였습니다. 그래서 번역기도 써보고, 비슷한 표현도 사전에서 찾아보고, 문맥을 너무 해치지 않는 선에서 어느정도 의역도 했습니다.

게다가 풀타임으로 번역하는 것도 아니고, 제가 짬짬이 틈을 내서 번역한 것이기 때문에 문서 전체를 번역하는 데에는 약 2주 정도가 걸렸던 것 같습니다. GitLocalize에서는 100% 번역을 완료해야지 리뷰를 받을 수 있었기에, Request Change를 받지 않기 위해 시간이 걸리더라도 꼼꼼히 번역하려 노력했습니다.

기약 없는 기다림

리뷰 리퀘스트 GitLocalize 내에 있는 리뷰 리퀘스트(Review Request) 탭. 우측 상단에 해당 언어의 관리자(Moderator)가 있는데, 관리자 중 한 분의 승인(Approve)을 무조건 받아야지 Github에 PR이 생성됩니다.

번역을 마치게 되면, 해당 언어의 관리자에게 리뷰 요청을 보낼 수 있습니다. 저도 리뷰 요청을 보냈는데… 거의 한 달을 넘게 기다려도 리뷰가 없는 것이었습니다. 뭔가 어쩐지 가장 최근에 리뷰가 남겨진 게 거의 반 년 전이어서 불길한 느낌이 들었지만, 들인 시간이 아까워서라도 뭔가 관리자 분께 컨택이 필요해보였습니다. 그래서 이메일 주소가 적힌 관리자 분께 메일을 보냈고, 몇 일 후에 답장을 받을 수 있었습니다. 내용은 아래와 같았습니다.

제가 알고 있기로는 GitLocalize 를 통한 번역 프로젝트는 지금 현재 활성 중인 상태가 아닌 것으로 알고 있습니다. 한국어를 포함한 다른 언어도 활동이 없는 상태입니다. 일단 번역 관련해서 활동하시는 분에게 포워딩 해보도록 하겠습니다.

띠용쓰… 활성 중인 상태가 아니라 좀 더 기다려봐야 한다니. 관리자 분께 직접 메일로 답변을 받은 것은 감사했지만, 리뷰를 언제 받을 수 있는지에 대해 확답을 받지 못하니 답답한 느낌이 적잖게 들긴 했습니다. 물론 관리자분들도 본업을 하시면서 사이드로 관리자 역할을 하시고 계신 것 같아서 이해는 했습니다.

코멘트 나름 코멘트로 리뷰를 받고 의견을 나눴습니다(?)

그래서 아쉽지만 기억 속에 묻어두기로 하고 그렇게 점점 제 기억에서 잊혀져 가고 있었는데… 한 달 반 후에 리뷰 리퀘스트에 코멘트가 달렸다고 메일이 왔습니다. 오잉? 하면서 링크를 눌러봤는데 오오… 진짜 리뷰가 있었습니다.

문맥이 조금 어색한 부분이 있고, 링크 형식이 잘못된 부분을 고쳐줬으면 좋겠다는 내용이었습니다. 기쁜 마음으로 문서에 들어가 해당 부분을 수정하고 다시 리뷰 요청을 하려 했습니다.

근데 GitLocalize에서 현재 리뷰 요청 중인 문서의 경우에는 수정이 불가능하다고 하더군요.

WTF 읭????

관리자분께서 지적해주신 부분을 수정해서 다시 올리고 싶은데 리뷰 중이어서 수정을 못하는… 이 무슨 데드락(deadlock) 같은 상황일까요. 혹시나해서 리뷰 요청을 닫는 옵션도 찾아봤는데 없었습니다.

그래서 뭐 어떻게 해야되지..? 싶어서 삽질을 시작하게 되죠. 리뷰 리퀘스트의 내용을 수정하고 싶어서 Web Fundamental 리포지터리의 리드미 문서에 적힌 대로 로컬에 개발 환경을 세팅해서 PR을 다시 올리려고 했습니다.

리포지터리 용량만 2GB가 넘어서 클론 하는 데에도 오래 걸리더군요. 게다가 일반적인 Node.js 어플리케이션처럼 npm install && npm run dev 이렇게 명령어 한 줄로 쉽게 로컬 서버를 켤 수 있는 게 아니더군요. Python 환경 위에 Google Cloud SDK라는 환경 세팅이 필요하고 App Engine Python 인가 뭔가 깔아야지 겨우 로컬 서버가 돌아가는데… 구글 클라우드 시스템에 대한 이해가 전혀 없는 상태에서 하려니 뭐가 뭔지 하나도 모르겠더군요. 뭐 어떻게 저떻게 하다보니까 성공은 했습니다.

Holy 리뷰어: 이렇게 올리지 말고 GitLocalize로 PR 올려주세염ㅠ

암튼 GitLocalize에서 본문을 수정할 수가 없어서, 수정 사항을 반영한 PR을 별도로 올렸더니… 리포지터리 관리자 분께서 GitLocalize에 올라온 리뷰가 승인될 때 까지 기다려보자 고 했습니다.

Holy 아아… 좋은 삽질이었다… 이젠 나도 어떻게 해야 할 지 모르겠다…

이렇게 또 기억에서 잊혀져 가고 있었는데…

머지

Holy 머지? 개꿀잼몰카?

그렇게 또 까먹고 있었는데, 이번 달 초에 갑자기 너가 번역에 참여한 문서에 컨플릭트가 났으니 확인 바란다 는 내용의 메일이 왔더군요. 엥? 이건 또 무슨 소리지 싶어서 GitLocalize 페이지에 들어가서 확인해봤는데 저도 모르는 사이에 머지가 되었더군요. 엥?? 나는 아직 리뷰를 반영한 적이 없다구요!!

그래서 바로 프로덕션 환경에서 반영되었는지 확인해봤는데 안 되어 있더군요. 머지한 지 얼마 안되어서 그런가? 싶어서 나중에 들어가보니 반영이 되어 있더군요. 그렇게 뭔가 찝찝하게 머지가 되었습니다…

후기

Holy 미안하다 이거 머지하려고 어그로 끌었다…

일단 의의를 찾아보자면… 구글의 공식 리포지터리에 번역으로 기여를 했다는 점을 찾아 볼 수 있네요. 활동 내역에 Google 뱃지가 떠 있는 걸 보면 뿌듯하긴 합니다.ㅎㅎ

하지만 모든 과정들의 피드백이 거의 한 달 주기로 걸렸기 때문에 답답하다는 느낌을 지울 수가 없었습니다.ㅠ 그냥 PR을 올리고 나서 아예 까먹고 있을 정도로 마음을 놓고 있어야 합니다. 혹시나 이 글을 읽고나서 엇 나도 구글에 컨트리뷰트 해볼랭! 하는 생각이 드시는 분이 있을 것 같은데, 100m 달리기가 아니라 마라톤이 될 수 있으니 참고하시길 바라요.

  • Web Fundamental 에서 각 언어별로 몇 퍼센트나 번역되었는지 비율이 있는데 한국이 11% 로 1위더라구요. 인도네시아랑 일본어가 10% 로 2위…
  • 이 포스트 쓰려고 구글링을 하다가 GitLocalize 만든 회사에서 제 PR을 예시로 GitLocalize를 설명한 글이 있어서 깜놀했네요;