Tag Archives: localization

Resource Hacker: 리소스 편집 툴

외국 프로그램 한글화 할때 사용하는 툴인데, 이번에 회사에서 응용프로그램을 중국어로 바꾸는데 사용하고 있습니다. 원래는 언어별로 리소스 DLL 파일을 만들어서 작업했었는데 이번에 새로운 버그(?)가 들어가서 DLL에 있는 리소스를 잘(!–) 못 읽어오는 문제가 발생했는데, 생각처럼 쉽게 해결이 안되더군요.

시간은 없고 해서 다른 방법을 찾아봤는데, Resource Hacker(reshack.exe)에서 일괄 작업등을 지원하여 불편없이 localization에 사용할수 있더군요. 또한 DLL 처럼 컴파일 할 필요도 없고, 번역하는 사람한테 넘겨서 직접 실행해보면서 미비한 점들을 고칠수 있고, 작업 완료후 exe나 res를 넘겨받은다음 필요한 부분만 res 파일로 CVS나 SVN에 저장해두면 나중에 업그레이드 할때도 큰 문제없이 적용할수 있습니다. 아니면 인스톨러 생성에 필요한 모든 파일을 넘기고 번역후 직접 로컬화된 설치 프로그램을 작성하도록 할수도 있습니다.

Resource Hacker는 델파이로 만들어졌고, 개발이 중단된 상태지만, 사용하기에는 큰 불편함이 없습니다. 소스가 공개된 XN Resource Editor도 있지만 문서화도 잘 안되어있고, 완성도가 떨어집니다. XN Resource Editor는 오픈소스이기 때문에 발전가능성이 있긴하죠…

사용자 인터페이스는 그리 복잡하지 않습니다. 다이알로그나 문자열 편집은 오른쪽에 편집창을 이용해서 텍스트로 편집할수 있기 때문에 워드 문서 등에서 직접 Copy&Paste를 할수 있어 편합니다.

exe파일이 바뀔대마다 노가다를 할수 없으므로, 자동화는 반드시 필요합니다. reshack에서는 커맨드라인을 통해서 작업을 시킬수도 있고, -script 옵션으로 스크립트로 여러가지 작업을 한번에 돌릴수 있는 기능도 제공합니다.

한가지 사소한 버그를 찾았는데 파일명이 숫자로 시작하면 오류도 없이 작업하지 않고 종료되더군요… –; 파일명만 바꿔주면 되더군요.

배치파일과 script 파일을 만들었습니다:

ResHacker.exe -script apply_cn.txt
// apply_cn.txt
[FILENAMES]
Exe=      appname.exe
SaveAs=   appname_cn.exe
Log=      appname_cn.log

[COMMANDS]
//-delete   MENU,,0
//-delete   DIALOG,,0
//-delete   STRINGTABLE,,1042
-delete   STRINGTABLE,,1033
-addoverwrite      cn.res, MENU,,2052
-addoverwrite      cn.res, DIALOG,,2052
-addoverwrite      cn.res, STRINGTABLE,,2052

리소스 지정은, 타입(MENU,DIALOG,STRINGTABLE), 아이디(100,101..), 언어(1042,1033) 형태로 나오는데 모든걸 지정하려면 해당 항목을 비워주면 됩니다.

언어는 1033은 영어(US), 1042(한국어) 2052(중국어-simplified).

위에서는 appname.exe에 있는 영문 문자열 리소스를 빼고, cn.res에 있는 메뉴,다이알로그,문자열 리소스를 추가하여 appname_cn.exe로 저장합니다.