Hello tr() Beispiel
Übersetzen eines kleinen Hello World-Programms ins Lateinische.
Das Bildschirmfoto zeigt die englische Version.
Weitere Informationen zum Übersetzen von Qt-Anwendungen finden Sie im Qt Linguist Handbuch.
Zeile für Zeile durchgehen
#include <QTranslator>
Diese Zeile enthält die Definition der Klasse QTranslator. Objekte dieser Klasse bieten Übersetzungen für für den Benutzer sichtbaren Text.
QTranslator translator;
Erzeugt ein QTranslator Objekt ohne Elternteil.
Q_UNUSED(translator.load("hellotr_la"));
Versucht, eine Datei namens hellotr_la.qm
zu laden (die Dateierweiterung .qm
ist implizit), die lateinische Übersetzungen für die im Programm verwendeten Quelltexte enthält. Wenn die Datei nicht gefunden wird, tritt kein Fehler auf. Dieses Beispiel funktioniert am besten auf Desktop-Plattformen. Auf Plattformen wie Android und iOS muss die .qm-Datei Teil des App-Bundles sein. Normalerweise bedeutet dies, dass die .qm-Datei in einer Qt-Ressource gebündelt wird.
app.installTranslator(&translator);
Fügt die Übersetzungen von hellotr_la.qm
in den Pool der vom Programm verwendeten Übersetzungen ein.
QPushButton hello(QPushButton::tr("Hello world!"));
Erzeugt eine Drucktaste, die "Hello world!" anzeigt. Wenn hellotr_la.qm
gefunden wurde und eine Übersetzung für "Hello world!" enthält, erscheint die Übersetzung; wenn nicht, erscheint der Quelltext.
Alle Klassen, die QObject erben, haben eine Funktion tr()
. Innerhalb einer Mitgliedsfunktion einer Klasse QObject schreiben wir einfach tr("Hello world!")
anstelle von QPushButton::tr("Hello world!")
oder QObject::tr("Hello world!")
.
Ausführen der Anwendung auf Englisch
Da wir die Übersetzungsdatei hellotr_la.qm
nicht erstellt haben, wird der Quelltext angezeigt, wenn wir die Anwendung ausführen:
Erstellen einer lateinischen Nachrichtendatei
Der erste Schritt besteht darin, eine Projektdatei zu erstellen, die alle Quelldateien für das Projekt auflistet.
Wenn Sie qmake verwenden, sind die relevanten Zeilen in hellotr.pro
:
SOURCES = main.cpp TRANSLATIONS = hellotr_la.ts
TRANSLATIONS
gibt die Nachrichtendateien an, die wir pflegen wollen. In diesem Beispiel pflegen wir nur einen Satz von Übersetzungen, nämlich Latin.
Wenn Sie CMake verwenden, sind die relevanten Zeilen in CMakeLists.txt
:
find_package(Qt6 REQUIRED COMPONENTS LinguistTools) qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES la) qt6_add_translations(hellotr QM_FILES_OUTPUT_VARIABLE qm_files) install(FILES ${qm_files} DESTINATION ${INSTALL_EXAMPLEDIR})
Beachten Sie, dass die Dateierweiterung .ts
lautet, nicht .qm
. Das .ts
Übersetzungsquellformat ist für die Verwendung während der Entwicklung der Anwendung gedacht. Programmierer oder Release-Manager führen das Programm lupdate
aus, um TS-Dateien mit dem aus dem Quellcode extrahierten Text zu erzeugen und zu aktualisieren. Übersetzer lesen und aktualisieren die TS-Dateien durch Qt Linguist Hinzufügen und Bearbeiten ihrer Übersetzungen.
Das TS-Format ist menschenlesbares XML, das direkt per E-Mail verschickt werden kann und sich leicht unter Versionskontrolle stellen lässt. Wenn Sie diese Datei manuell bearbeiten, beachten Sie bitte, dass die Standardkodierung für XML UTF-8 und nicht Latin1 (ISO 8859-1) ist. Eine Möglichkeit, ein Latin1-Zeichen wie "ø" (norwegisches o mit Schrägstrich) einzugeben, ist die Verwendung einer XML-Entität: "ø". Dies funktioniert für jedes Unicode 4.0-Zeichen.
Sobald die Übersetzungen abgeschlossen sind, wird das Programm lrelease
verwendet, um die TS-Dateien in das QM-Qt-Nachrichtenformat zu konvertieren. Das QM-Format ist ein kompaktes Binärformat, das für eine sehr schnelle Suchleistung konzipiert ist. Sowohl lupdate
als auch lrelease
lesen alle Quell- und Headerdateien des Projekts (wie in den HEADERS- und SOURCES-Zeilen der Projektdatei angegeben) und extrahieren die Strings, die in tr()
Funktionsaufrufen erscheinen.
lupdate
wird verwendet, um die Nachrichtendateien zu erstellen und zu aktualisieren (in diesem Fallhellotr_la.ts
), um sie mit dem Quellcode synchron zu halten. Sie können lupdate
jederzeit ausführen, da lupdate
keine Informationen entfernt.
Versuchen Sie, lupdate
jetzt auszuführen.
Wenn Sie qmake verwenden, muss lupdate
manuell ausgeführt werden:
lupdate -verbose hellotr.pro
(Die Option -verbose
weist lupdate
an, Meldungen anzuzeigen, die erklären, was es tut.)
Wenn Sie CMake verwenden, erstellen Sie das Ziel update_translations
, um lupdate
auszuführen:
cmake --build . --target update_translations
Sie sollten nun eine Datei hellotr_la.ts
im Quellverzeichnis haben, die dies enthält:
<!DOCTYPE TS><TS> <context> <name>QPushButton</name> <message> <source>Hello world!</source> <translation type="unfinished"></translation> </message> </context> </TS>
Sie brauchen das Dateiformat nicht zu verstehen, da es mit Hilfe von Werkzeugen gelesen und aktualisiert wird (lupdate
, Qt Linguist, lrelease
).
Übersetzen ins Lateinische mit Qt Linguist
Wir verwenden Qt Linguist um die Übersetzung zu erstellen, obwohl Sie jeden XML- oder einfachen Texteditor verwenden können, um eine Übersetzung in eine TS-Datei einzugeben.
Um zu beginnen Qt Linguistein.
linguist hellotr_la.ts
Sie sollten nun den Text "QPushButton" im linken oberen Fensterbereich sehen. Doppelklicken Sie darauf, klicken Sie dann auf "Hello world!" und geben Sie "Orbis, te saluto!" in den Bereich Translation (rechts in der Mitte des Fensters) ein. Vergessen Sie das Ausrufezeichen nicht!
Klicken Sie auf das Kontrollkästchen Done und wählen Sie File|Save in der Menüleiste. Die TS-Datei enthält dann nicht mehr
<translation type='unfinished'></translation>
sondern enthält stattdessen
<translation>Orbis, te saluto!</translation>
Ausführen der Anwendung in Latein
Um zu sehen, wie die Anwendung in Latein läuft, müssen wir eine QM-Datei aus der TS-Datei erzeugen. Das Erzeugen einer QM-Datei kann entweder aus Qt Linguist (für eine einzelne TS-Datei) oder mit dem Kommandozeilenprogramm lrelease
, das eine QM-Datei für jede der in der Projektdatei aufgeführten TS-Dateien erzeugt. Erzeugen Sie hellotr_la.qm
aus hellotr_la.ts
, indem Sie File|Release aus Qt Linguistwählen und in dem sich öffnenden Dialogfenster zum Speichern der Datei Save drücken. Starten Sie nun das Programm hellotr
erneut. Diesmal wird die Schaltfläche mit "Orbis, te saluto!" beschriftet sein.
© 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.