[004] Qt Linguist 다국어 작업하기 by MoTSF

UI 프로그래밍 시 다국어를 지원하기 위한 다양한 방법들이 있다.

각 IDE를 기준으로 VS에서 .Net의 경우 리소스 내에 다중 언어를 포함 할 수 있고,

유사하게 C++ builder도 언어마다 UI의 크기나, 언어를 달리하여 작성할 수 있다.

직접적 방법으로는 코드상의 텍스트를 모아서 언어별 텍스트 리소스를 만들고 이를 로딩해서 사용할 수도 있다.

Qt의 경우 간단한 다국어 적용 툴을 사용할 수 있고

이 문서에서는 이 툴들을 사용한 가장 간단한 Qt의 다국어 처리 방법에 대해 정리한다.



1. 코드의 번역 대상 텍스트를 표시하기
 - QObject::tr()을 이용하여 번역할 텍스트를 감싸 준다.
   > 예시
   ; printf("Hello world!"); -> printf(QObject::tr("Hello world"));

2. Qt 프로젝트 파일에 다국어 리소스 파일 추가
 - *.pro 파일에 번역 항목과 번역 파일을 추가 한다.
 - 번역 파일명은 국가 코드를 같이 적는 것이 관례이다.
 - 번역 파일이 여러 개인 경우 쉽게 알아 볼 수 있도록 파일 뒤 backslash를 추가한 후 줄바꿈하고 추가한다.
   > 예시
   ; TRANSLATION += app_kr.ts \ 
                          app_jp.ts

3. Step 1 에서 마킹한 텍스트를 담은 다국어 리소스 파일 생성
 - Qt Creator > menu > tools > external > linguist > update translation으로 리소스 파일 생성
 - Step 2의 *.pro에 추가한 파일내에 Step 1에서 마킹한 텍스트들이 포함된 xml 파일이 생성된다.
 - Step 1에서 마킹한 텍스트와 Form 파일의 UI에 있는 property 중 Text 관련 property 들이 같이 추가 된다.
   > 예시
   ; app_kr.ts, app_jp.ts 파일이 생성 되고 이렇게 생성된 파일은 xml형식의 문서이다.

4. Qt Linguist 실행 후 생성된 *.ts 파일을 로드한다.
 - 최초 로드시, 로드한 파일의 원본 언어와 번역 대상이 될 언어 및 지역을 선택한다.
   > 예시
   ; 영문으로 코드상의 언어를 작성한 경우, source 는 English, target은 로드한 ts파일의 번역할 국가 언어를 선택한다.
     지역이 중요한 경우 지역을 선택하며 특별한 필요가 없는 경우 기본으로 둔다.

5. 대상 언어로 원본 텍스트를 번역 한다.
 - Context에는 각 Form이, Strings 에는 해당 Form 및 Form의 코드에서 마킹한 텍스트가 표시된다.
 - 주 화면에는 마킹한 텍스트나 Form 화면이 간략하게 표시된다.
 - 주 화면의 코드 및 Form, Source text를 참고하여 Translation에 Source text를 번역한다.
 - 번역이 완료 되면 Ctrl + Enter 혹은 Strings 의 체크 박스를 체크하여 해당 텍스트의 번역 완료를 표기한다.
 - 번역이 완료 되면 번역 결과를 저장하고, 번역 결과를 바이너리로 릴리즈(배포) 한다.
 - 릴리즈 한 바이너리는 *.qm으로 저장 된다.

6. 릴리즈한 바이너리를 로드하여 적용한다.
 - main 파일에 적용
   > 예시
   ; #include <QTranslator> 추가

    QTranslator trans;
    trans.load("app_kr.qm");
    a.installTranslator(&trans);

7. 대부분 Step 6 방법 보다는 동작 환경의 로케일을 가져와 원하는 번역 파일을 로드하여 사용한다.
 - 로케일 가져오는 방법은 생략.

+ Tip
 1. ts 파일을 수동 번역하는 경우 <translation> 태그 내에 번역을 추가한다.
 2. ts 파일은 utf-8로 저장 해야 한다.
 3. 추가 텍스트가 있는경우, Qt Creator > menu > tools > external > linguist > update로 추가하고, 재 번역한다.
 4. Qt Creator > menu > tools > external > linguist > release로 ts파일을 컴파일 할 수 있다.


덧글

댓글 입력 영역