QTranslator Class

QTranslator 클래스는 텍스트 출력에 대한 국제화 지원을 제공합니다. 더 보기...

Header: #include <QTranslator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject

공용 함수

QTranslator(QObject *parent = nullptr)
virtual ~QTranslator()
QString filePath() const
virtual bool isEmpty() const
QString language() const
bool load(const QString &filename, const QString &directory = QString(), const QString &search_delimiters = QString(), const QString &suffix = QString())
bool load(const QLocale &locale, const QString &filename, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString())
bool load(const uchar *data, int len, const QString &directory = QString())
virtual QString translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) const

상세 설명

이 클래스의 객체는 소스 언어에서 대상 언어로 번역된 집합을 포함합니다. QTranslator는 번역 파일에서 번역을 조회하는 함수를 제공합니다. 번역 파일은 Qt Linguist.

번역 파일을 로드하고 QCoreApplication::installTranslator()를 사용하여 설치하는 것이 QTranslator의 가장 일반적인 용도입니다.

다음은 QTranslator를 사용하는 main() 함수의 예입니다:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QTranslator translator;
    // look up e.g. :/i18n/myapp_de.qm
    if (translator.load(QLocale(), "myapp"_L1, "_"_L1, ":/i18n"_L1))
        QCoreApplication::installTranslator(&translator);

    QPushButton hello(QCoreApplication::translate("main", "Hello world!"));
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

번역기는 애플리케이션의 위젯보다 먼저 생성되어야 한다는 점에 유의하세요.

대부분의 애플리케이션은 이 클래스로 다른 작업을 할 필요가 없습니다. 이 클래스에서 제공하는 다른 함수는 번역기 파일에서 작업하는 애플리케이션에 유용합니다.

번역 조회하기

translate()를 사용하여 번역을 조회할 수 있습니다( tr() 및 QCoreApplication::translate()와 마찬가지로). translate () 함수는 최대 3개의 매개 변수를 사용합니다:

  • 컨텍스트 - 일반적으로 tr() 호출자의 클래스 이름입니다.
  • 소스 텍스트 - 일반적으로 tr()에 대한 인수입니다.
  • 동의어 - 동일한 문맥에서 동일한 텍스트의 다른 용도를 구분하는 데 도움이 되는 선택적 문자열입니다.

예를 들어, 프로그램이 폴란드어로 실행될 때 대화 상자의 "취소"는 "Anuluj"가 될 수 있습니다(이 경우 소스 텍스트는 "취소"가 됩니다). 컨텍스트는 (일반적으로) 대화 상자의 클래스 이름이고, 주석은 없으며, 번역된 텍스트는 "Anuluj"가 됩니다.

하지만 항상 그렇게 간단한 것은 아닙니다. 양면 인쇄 및 제본에 대한 설정이 있는 프린터 대화 상자의 스페인어 버전에서는 "사용"의 번역으로 "Activado"와 "Activada"가 모두 필요할 것입니다. 이 경우 소스 텍스트는 두 경우 모두 "사용"이 되고 컨텍스트는 대화 상자의 클래스 이름이 되지만 두 항목에는 하나는 "양면 인쇄", 다른 하나는 "바인딩"과 같은 모호한 표현이 사용됩니다. 이 모호한 표현을 통해 번역자는 스페인어 버전에 적합한 성별을 선택할 수 있고, Qt는 번역을 구분할 수 있습니다.

여러 번역 사용

애플리케이션에 여러 번역 파일을 설치할 수 있습니다. 번역은 설치된 역순으로 검색되므로 가장 최근에 설치된 번역 파일이 먼저 번역을 검색하고 가장 오래된 번역 파일이 마지막으로 검색됩니다. 일치하는 문자열이 포함된 번역이 발견되는 즉시 검색이 중지됩니다.

이 메커니즘을 통해 특정 번역을 "선택"하거나 다른 번역보다 우선순위를 부여할 수 있습니다. QCoreApplication::removeTranslator() 함수에 전달하여 애플리케이션에서 번역기를 제거한 후 QCoreApplication::installTranslator()로 다시 설치하기만 하면 됩니다. 그러면 일치하는 문자열을 검색할 때 가장 먼저 번역이 검색됩니다.

QCoreApplication::installTranslator(), QCoreApplication::removeTranslator(), QObject::tr(), QCoreApplication::translate(), I18N 예제, Hello tr() 예제, 화살표 패드 예제트롤 인쇄 예제를참조하세요 .

멤버 함수 문서

[explicit] QTranslator::QTranslator(QObject *parent = nullptr)

파일에 연결되지 않은 parent 부모를 가진 빈 메시지 파일 객체를 생성합니다.

[virtual noexcept] QTranslator::~QTranslator()

개체를 파괴하고 할당된 모든 리소스를 해제합니다.

QString QTranslator::filePath() const

로드된 번역 파일의 경로를 반환합니다.

아직 번역이 로드되지 않았거나 로드에 실패했거나 파일에서 번역을 로드하지 않은 경우 파일 경로는 비어 있습니다.

[virtual] bool QTranslator::isEmpty() const

이 번역기가 비어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. 이 함수는 스트리핑된 번역 파일과 스트리핑되지 않은 번역 파일에서 작동합니다.

QString QTranslator::language() const

번역 파일에 저장된 대상 언어를 반환합니다.

bool QTranslator::load(const QString &filename, const QString &directory = QString(), const QString &search_delimiters = QString(), const QString &suffix = QString())

filename + suffix (".qm"( suffix 이 지정되지 않은 경우)(절대 파일 이름 또는 directory 에 상대적일 수 있음)을 로드합니다. 번역이 성공적으로 로드되면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

directory 을 지정하지 않으면 현재 디렉터리가 사용됩니다(예: currentPath()).

이 번역기 객체의 이전 내용은 삭제됩니다.

파일 이름이 존재하지 않으면 다음 순서로 다른 파일 이름을 시도합니다:

  1. suffix 가 추가되지 않은 파일 이름.
  2. search_delimiters 의 문자 뒤에 있는 텍스트가 제거된 파일 이름("_."는 빈 문자열인 경우 search_delimiters 의 기본값) 및 suffix.
  3. suffix 가 추가되지 않은 파일 이름.
  4. 파일 이름이 더 제거된 파일 이름 등

예를 들어 fr_CA 로캘(프랑스어권 캐나다)에서 실행되는 애플리케이션은 load("foo.fr_ca", "/opt/foolib")를 호출할 수 있습니다. 그러면 load()는 이 목록에서 읽기 가능한 첫 번째 파일을 열려고 시도합니다:

  1. /opt/foolib/foo.fr_ca.qm
  2. /opt/foolib/foo.fr_ca
  3. /opt/foolib/foo.fr.qm
  4. /opt/foolib/foo.fr
  5. /opt/foolib/foo.qm
  6. /opt/foolib/foo

일반적으로, 단순히 로캘 이름이 아닌 QLocale::uiLanguages()를 사용하고 날짜와 숫자의 서식을 참조하며 반드시 UI 언어가 아니기 때문에 QTranslator::load(const QLocale &, const QString &, const QString &, const QString &, const QString &) 함수를 대신 사용하는 것이 더 좋습니다.

bool QTranslator::load(const QLocale &locale, const QString &filename, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString())

filename + prefix + ui language name + suffix (".qm"( suffix 이 지정되지 않은 경우)을 로드합니다(절대 파일 이름일 수도 있고 directory 에 상대적일 수도 있음). 번역이 성공적으로 로드되면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

이 번역기 객체의 이전 내용은 삭제됩니다.

파일 이름이 존재하지 않으면 다음 순서로 다른 파일 이름을 시도합니다:

  1. suffix 가 추가되지 않은 파일 이름.
  2. "_" 문자가 제거된 파일 이름과 suffix.
  3. suffix 을 추가하지 않고 ui 언어 부분이 제거된 파일 이름.
  4. ui 언어 부분이 더 제거된 파일 이름 등.

예를 들어, ui languages - "es", "fr-CA", "de"로 구성된 locale 에서 실행되는 애플리케이션은 load(QLocale(), "foo", ".", "/opt/foolib", ".qm")를 호출할 수 있습니다. load()는 '-'(대시)를 ui 언어의 '_'(밑줄)로 바꾼 다음 이 목록에서 기존에 읽기 가능한 첫 파일을 열려고 노력할 수 있습니다:

  1. /opt/foolib/foo.es.qm
  2. /opt/foolib/foo.es
  3. /opt/foolib/foo.fr_CA.qm
  4. /opt/foolib/foo.fr_CA
  5. /opt/foolib/foo.fr.qm
  6. /opt/foolib/foo.fr
  7. /opt/foolib/foo.de.qm
  8. /opt/foolib/foo.de
  9. /opt/foolib/foo.qm
  10. /opt/foolib/foo.
  11. /opt/foolib/foo

파일 시스템이 대소문자를 구분하는 운영 체제에서 QTranslator 는 로캘 이름의 소문자 버전도 로드하려고 시도합니다.

bool QTranslator::load(const uchar *data, int len, const QString &directory = QString())

이 함수는 load()를 오버로드합니다.

길이 len 의 QM 파일 데이터 data 를 번역기로 로드합니다.

데이터는 복사되지 않습니다. 호출자는 data 이 삭제되거나 수정되지 않음을 보장할 수 있어야 합니다.

directory 는 QM 파일의 종속성을 로드할 때 기본 디렉터리를 지정하는 데만 사용됩니다. 파일에 종속성이 없는 경우 이 인수는 무시됩니다.

[virtual] QString QTranslator::translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) const

키에 대한 번역을 반환합니다 (context, sourceText, disambiguation). 찾을 수 없는 경우 (context, sourceText, "")도 시도합니다. 그래도 실패하면 null 문자열을 반환합니다.

참고: 번역이 불완전하면 예기치 않은 동작이 발생할 수 있습니다: (context, sourceText, "")에 대한 번역이 제공되지 않으면 이 경우 메서드는 실제로 다른 disambiguation 에 대한 번역을 반환할 수 있습니다.

n 이 -1이 아닌 경우 번역에 적합한 형식을 선택하는 데 사용됩니다(예: "%n 파일 발견" 대 "%n 파일 발견").

프로그래밍 방식으로 번역을 QTranslator 에 삽입해야 하는 경우 이 함수를 다시 구현할 수 있습니다.

load()도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.