Hinweis auf Meta-Strings
Meta-Strings sind spezielle Kommentare, die lupdate und Qt Linguist zusätzliche Informationen für die Übersetzungsverarbeitung liefern. Sie verwenden spezielle Präfixe, um ihren Zweck zu kennzeichnen, und können in C++-, QML- und Python-Code verwendet werden.
Überblick über die Syntax von Meta-Strings
Meta-Strings sind spezielle Kommentare, die bestimmte Präfixe verwenden, um lupdate mit zusätzlichen Informationen über Übersetzungen zu versorgen:
| Meta-Zeichenkette | Zweck | Verwendung |
|---|---|---|
//: | Zusätzlicher Kommentar für Übersetzer | Bietet Kontext und Hilfestellung für die Übersetzer |
//% | Ausgangstext (technisches Englisch) | Definiert den Anzeigetext für ID-basierte Übersetzungen während der Entwicklung |
//@ | Label für Gruppierung | Organisiert ID-basierte Übersetzungen in logischen Gruppen |
//~ | Zusätzliche Schlüssel-Wert-Metadaten | Speichert zusätzliche benutzerdefinierte Informationen über die Übersetzung |
// TRANSLATOR | Magischer Kommentar für Kontext | Liefert Kontextinformationen über die Klasse oder Datei |
Hinweis: Der Meta-String //= für die Zuordnung von Nachrichten-IDs ist veraltet und sollte in neuem Code nicht mehr verwendet werden.
Übersetzerkommentare (//:)
Verwenden Sie //: Kommentare, um den Übersetzern zusätzlichen Kontext und Anleitung zu geben. Diese Kommentare erscheinen in der Qt Linguist Übersetzungsschnittstelle und helfen dem Übersetzer, die Bedeutung und Verwendung des Textes zu verstehen.
C++ Beispiel
//: Button to navigate backwards in the application tr("Back"); //: This is a file menu item that opens an existing document. //: Keep translation short to fit in menu. tr("Open");
QML-Beispiel
Button {
//: Emergency stop button - must be clearly visible
text: qsTr("STOP")
}Python-Beispiel
#: Button to navigate backwards in the application self.tr("Back") #: This is a file menu item that opens an existing document. #: Keep translation short to fit in menu. self.tr("Open")
Mehrere Übersetzerkommentare können für dieselbe Zeichenfolge verwendet werden und werden in der TS-Datei mit Zeilenumbrüchen verkettet.
TS-Dateiformat
Übersetzerkommentare erscheinen als <extracomment> Elemente in der TS-Datei:
<message> <source>Back</source> <extracomment>Button to navigate backwards in the application</extracomment> <translation type="unfinished"></translation> </message>
Quelltext (//%)
Der Meta-String //% definiert den technischen englischen Text, der während der Entwicklung in der Benutzeroberfläche erscheint, wenn ID-basierte Übersetzungen verwendet werden. Dies ist wichtig, um die Anwendung nutzbar zu machen, bevor die Übersetzungen abgeschlossen sind.
C++ Beispiel
//% "Save Document" qtTrId("file.save"); //% "Found %n items" qtTrId("search.results", count);
QML-Beispiel
Text {
//% "Welcome to the application"
text: qsTrId("welcome.message")
}Wichtige Hinweise
- Parameterplatzhalter (%1, %n) in den Quelltext einfügen
- Der Quelltext sollte produktionsreifes Englisch sein
- Ohne //%-Kommentare erscheint die Text-ID selbst in der Benutzeroberfläche
TS-Dateiformat
Der Quelltext erscheint als Element <source>:
<message id="file.save"> <source>Save Document</source> <translation type="unfinished"></translation> </message>
Bezeichnungen (//@)
Verwenden Sie //@ meta strings, um ID-basierte Übersetzungen in logischen Gruppen oder Kategorien innerhalb von Qt Linguist zu organisieren. Dies ist besonders nützlich für große Projekte mit vielen Übersetzungsstrings.
Hinweis: Der Meta-String //@ ist nur für ID-basierte Übersetzungen (qtTrId/qsTrId) gedacht und sollte nicht mit textbasierten Übersetzungen (tr/qsTr) verwendet werden.
C++ Beispiel
//% "New Document" //@ FileOperations qtTrId("file.new"); //% "Print Document" //@ FileOperations qtTrId("file.print"); //% "Connection failed" //@ NetworkErrors qtTrId("network.error.connection");
QML-Beispiel
Button {
//% "Login"
//@ Authentication
text: qsTrId("auth.login")
}Hinweis: Bezeichnungen sind für Python-Übersetzungen nicht anwendbar, da Python nur textbasierte Übersetzungen (self.tr()) und keine ID-basierten Übersetzungen unterstützt.
Strings mit demselben Label werden in Qt Linguist gruppiert angezeigt, um Übersetzern die Arbeit an verwandten Inhalten zu erleichtern.
Für die automatische Generierung von Bezeichnungen unter Verwendung von Platzhaltern wie <context>, <class>, <file> und deren Kombinationen, siehe Automatische Bezeichnungsgenerierung.
TS-Dateiformat
Labels erscheinen als label Element:
<message id="file.new" label="FileOperations"> <source>New Document</source> <label>FileOperations</label> <translation type="unfinished"></translation> </message>
Zusätzliche Metadaten (//~)
Mit dem Meta-String //~ können Sie beliebige Schlüssel-Wert-Metadaten an Übersetzungen anhängen. Dies kann für die benutzerdefinierte Verarbeitung oder die Anleitung des Übersetzers verwendet werden.
Syntax
//~ key value //~ key "quoted value with spaces"
C++ Beispiel
//% "Error" //: Critical system error dialog //~ Severity High //~ MaxLength "20" //~ Context "Error dialogs" qtTrId("system.error");
QML-Beispiel
Text {
//% "Loading..."
//~ Context "Progress indicators"
//~ ShowDuration "true"
text: qsTrId("progress.loading")
}Python-Beispiel
#~ Severity High #~ Context "Error dialogs" self.tr("Critical system error")
TS-Dateiformat
Zusätzliche Metadaten erscheinen als <extra-*> Elemente in der TS-Datei und können von benutzerdefinierten Tools oder Übersetzungsworkflows verarbeitet werden.
<message id="system.error"> <source>Error</source> <comment>Critical system error dialog</comment> <translation type="unfinished"></translation> <extra-Severity>High</extra-Severity> <extra-MaxLength>20</extra-MaxLength> <extra-Context>Error dialogs</extra-Context> </message>
Erkannte zusätzliche Schlüssel
Während jeder Schlüssel mit //~ verwendet werden kann, wird das no-wrap Flag innerhalb von po-flags von lconvert erkannt. Siehe PO-formatspezifische Optionen.
TRANSLATOR magische Kommentare
TRANSLATOR Kommentare liefern Kontextinformationen über eine Klasse oder Quelldatei, damit Übersetzer verstehen, wo Übersetzungen verwendet werden.
C++ Beispiel
/* TRANSLATOR MainWindow This class contains the main application window interface. All menu items and toolbar buttons are defined here. */ class MainWindow : public QMainWindow { // ... translations for this context };
QML-Beispiel
// TRANSLATOR LoginDialog Login dialog for user authentication Item { Text { text: qsTr("Username") } }
Python-Beispiel
# TRANSLATOR MainWindow # # Main application window containing the primary user interface. # Keep button labels concise due to space constraints. # class MainWindow(QMainWindow): def setupUi(self): self.tr("File") # translations for this context
TS-Dateiformat
TRANSLATOR-Kommentare erscheinen als <message> Elemente mit leerem Quelltext auf dem <context> Element:
<context> <name>Main</name> <message> <source></source> <comment>LoginDialog Login dialog for user authentication</comment> <translation></translation> </message> </context>
Kombinieren von Meta-Strings
Metastrings können kombiniert werden, um umfassende Übersetzungsmetadaten zu erhalten:
Vollständiges C++-Beispiel
//: File dialog - confirm destructive action //: This will permanently delete the selected files //% "Delete Selected Files" //@ FileOperations //~ Severity High //~ RequiresConfirmation "true" qtTrId("file.delete.confirm");
Vollständiges QML-Beispiel
Text {
//: Shows current connection status to server
//: Updates automatically every few seconds
//% "Connected to server"
//@ NetworkStatus
//~ UpdateFrequency "5000ms"
//~ Color "green"
text: qsTrId("status.connected")
}Bewährte Praktiken
- Verwenden Sie großzügig Übersetzerkommentare (//:), um Kontext bereitzustellen.
- Fügen Sie bei ID-basierten Übersetzungen immer den Quelltext (//%) ein
- Gruppieren Sie zusammenhängende Übersetzungen in großen Projekten mit Labels (//@)
- Platzieren Sie Meta-Strings unmittelbar vor dem Aufruf der Übersetzungsfunktion
- Halten Sie die Übersetzerkommentare klar und prägnant, aber informativ
- Konsistente Benennung für Labels und zusätzliche Metadatenschlüssel verwenden
© 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.