본문 바로가기

Programming/QT&QML

[QT, QML] Translation 사용

728x90
반응형
# QT Version : 5.12 
# QT Creatpr Version : 4.11
# Project name : project01

My_Github_Link

 

jungmonster/qt_study_project

Qt projects for my study. Contribute to jungmonster/qt_study_project development by creating an account on GitHub.

github.com

1. 빈 프로젝트 생성

간단하게 빈 프로젝트를 만들고 중간에 글자를 넣어 준다.

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Text {
        id: txt01
        x : 300
        y : 200
        font.pixelSize: 40
        text: qsTr("Text")
    }
}

2. .ts 파일 생성

먼저 .pro 파일에 .ts 파일을 정의한다.

TRANSLATIONS += '파일이름' 형식으로 추가하는데, 보통 뒤에 국가 코드를 넣는다.

QT += quick

CONFIG += c++14

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp

RESOURCES += qml.qrc

# ts file 추가
TRANSLATIONS += lang_kr.ts \

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

그런 다음

Tools - External - Linguist - Update Translations (lupdate) 순으로 실행한다.

그럼 프로젝트 폴더에 ts 파일이 생성된다.

3. 번역 적용

Linguist 를 실행하고, 생성한 lang_kr.ts 파일을 열어준다.

파일을 열면 국가를 선택하는게 뜬다. 한국어로 설정!

그럼 코드에서 번역을 적용할 수 있는 항목들이 나타난다.

Text를 '테스트'로 적용

적은 후 체크를 눌러준다.

텍스트 앞에 체크가 붙으면 저장한 뒤, 파일 - 배포 순으로 진행한다.

그럼 프로젝트에 qm 파일이 생성된다.

.pro에 qm 파일을 추가한다.

QT += quick

CONFIG += c++14

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp

RESOURCES += qml.qrc

# ts file 추가
TRANSLATIONS += lang_kr.ts \

# qm file 추가
OTHER_FILES += lang_kr.qm

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

4. 소스 적용

main 함수에서 로드

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QTranslator>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QTranslator* translator = new QTranslator();
    translator->load("D:\\Qt\\QTranslation\\lang_kr.qm");
    app.installTranslator(translator);


    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

성공~!!

반응형

'Programming > QT&QML' 카테고리의 다른 글

[QT, QML] Signals Slots 사용하기  (0) 2020.04.12
[QT, QML] QML Component anchor  (0) 2020.04.06
[QT, QML] QML Component load 순서  (0) 2020.03.31
[QT, QML] button, loader 사용  (0) 2020.03.29
[QT, QML] Empty Project  (0) 2020.03.27