본문 바로가기

모바일 앱

안드로이드언어 자동현지화(Localize App)

반응형

이 포스팅은 안드로이드 앱을 만들 때 기본적으로 만들어야 되는 최소, 한 가지의 언어로 만든(영어든 한글이든) strings.xml을 Google Spread Sheet를 이용하여 각국 언어로 번역한 뒤, 이 번역된 스프레드시트를 Python을 사용하여 안드로이드에 필요한 각국 언어의 strings.xml을 자동으로 만들어주는 것을 목적으로 하며 작성하였다.  

 

2012년에 스마트폰의 앱을 처음 접하였고 핸드폰에 내장된 각종 센서를 사용해 보려는 목적으로 몇 종류의 앱을 만들어 보았다.꽤지난 시간 지금 다시 보니 4년 전에도 깊이 있는 Java는 해 보지 않았지만 처음 프로그램 만져보는 듯 생소하고 다시 배워야 될 것 같다. 젊어서부터 메모나 정리 정돈의 습관이 없어 더욱 그러할뿐 아니라, 

이번에 만든 간단한 게임을 각국언어로 현지화 하려고 구글의 Translator Toolkit에 

의뢰 하였더니 견적이 구십육만 원(\960,000) 나온다. 떼돈 버는 게임도 아니니 툴킷을 사용할 수도 없고 나라별로 번역하려니 프로그램 짜는 것보다 더 힘들고 귀찮은 삽질이라 앱 자동 현지화를 배워서 정리해 본다.
(머리 나빠 내 주변까지 고생시키고, 메모하지 않아 내 손발까지 고생한다!)

<안드로이드언어 자동현지화 과정>

  

아이뮤즈 뮤패드 L10 LTE 태블릿 PC + 키보드, 다크그레이, 64GB, Wi-Fi+Cellular

Android XML to XLSX or CSV conv

엑셀파일인 XLSX나 쉼표로 문장을 구분한 텍스트파일인 CSV를 사용하는 구글 스프레드시트는 언어 리소스 관리를 일원화 하여 관리함으로써, 번역을 의뢰한 업체나 번역자들과의 공동 작업이 웹상에서 용이할뿐 아니라 작업중에도 항상 최신으로 유지할 수 있으며, 단순 반복일이 줄어 든다.

뿐만 아니라 간단한 경우 리소스 언어 현지화를 구글번역기를 사용하여 즉시 번역하여 사용할 수 있다는 큰 장점이 있다.

 

1. Android Studio Plugins을 이용한 변환
Github 프로젝트 공개소스에서 

Plugins 다운로드

 

 

 

다운로드한 

android.xml.csv.parser.plugin.zip 파일을 풀고 ① > ② > ③ 으로 플러그인을 설치한뒤 

Android Studio를 재부팅 한다.

 

 

앱을 만들때 기본으로 생성된 제작 프로젝트 폴더 > app > src > main > res > values > strings.xml을 새로 생성된 Tools > AndroidXML-CSV parser 플러그인을 사용하여 csv로 변환하여 사용 한다.

 

* cmd를 이용하는 도스용은 \n , \" ...등과 긴문장을 제대로 변환하지 못하였다.

 

 

2. 웹상의 무료 변환 사이트를 이용한다.

 

① luxonsoftware의 Convert raw XML data to Excel format을 이용하기

 

 

간단, 간결, 깔끔하게 변환해주는 luxonsoftware의 XML to Excel Converter

4MBytes까지는 무료로 변환 가능하여 왠만한 작업에서의 xml파일은 모두 가능하다.

 

② 다양한 포멧으로 변환 가능한 http://www.convertcsv.com/xml-to-csv.htm

 

 XML to CSV외 다양한 포멧의 파일들로 변환 가능한 사이트로서, 출력파일의 양식을 직접 만들거나 변환된 파일을 수정도 가능한 다양한 기능을 가지고 있다.

 

삼성전자 갤럭시탭 S8 플러스 SM-X800, 핑크골드, 256GB, Wi-Fi

     Google Spread Sheet를 이용한 언어 

변환된 엑셀파일을 구글 드라이버에 올리고, 구글의 스프레드시트에서 번역을 한다.

 

strings.xml

 

 A1에는 "android_key", B1에는 

string을 한글로 만들었으니 "values-ko"및 번역을 원하는 C1~X1..까지 모두 

안드로이드 values폴더의 언어코드 폴더명으로 만들어 준다.

 

 

C1부터 values-en(영어), 

values-de(독일어), values-fr(프랑스어) .....등의 번역을 원하는 언어로 만들고

C2에는 구글번역을 이용하는 =GOOGLETRANSLATE(텍스트,"출발어","번역을원하는 도착어")의 순으로 입력한다.  

=GOOGLETRANSLATE(B2,"ko","en")  > "B2의 한글로된 텍스트를 영어로 만들어라"

나머지 D2~X2까지 모두 설정한뒤...

 

 

C2의 커서포인트에서 마우스클릭하여 번역을 원하는 C12까지 내려가서 마우스를 놓으면 해당되는 

C3~C12까지 모두 B3~B12의 내용이 영어로 번역 된다.

이후 D2, E2......등도 동일하게 처리하면 구글을 이용한 번역은 끝이 난다

 

 * 초기 strings.xml이 한글일경우 B4의 내용과 같이 고유명사는 영문으로 작성한뒤 원본을 나중에 수정해 주는것이 좋다.

 

[당일발송 사은품 증정]엑스피펜 XPPEN 아티스트16 2세대 Artist16 액정타블렛, 핑크, Artist 16 2세대, Artist 16 2세대

  Android or IOS 시트생성 및 

android_key열 외 IOS작업을 위하여 ios_key열을 한줄더 만든뒤 android용과 ios용의 파일을 각각 따로 만들기위하여 구글 스프레드시트에서 스크립트 편집기를 이용하여 제작한다. 여기서는 안드로이드용만 제작 하였으니 생략 하고, 

이 작업은  참조한 tiii님의 포스팅에서 상세히 확인할수 있다.

 

번역작업된 시트를 모든사용자가 볼수 있게 공유설정하고 공유창의 링크주소나 작업중인 주소창의 주소를 복사하여 둔다.

 

 

https://docs.google.com/spreadsheets/d/[본인이 작성하고 공유한 시트의 DocId]라해서 몇번 해보니 안된다.

 각창의 주소를 읽어보니 끝부분이 조금 다르다.

 

< 공유창의 주소 >

https://docs.google.com/spreadsheets/d/1R_NuZ9XHHpxItYZjBGidbyMngKttDdZOefNk7iz4Iv0/edit?usp=sharing

 < 작업중인 스프레드시트주소창의 주소 >

https://docs.google.com/spreadsheets/d/1R_NuZ9XHHpxItYZjBGidbyMngKttDdZOefNk7iz4Iv0/edit#gid=677321147

 

마켓에 빨리 올려야될 작업이 있어, 왜 안되는지는 자세히 살펴보지 못하였는데 좌우간 아래와 같이 Google DocId를 만드니 잘된다.

 

Ext.GoogleDocId = "1R_NuZ9XHHpxItYZjBGidbyMngKttDdZOefNk7iz4Iv0#gid=677321147"

 * 이유를 아시면 댓글 달아 갈켜 주셔요~^^

 

삼성전자 갤럭시탭 S8 플러스 SM-X800, 핑크골드, 256GB, Wi-Fi

1. 파이썬의 설치(python27)

https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi

 

2. 파이썬에 setuptools, pip, gdata 설치

Setuptools : https://pypi.python.org/pypi/setuptools/1.0#windows

cmd창에서 python ez_setup.py build 입력후 python ez_setup.py

 

3. pip와 gdata설치( 파이썬을 C:\python27에 설치한 경우)

* C:\python27 

> Scripts > pip2.7* pip install gdata 
4. 환경변수에 python path 와 script path를 추가(

C:\python27, C:\python27\scripts)

어느곳에서나 python이나 pip, gdata를 사용할수 있게 환경변수에 추가한다.
5. 안드로이드 스튜디오에 Python Community Edition Plugin 설치


6. 프로젝트에 파이썬 스크립트 복사

 

 

language_and.py

 

번역할수 있는 전체나라를 array로 선언하여 프로젝트때마다 번역이 필요한 나라를 골라서 사용할수 있게 하면 좋으련만 당장 마켓에 올려놓은 녀석의 작업이 바빠서 줄줄 늘려서 나라를 추가 하였다. ㅎㅎ
나중에 시간나면 하등가 고수분들에게 기대를 걸어본다.^^
IOS버전의 경우는 포스트 한곳에서 댓글로 김로또님께서 재능기부해 주셨답니다.

language_ios.py

*ios는 사용해 보지 않았습니다.

    

7. build.gradle 입력하기

build.gradle에 상기 파이썬 스크립트를 실행하는 StringResourceSync란 이름의 task를 추가한다.

 

 

build.gradle을 수정하여 project sync하거나 프로젝트를 빌드하면 먼저 언어리소스를 다운받아서 설정해 놓은 새로운 폴더에 언어별 strings.xml을 생성한다. 

 

 

 

8. build.gradle의 수정없이 Syncgkdu strings.xml을 재생성 하기.

매번 다른 프로젝트때마다 build.gradle를 수정하고 script폴더 만들어 입력하는 번거로움도 있고, 프로젝트를 빌더 할때 마다 res_down폴더를 재 생성하는 불편함이 있어서 이 리소스 자동화 프로젝트를 별도로 관리하여 프로젝트가 바뀔때마다 구글시트에서 공유한 DocId만 수정하여 사용하는것이 편리 할듯 하다.

 

쉽게 언어 리소스만 갱신하기 위하여 gradle task만 등록하여 사용하면 된다.

 

 Run > EditConfigration > + 하여 gradle task를 추가 등록 한다.

새로운 프로젝트나 구글 스크립트시트에 새로운 언어를 추가 하였을때 등의 변경사항이 있을때 언어리소스만 갱신하여 사용할 수 있다. 

 

열심히 하셔서 대박 터트리셔요~^^

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형