Seize the day

POST : Android Dev Study

안드로이드 다국어 번역툴 #3

두 가지 프로그램이 필요하다. 하나는 번역 엑셀 파일에서 안드로이드 lang_strings.xml 파일을 생성는 프로그램, 두번째는 이 lang_strings.xml 파일을 읽어서 번역이 제대로 되었는지 확인할 수 있는 번역 테스트 앱이다. 여기서는 번역 테스트 앱을 구현하는 과정을 소개한다.


번역 테스트 앱은 Restring라이브러리를 이용한다. (https://github.com/hamidness/restring)


앱은 android_base라는 서브 모듈을 사용한다. 서브 모듈에는 BaseActivity가 있고, 앱에서 사용하는 모든 Activity는 BaseActivity를 extend한다. Restring은 Application과 Activity에 각각 초기화하는 코드가 필요하므로 서브 모듈과 앱 모듈 두 군데 모두 수정이 필요하다. 


[서브 모듈]

build.gradle  translation 빌드 타입을 추가한다. 테스트 코드는 if (BuildConfig.TRANSLATION_MODE) 로 감싸서 테스트 앱이 아닌경우에 영향이 없도록 한다.


RestringHelperBase 인터페이스, 구현체는 앱 모듈이 제공한다.


BaseApplication


BaseActivity


[앱 모듈]

build.gradle 앱 아이디에 .trans를 붙여서 별도의 앱으로 만들고, 앱 이름도 변경한다.  


AndroidManifest  AndroidManifest에서 앱 이름을 android:label="${appName}" 으로 바꾸면 build.gradle에서 manifestPlaceholders를 이용해서 변경할 수 있다. sdcard의 파일을 엑세스 하려면 스토리지 권한도 필요하다. 


RestringHelper sdcard에서 xml 파일을 읽어와서 Restring 라이브러리를 초기화하는 코드이다. RestringHelper.kt 파일은 app/src/translation/java의 해당 패키지 폴더에 두면 자동으로 읽어 컴파일한다. 


빌드 타입이 translation이 아닌 경우는 app/src/debug/java 혹은 app/src/release/java 에 소스파일을 둔다. 구현체가 없고, 실제 호출되지도 않지만 컴파일 에러를 방지하기위해서 empty 구현한다. 


MyApplication getRestringHelper를 오버라이드하여 번역을 제공하는 경우에만 RestringHelper를 리턴한다.



다음에는 번역 엑셀 파일에서 lang_strings.xml을 만드는 프로그램을 구현하겠다. 이것은 노드 JS로도 간단히 구현할 수 있지만 윈도즈 프로그램으로 만들까 고민 중이다. 번역자가 노드 JS를 설치하고 또 필요한 라이브러리를 npm으로 내려받아 설치하고 제대로 실행하는 것은 매우 어려울 것 같다. 윈도즈 프로그램으로 만들면 간단하지만 마이크로소프트 엑셀 프로그램이 필요하다. 


최종 번역이 완료된 엑셀 파일에서 모든 언어를 앱 프로젝트 폴더의 각 언어 파일에 업데이트 하는 프로그램도 필요하다. 이것은 나만 사용하기 때문에 노드JS로 구현해도 문제 없다. 



top

posted at

2018. 6. 7. 23:20


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크