Auf dieser Seite

Lokalisierung von Anwendungen

Die Schritte zur Lokalisierung von Anwendungen umfassen das Erstellen übersetzbarer Anwendungen, deren Vorbereitung für die Übersetzung, das Übersetzen der Zeichenfolgen sowie das Erstellen von Laufzeit-Übersetzungsdateien für die veröffentlichte Anwendung.

Qt Quick Sowohl QML- als auch Qt-C++-Anwendungen nutzen dasselbe zugrunde liegende Lokalisierungssystem: „ lupdate “, „ lrelease “ sowie die daraus generierten Übersetzungsquelldateien (TS-Dateien) und QM-Dateien. Sie verwenden für QML- und C++-Code dieselben Werkzeuge, wie im Handbuch „Qt Linguist “ beschrieben.

Sie können sogar Benutzeroberflächen-Strings in QML- und C++-Quelldateien innerhalb derselben Anwendung verwenden. Das System erstellt eine einzige kombinierte Übersetzungsdatei, und die Strings sind sowohl aus dem QML- als auch aus dem C++-Code zugänglich.

So lokalisieren Sie internationalisierte Anwendungen:

Übersetzungsquellen in Qt-Projektdateien festlegen

Damit „ lupdate “ und „ lrelease “ TS- und QM-Dateien generieren können, müssen Sie die Anwendungsprojektdatei aktualisieren und die Quelldateien angeben, die den zu übersetzenden Text enthalten.

Verwenden Sie ISO-Sprach- und Ländercodes im TS-Dateinamen, um die Sprache zu bestimmen, die zur Laufzeit geladen werden soll. Weitere Informationen finden Sie unter „Übersetzung aktivieren“.

Das Tool „ lupdate “ extrahiert Zeichenfolgen der Benutzeroberfläche aus Ihrer Anwendung. Es geht standardmäßig davon aus, dass der gesamte Quellcode in UTF-8 kodiert ist. Weitere Informationen finden Sie unter „Kodierung“.

Verwendung von CMake

Stellen Sie die CMake-Befehle von Qt für die Internationalisierung bereit, indem Sie das Paket „ Qt6LinguistTools “ laden.

cmake_minimum_required(VERSION 3.16)
project(myproject)
find_package(Qt6 COMPONENTS Core LinguistTools)

Deklarieren Sie die unterstützten Sprachen mit dem Argument „ I18N_TRANSLATED_LANGUAGES “ von ` qt_standard_project_setup()`.

# Declare that the project will have a German and a French translation.
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES de fr)

Es wird davon ausgegangen, dass der Quellcode übersetzbare Zeichenfolgen in englischer Sprache enthält. Sie können die Sprache der Zeichenfolgen im Quellcode mit dem Parameter „ qt_standard_project_setup “ I18N_SOURCE_LANGUAGE anpassen.

Rufen Sie den Befehl ` qt_add_translations()` für das Ziel auf, das die ` .qm `-Dateien zur Laufzeit laden soll.

qt_add_translations(myapplication)

Falls diese noch nicht vorhanden sind, werden dadurch die Dateien „ myproject_de.ts “ und „ myproject_fr.ts “ erstellt. Informationen dazu, wie diese Dateinamen gebildet werden, finden Sie unter „Automatische Ermittlung von .ts-Dateipfaden “.

Dieser Befehl erstellt außerdem die Datei „ myproject_en.ts “, bei der es sich um die reine Plural-Übersetzungsdatei handelt. Weitere Details finden Sie unter „Umgang mit Pluralformen “. Die Erstellung der reinen Plural-Datei kann mit dem Argument „ NO_GENERATE_PLURALS_TS_FILE “ deaktiviert werden.

Alle Quelldateien aller Ziele im Projekt werden als Eingaben für die Erstellung der „ .ts “-Dateien berücksichtigt. Weitere Informationen dazu, wie die Ziele des Projekts erfasst werden und wie man Ziele und einzelne Quelldateien ausschließen kann, finden Sie in der Referenzdokumentation zu `qt_add_translations()`.

Verwendung von qmake

Wenn Sie qmake verwenden, fügen Sie eine bedingte Anweisung ein, um die QML-Quelldatei vor dem Compiler zu verbergen, die Sie im Eintrag „ SOURCES “ oder „ HEADERS “ in der .pro-Datei aufgeführt haben.

Die Variable `SOURCES` ist für C++-Quelldateien vorgesehen. Wenn Sie dort QML- oder JavaScript-Quelldateien auflisten, versucht der Compiler, diese so zu kompilieren, als wären es C++-Dateien. Als Workaround können Sie eine bedingte Anweisung vom Typ ` lupdate_only{...} ` verwenden, damit das Tool ` lupdate ` die `.qml`-Dateien erkennt, der C++-Compiler sie jedoch ignoriert.

Der folgende Ausschnitt aus einer .pro-Datei gibt beispielsweise zwei .qml-Dateien in der Anwendung an.

lupdate_only{
SOURCES = main.qml \
          MainPage.qml
}

Sie können die .qml-Quelldateien auch mit einem Platzhalter angeben. Die Suche erfolgt nicht rekursiv, daher müssen Sie jedes Verzeichnis angeben, das Quelldateien mit UI-Strings enthält:

lupdate_only{
SOURCES = *.qml \
          *.js \
          content/*.qml \
          content/*.js
}

Übersetzungen bereitstellen

Der einfachste Weg, „ .qm “-Dateien bereitzustellen, besteht darin, sie in Qt-Ressourcen einzubetten. Der CMake-Befehl `qt_add_translations()` übernimmt dies automatisch. Die „ .qm “-Dateien sind unter dem Ressourcenpräfix „ ":/i18n" “ zugänglich.

# Automatically embed generated .qm files.
qt_add_translations(myapplication)

Alternativ können die „ .qm “-Dateien in einem Verzeichnis im Dateisystem bereitgestellt werden. Dies ist bei größeren Anwendungen empfehlenswert, die nicht alle verfügbaren Übersetzungen im Arbeitsspeicher vorhalten möchten. Übergeben Sie das Argument „ QM_FILES_OUTPUT_VARIABLE “ an „qt_add_translations()“. Der Befehl speichert die Liste der generierten „ .qm “-Dateien in der angegebenen Variablen. Verwenden Sie die regulären Installationsbefehle von CMake für die Dateinamen in dieser Liste.

# Do not embed generated .qm files.
qt_add_translations(myapplication
    QM_FILES_OUTPUT_VARIABLE qm_files
)

# Install generated .qm files.
install(FILES ${qm_files} DESTINATION translations)

Speichern Sie die für die Anwendung erforderlichen „ .qm “-Dateien an einem Ort, an dem der Lader-Code, der ` QTranslator ` verwendet, sie finden kann. In der Regel geben Sie einen relativen Pfad zu ` QCoreApplication::applicationDirPath()` an.

Zusätzlich zu den QM-Dateien der Anwendung müssen Sie die QM-Dateien für die Qt-Module bereitstellen, die Sie in der Anwendung verwenden, sofern diese nicht bereits auf dem System installiert sind.

Die QM-Dateien sind nach Modulen aufgeteilt, und es gibt eine sogenannte Metakatalogdatei, die die QM-Dateien aller Module enthält. Sie müssen jedoch nur die QM-Dateien für die Module bereitstellen, die Sie in der Anwendung verwenden.

Sie können im Bereitstellungsschritt das Tool „ lconvert “ verwenden, um die erforderlichen QM-Dateien zu einer Datei zusammenzufügen, die mit der Metakatalogdatei übereinstimmt. Um beispielsweise eine deutsche Übersetzungsdatei für eine Anwendung zu erstellen, die das Qt Core, Qt GUI, und Qt Quick verwendet, führen Sie folgenden Befehl aus:

lconvert -o installation_folder/qt_de.qm qtbase_de.qm qtdeclarative_de.qm

Qt-Modulübersetzungen verwenden

Qt-Module enthalten mehrere Tausend Zeichenfolgen, die ebenfalls in die von Ihnen angestrebten Sprachen übersetzt werden müssen. Im Repository „qttranslations“ finden Sie eine Reihe von TS-Dateien. Bevor Sie mit der Übersetzung von Qt beginnen, lesen Sie bitte die Wiki-Seite „Translating Qt Into Other Languages“.

Qt-Übersetzungen finden

Mit ` QLibraryInfo::path()` können Sie die Übersetzungen für die Qt-Module finden, die Ihre Anwendung verwendet. Sie können den Pfad zu den Übersetzungen zur Laufzeit abfragen, indem Sie dieser Funktion ` QLibraryInfo::TranslationsPath ` übergeben.

Verfügbare Kataloge

Die Qt-Übersetzungskataloge befinden sich im Repository „ qttranslations “.

Warnung: Qt-Übersetzungen werden von der Qt-Community bereitgestellt und unterliegen keinerlei Gewährleistung. Übersetzungen können fehlen, veraltet oder völlig falsch sein – bis hin zu böswilligen Inhalten. Es wird empfohlen, alle von Ihnen ausgelieferten Übersetzungen zu überprüfen.

In Qt 4 gibt es pro Sprachversion eine große, monolithische „ .qm “-Datei. Beispielsweise enthält die Datei „ qt_de.qm “ die deutsche Übersetzung aller Bibliotheken.

Der Metakatalog „ qt_ “ enthält die noch vorhandenen Qt-Übersetzungen, die in Qt 4 im Katalog „ qt_ “ enthalten waren. Er wurde erstellt, um die Portierung von Anwendungen von Qt 4 auf Qt 5 zu vereinfachen. Der Metakatalog ist von Übersetzungen abhängig, die möglicherweise fehlen, da sie zu nicht mehr benötigten oder veralteten Modulen gehören, was dazu führen kann, dass das Laden der Übersetzungen fehlschlägt. Wenn Sie in Ihrer Anwendung Module verwenden, die neu in Qt 5 oder einer späteren Version sind, müssen Sie die Namen der Kataloge für diese Module angeben, auch wenn Sie den Metakatalog verwenden.

Die folgende Tabelle listet die für die Qt-Module und -Tools in Qt verfügbaren Übersetzungskataloge auf.

Qt-Modul oder -ToolKatalog
Qt Bluetoothqtconnectivity
Qt Concurrentqtbase
Qt Coreqtbase
Qt D-Busqtbase
Qt Widgets Designerdesigner
Qt GUIqtbase
Qt Helpqt_help
Qt Linguistlinguist
Qt Locationqtlocation
Qt Multimediaqtmultimedia
Qt Networkqtbase
Qt NFCqtconnectivity
Qt Print Supportqtbase
Qt Qmlqtdeclarative
Qt Quickqtdeclarative
Qt Quick Controlsqtdeclarative
Qt Quick Widgetsqtdeclarative
Qt Serial Portqtserialport
Qt SQLqtbase
Qt Widgetsqtbase
Qt WebSocketsqtwebsockets
Qt WebEngineqtwebengine

Beispiel: Wichtige Qt-Module

Um beispielsweise Übersetzungen für wichtige Qt-Module wie Qt Core, Qt GUI, Qt Network und Qt Widgets zu finden, fügen Sie den folgenden Code zur Funktion „ main() “ hinzu:

    QTranslator qtTranslator;
    if (qtTranslator.load(QLocale::system(), u"qtbase"_s, u"_"_s,
                          QLibraryInfo::path(QLibraryInfo::TranslationsPath))) {
        app.installTranslator(&qtTranslator);
    }

© 2026 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.