Qt Quick I18N
Generierung von Übersetzungsdateien (TS und QM) für eine Qt Quick Anwendung.
Wenn Sie die Beispielanwendung ausführen, lädt die QML Runtime automatisch eine Übersetzung aus dem Unterverzeichnis i18n
des Verzeichnisses, das die Haupt-.qml-Datei enthält, basierend auf der Systemsprache.
Text als übersetzbar markieren
Verwenden Sie in der Datei Main.qml
den Befehl qsTr
, um UI-Text als übersetzbar zu markieren:
Text { text: qsTr("Hello")
Aktivieren der Übersetzung
Verwenden Sie in der Datei main.cpp
den Befehl QQmlApplicationEngine, um automatisch Übersetzungsdateien aus einem Unterverzeichnis namens i18n
in das Verzeichnis zu laden, das die Haupt-QML-Datei enthält:
#include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine;
Die Namen der Übersetzungsdateien im Unterverzeichnis i18n
müssen das Präfix qml_
haben. Zum Beispiel: qml_en_AU.ts
.
Erstellen von Übersetzungsdateien
Fügen Sie das Modul LinguistTools
als Wert des Befehls find_package
in die Datei CMakeLists.txt
ein:
find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Qml LinguistTools)
Definieren Sie die zu erzeugenden Übersetzungsdateien mit dem Befehl qt_add_translations:
qt_add_translations(qmli18n RESOURCE_PREFIX /qt/qml/Translated/i18n TS_FILE_BASE qml TS_FILE_DIR i18n )
Erstellen Sie die Anwendung, um TS- und QM-Dateien zu erzeugen.
Hinweis: Stellen Sie unter Android sicher, dass Sie die QM-Dateien als Ressourcen einbinden.
Hinzufügen von Übersetzungen
Um Übersetzungen für neue Sprachen zu erstellen, kopieren Sie i18n/base.ts nach i18n/qml_<lang>.ts. Sie können Qt Linguist verwenden, um die Zeichenketten zu übersetzen.
© 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.