Referenz zu Metazeilen
Meta-Strings sind spezielle Kommentare, die „lupdate“ und „ Qt Linguist “ zusätzliche Informationen für die Übersetzungsverarbeitung liefern. Sie verwenden bestimmte Präfixe, um ihren Zweck zu kennzeichnen, und können in C++-, QML- und Python-Code verwendet werden.
Übersicht über die Syntax von Metazeichenfolgen
Meta-Strings sind spezielle Kommentare, die mithilfe bestimmter Präfixe lupdate zusätzliche Informationen zu Übersetzungen liefern:
| Meta-String | Zweck | Verwendung |
|---|---|---|
//: | Zusätzlicher Kommentar für Übersetzer | Liefert Kontext und Hilfestellung für Übersetzer |
//% | Quelltext (Technisches Englisch) | Definiert den Anzeigetext für ID-basierte Übersetzungen während der Entwicklung |
//@ | Bezeichnung für die Gruppierung | Organisiert ID-basierte Übersetzungen in logische Gruppen |
//~ | Zusätzliche Schlüssel-Wert-Metadaten | Speichert zusätzliche benutzerdefinierte Informationen zur Übersetzung |
// TRANSLATOR | Magischer Kommentar zum Kontext | Stellt Kontextinformationen zur Klasse oder Datei bereit |
Hinweis: Die Metazeile „ //= “ für die Zuordnung von Nachrichten-IDs ist veraltet und sollte in neuem Code nicht mehr verwendet werden.
Kommentare für Übersetzer (//:)
Verwenden Sie „ //: “-Kommentare, um Übersetzern zusätzlichen Kontext und Anleitungen zu geben. Diese Kommentare erscheinen in der Übersetzungsoberfläche von „ Qt Linguist “ und helfen Übersetzern, 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")Für dieselbe Zeichenfolge können mehrere Übersetzerkommentare verwendet werden; diese werden in der TS-Datei mit Zeilenumbrüchen aneinandergehängt.
TS-Dateiformat
Übersetzerkommentare erscheinen in der TS-Datei als „ <extracomment> “-Elemente:
<message>
<source>Back</source>
<extracomment>Button to navigate backwards in the application</extracomment>
<translation type="unfinished"></translation>
</message>Quelltext (//%)
Die Metazeile „ //% “ definiert den technischen englischen Text, der während der Entwicklung bei der Verwendung von ID-basierten Übersetzungen in der Benutzeroberfläche angezeigt wird. Dies ist unerlässlich, um die Anwendung bereits vor Fertigstellung der Übersetzungen nutzbar zu machen.
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
- Fügen Sie Parameterplatzhalter (%1, %n) in den Quelltext ein
- 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 „ //@ “-Metazeilen, 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: Die Metazeile „ //@ “ ist ausschließlich für ID-basierte Übersetzungen (qtTrId/qsTrId) vorgesehen und sollte nicht bei 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: Labels sind für Python-Übersetzungen nicht anwendbar, da Python nur textbasierte Übersetzungen (self.tr()) und keine ID-basierten Übersetzungen unterstützt.
Zeichenfolgen mit derselben Bezeichnung werden in Qt Linguist gruppiert angezeigt, was Übersetzern die Arbeit an verwandten Inhalten erleichtert.
Informationen zur automatischen Label-Generierung mithilfe von Platzhaltern wie <context>, <class>, <file> und deren Kombinationen finden Sie unter „Automatische Label-Generierung“.
TS-Dateiformat
Bezeichnungen werden als label -Element dargestellt:
<message id="file.new" label="FileOperations">
<source>New Document</source>
<label>FileOperations</label>
<translation type="unfinished"></translation>
</message>Zusätzliche Metadaten (//~)
Mit der Metazeile „ //~ “ können Sie Übersetzungen beliebige Schlüssel-Wert-Metadaten hinzufügen. Dies kann für benutzerdefinierte Verarbeitungsprozesse oder als Hilfestellung für Übersetzer genutzt 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 in der TS-Datei als „ <extra-*> “-Elemente 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
Zwar kann jeder Schlüssel mit ` //~` verwendet werden, doch wird das Flag „ no-wrap “ innerhalb von ` po-flags ` von ` lconvert` erkannt. Siehe PO-formatspezifische Optionen.
TRANSLATOR-Magic-Kommentare
TRANSLATOR Kommentare liefern Kontextinformationen zu einer Klasse oder einer Quelldatei, um Übersetzern zu verdeutlichen, 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 contextTS-Dateiformat
TRANSLATOR-Kommentare erscheinen als „ <message> “-Elemente mit leerem Quelltext im „ <context> “-Element:
<context>
<name>Main</name>
<message>
<source></source>
<comment>LoginDialog Login dialog for user authentication</comment>
<translation></translation>
</message>
</context>Kombination von Metazeilen
Metazeichenfolgen können kombiniert werden, um umfassende Übersetzungsmetadaten bereitzustellen:
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 Vorgehensweisen
- Verwenden Sie Übersetzerkommentare (//:) großzügig, um Kontext bereitzustellen
- Fügen Sie bei ID-basierten Übersetzungen immer den Quelltext (//%) ein
- Gruppieren Sie verwandte Übersetzungen in großen Projekten mithilfe von Labels (//@)
- Platzieren Sie Metazeilen unmittelbar vor dem Aufruf der Übersetzungsfunktion
- Halten Sie Übersetzerkommentare klar und prägnant, aber informativ
- Verwenden Sie eine einheitliche Namensgebung für Labels und zusätzliche Metadaten-Schlüssel
© 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.