Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Node.js API 문서 한글화

node.js에 관심을 가진 뒤에 계속 node.js API  레퍼런스 문서를 한글화 하고 싶은 마음이 있었습니다. 작년에 책을 쓸 때는 번역을 해서 책에 부록으로 실을려는 생각도 있었지만 문서만으로는 설명이 부족하다는 조언을 받아들여 따로 필요한 부분만 정리하는 것으로 끝냈었습니다.

한글화에 대한 시도가 없었던 것은 아닙니다. node.js에 초기시절 삼성전자에 계신 분이(성함을 잘...) 0.2.6의 문서를 한글화하기도 했고 FRENDS에서도 0.2 시절 Rhio님zziuni님이 번역을 시도했었고 0.4버전으로 올라온 뒤에 작년에 kyungw00k님과 함께 문서번역을 하다가 반정도한 상태에서 전 책을 쓰게되고 kyungw00k님은 번역을 하게 되면서 작업이 멈춰버렸습니다.

작업을 하다 멈춘게 아쉬워서 올해 다시 번역을 하기로 맘을 먹었습니다. 처음에는 작년에 0.4로 작업한 걸 기준으로 0.6.x와 diff를 비교하다가 변경사항이 너무 많아서 이렇게 하느니 차라리 새로하는게 낫겠다라는 색각이 들어서 새로 시작했습니다. 이번에는 같이 할 사람을 모으지 않고 그냥 혼자 시작했습니다. 이게 요즘 제가 개인 작업에 취하고 있는 자세인데 오픈소스가 대부분 그렇듯 수레바퀴가 굴러갈 때까지는 혼자 작업하는게 페이스조절도 쉽고 더 나은것 같습니다. 수레바퀴가 돌기 시작하면 누군가 도와 주겠죠.(아닐 수도 있지만.)


번역 문서
현재까지 번역된 문서는 http://nodeconf.kr/docs/  http://nodejs.sideeffect.kr/docs/에 올려놓았고(주소 변경되었습니다.) 앞으로도 추가로 번역되는 내용은 여기에 올릴 예정입니다. 도메인은 좀 쌩뚱맞지만 이것때문에 추가 도메인을 살 수는 없어서 그냥 가지고 있는 도메인을 연결했습니다. 번역된 문서는 0.6.190.8.2입니다. 번역만 하고 있을 수는 없으므로 매 버전을 모두 작업하지는 않습니다만 어느정도 문서가 변경될 때는 작업을 할려고 합니다. 메이저버전이 바뀌지 않는 선에서는 문서에 아주 큰 변화는 없을 것이므로 큰 비용은 들지 않을 것으로 보고 있습니다. 누군가 번역문서 갱신에 도와주신다면 적용해드립니다. ㅎㅎㅎ


node.js 한글문서 인덱스 페이지

번역 문서는 원문을 함께 보여줄 수 있도록 했습니다. 전에 클리어보스의 검은태양님이 번역한 문서를 보면서 번역문서에 원문을 같이 보여주는 건 참 좋은 아이디어라고 생각했고 이번 기회에 적용했습니다. 우측상단에 보시면 원문보기 버튼이 있고 클릭하면 원문을 같이 보여주게 했습니다. 번역 품질이 아주 좋다고 할 수는 없으므로 원문을 같이 보여줌으로써 오역이나 번역문이 잘 이해되지 않을 때 참고 할 수 있을꺼라고 생각했습니다. 저같은 경우도 번역문이 이상해도 아주 중요한게 아니면 원문을 찾아봐서 비교하게는 잘 되지 않고 찾기도 어렵기도 해서요. 오타나 오역에 대한 리포팅을 받기가 더 쉽다고 생각했습니다. API 문서외에 Node.js도 저장소에도 포함은 되어 있지만 굳이 번역할 필요는 없어보여서 뺐습니다.


번역 작업
이 번역작업은 혼자한 것은 아닙니다. 앞에서 혼자한다고 얘기했지만 v0.6.19로 작업을 하면서 얼마전에 pismute님modules부분을 번역해서 올리신게 생각나서 메일로 요청을 드렸더니 흔쾌히 Pull Request를 보내주시고 제가 Nodeconf를 보러가서 놀고 있을때 아직 번역안된 부분을 달리셔서 0.6.19의 번역을 끝내버리셨습니다. pismute님이 달려주신 거에 자극받아 그사이에 0.8이 나왔기 때문에 빌드작업 및 0.8번역을 위한 작업을 미국에서 열심히 달렸습니다.

요즘은 번역작업을 하면서 번역을 완료하는 것도 큰일이지만 그렇게 노력해서 번역한 것이 일회성으로 끝나는 것이 아쉬웠습니다. 기술은 계속 발전하는데 힘들게 번역된 문서는 더이상 관리되지 않고 방치되는 경우가 대부분이었고 API 문서의 경우 특히 그러합니다. 그래서 히스토리를 추적하기 위해 Node저장소를 포크받아서 작업을 했습니다. v0.6.19에서 브랜치를 따서 작업을 했는데 처음에는 원문과 번역문을 같이 보여줘야 한다는 생각에 원문 아래에 번역문을 넣었었는데 pimsute님이 작업중에 계속 지적했던대로 이게 머지하기가 쉽지 않았습니다. 그리고 이상하게 v0.6.19 브랜치가 master 브랜치로 머지가 되지 않아서 v0.8작업을 하려니 충돌이 엄청나게 생겨서 이 작업에만 몇일을 쏟았습니다.

결국 pismute님의 조언대로 번역문서는 doc-ko 폴더로 분리하고 원문은 그대로 둔 상태로 유지해서 브랜치나 태그로 빌드하기로 했습니다. 대신 빌드스크립트를 수정해서 한글문서 생성시 영어원문을 읽어와서 문서에 삽입하도록 했습니다. 이렇게 하니 영어원문이 어떻게 바뀌었는지 비교하기 쉬워지더군요. 이번 작업을 하면서 git에 대해서도 많이 배운 시간이었는데 처음에는 feature/ko 브랜치를 번역작업의 master 처럼 사용하면서 하나의 버전이 끝나면 태깅을 하는 식으로 작업을 하려고 했는데 이 또한 여의치 않았습니다. 일단 태깅으로 남기니까 관리하기도 어렵고 기존의 작업에서 업데이트가 생길 경우 태그에서 작업하고 새로 태그하기도 힘들었습니다.

다시 git의 대가인 pismute님의 조언을 받아서 버전별로 브랜치로 관리하기로 했습니다.(pismute님이 없었다면 다 끝냈을 수나 있었을 지 모르겠습니다.) 각 버전은 v0.6.19-ko처럼 브랜치를 별도로 분리해서 작업을 하고 작업이 완료되면 feature/ko로 다시 머지하는 방식을 취했습니다. v0.6.19-ko작업이 완료되면 새버전을 작업해야 되면 v0.6.19-ko에서 v0.8.2-ko 브랜치를 만든 뒤 Node의 원 저장소에서 가져온 v0.8.2-Release 브랜치를 머지하고 두 브랜치의 차이점을 비교하면서 작업을 했습니다. 이렇게 관리하니까 작업이 훨씬 수월해졌습니다.


이후 작업
일단 목표한 번역이 완료되었으므로 당분간은 추가작업은 하지 않을 생각입니다. 마이너버전 업데이트에서는 문서의 변화도 크지 않을 것으로 보고요. 번역작업이나 빌드에 관한 내용은 translate Korean 위키페이지에 약간 정리해 놓았습니다. 문서를 보시다가 오역이나 오타를 발견하시면 이슈에 올려주시면 여유가 생겼을 때 적용해 드리고 저장소를 fork 받으셔서 해당 브랜치에 직접 수정을 하시고 Pull Request를 보내주시거나 새로운 버전의 브랜치를 만들어서 Pull Request를 보내주시는 것 모두 환영입니다.
2012/07/31 01:12 2012/07/31 01:12