본문 바로가기
Development/QT

[QT] 다국어 지원 코드 작성

by qWooWp 2022. 2. 23.
반응형

QT 로 어플리케이션을 제작할 때 글로벌 타켓이 될 경우, UI에 표시되는 언어를 다국어가 표시 될 수 있도록

지원해야 될 경우가 발생합니다. 

이를 위해서 QT 에서는 liguist 라는 패키지를 제공합니다.

 

1. 프로젝트 파일(*.pro) 에 TRANSLATIONS 키워드로 언어리소스 파일을 아래와 같이 추가 합니다.

 

TRANSLATIONS = lang/en_us.ts \
                lang/kr.ts

영어 와 한국어 2개의 파일을 생성할 예정이니 2개를 선언 합니다.

 

2. 해당 프로젝트 파일이 있는 위치의 lang 디렉토리를 생성합니다. (만일 lang 디렉토리가 없다면 ts 파일 생성이 되지 않습니다)

 

3. 프로젝트 를 연 상태에서 QT Creator 메뉴에서 Tools >> External >> linguist >> Update Translations(lupdate) 메뉴를 선택합니다.

 이 단계가 위에서 선언한 en_us.ts 파일과 kr.ts 파일을 생성하는 단계 입니다.

4. linguist 툴을 이용하여 en_us.ts 파일을 열고 원하는 내용으로 번역 작업을 수행합니다.

linguist 실행 파일은 자신의 QT 설치된 디렉토리의 bin 에 위치합니다.

/tools/Qt5.14.2/5.14.2/gcc_64/bin/linguist ./en_us.ts

파일이 열리면 아래와 같이 묻는 창이 나옵니다. en_us 파일은 영어로 작업할 것이기 때문에 아래와 같이 수정해 줍니다.

생성한 UI 에 컨트롤들이 자동으로 인식되어 원본 텍스트로 인식되는 것을 확인할 수 있습니다.

위 이미지와 같이 Translation to Amerian English 에 번역 내용을 추가 하면 됩니다. 

사실 저같은 경우 기본 원본 텍스트를 영어로 작업하였기 때문에 이 작업이 안되어 있을 경우 원본 텍스트가 보여지게 됩니다.

 

번역 작업이 완료 되면 linguist 메뉴 >> 배포 를 선택합니다.

 

ts 파일이 있던 위치에 아래와 같이 qm 파일이 생성이 됩니다.

 

5. 코드 추가 및 실행 확인 방법

 

main 함수에서 아래와 같이 사용할 qm 파일을 로딩한다.

 QTranslator* translator = new QTranslator();
 translator->load("kr.qm");
 QApplication::installTranslator(translator);

 

<주의사항>

생성된 qm 파일은 별도로 어플리케이션과 같은 디렉토리에 복사를 해야 합니다.

반응형

'Development > QT' 카테고리의 다른 글

[QT] UI 에서 한글 깨짐 문제  (0) 2024.02.26
[QT] 실행 시간 측정 방법 (성능 확인)  (0) 2022.07.15
QT QWidget Mouse Event 처리 하기  (0) 2022.02.18
qt_static_metacall(QObject*, ... ERROR  (0) 2021.11.17
QT Int to String 방법  (0) 2021.07.02

댓글