strings.xml 다국어 번역 관련 글이 있길래 제가 사용하고 있는 서비스 공유해봅니다.

개발자분들의 글로벌 진출에 조금이나마 도움이 되면 좋겠네요.


http://translate.google.com/toolkit


기본적인 작동 순서는 다음과 같습니다.

1) strings.xml을 업로드

2) 번역할 언어 선택 (언어 수만큼 문서 생성)

2) 노드 단위로 문장만 추출해서 문장 단위로 편집하는 번역 환경 제공

3) 번역이 끝난 후 다운로드를 하면 기존 strings.xml 포맷으로 변환되어 다운로드됨


아래는 기본 편집화면입니다.

google_translate_toolkit_edit.png



사용해보면 다음과 같은 장점이 있습니다.

1) 기본적으로 구글 번역기가 자동적용된다.

2) 공동 작업이 지원된다.

3) 번역했던 이력이 데이터베이스화 된다.

    새로운 문서에 기존에 번역했던 것과 같거나 유사한 문장의 있다면 기존 번역이 자동 반영된다.

    또한 해당 문장 또는 유사한 문장의 번역 이력도 제공하여 보다 나은 번역을 선택할 수 있다.

4) 전세계 번역 이력이 공유된다.

   공유가 허용된 유사한 문장의 번역들을 추천 또는 자동 반영해줍니다.


이 툴은 안드로이드 XML 뿐만 아니라 IOS 파일, 웹페이지, 일반 문서, 자막파일까지 지원이 됩니다.

웹페이지의 경우도 문장만 잘 추출해서 문장 단위로 번역하면 번역이 반영된 HTML을 추출 받을 수 있죠.

google_translate_toolkit.png



툴의 특성을 위용한 효율적인 xml 관리가 필수더군요.

노하우를 공유해봅니다.


1) XML 안의 내용은 따옴표(")로 묶어서 관리하자.

문장에 new line을 넣기 위해 보통 '\n'을 넣는데 특수문자는 툴이 번역을 헤매게 만드는 원인이 됩니다.

번역을 해주는 사람도 여간 불편한게 아니죠.

대신 내용을 따옴표로 묶고 안에 그냥 new line을 넣으면 특수문자 없이 개행을 할 수 있습니다.

예) 

<string name="xxx">개행을\n어떻게 할까요</string>

=> 

<string name="xxx">"개행을

어떻게 할까요"</string>


2) 문장은 가급적 짧게 나눈다.

툴킷에서 같은 문장인가를 판단하는 기준은 노드 안의 내용 전체가 됩니다.

즉 여러 문장을 하나의 노드 안에 넣어 놓으면 유사 번역 검색이나 번역 재활용 가능성이 매우 낮아지게 됩니다.

<string name="xxx">"번역이 완료되었습니다.

반영하시기 바랍니다."</string>

=> 

<string name="aaa">"번역이 완료되었습니다."</string>

<string name="bbb">반영하시기 바랍니다."</string>



3) 가변 문장은 String.format() 함수에서 사용하는 포맷으로..

툴킷은 %s, %d 등을 파싱해서 번역 시 해당 부분이 손상이 가지 않도록 보호해 줍니다.

또한 문장의 구조도 자연스럽게 되기 때문에 좀 더 정확한 번역이 가능해 집니다.

예)

<string name="xxx">" is not found."</string>

=> 

<string name="xxx">"%s is not found."</string>



그럼 도움이 되시길 빌겠습니다.