Ich habe ein Qt-Projekt, das XML-Dateien verwendet. Diese XML-Dateien enthalten lesbaren Text und dieser Text sollte mithilfe der Qt-Tools (lupdate, lrelease, QtLinguist) übersetzt werden.
Die Frage ist, ob es möglich ist, Einträge in .ts-Datei über lupdate zu erzeugen, ohne die Zeichenfolgen aus den XML-Dateien in einer Quellcodedatei mit dem Makro QT_TR_NOOP () und Freunden zu duplizieren. Oder im Allgemeinen, wie übersetzt man Zeichenfolgen in Nicht-Quelldateien für Qt-Projekte?
Wir hatten das gleiche Problem: XML-Dateien mit lesbaren Zeichenfolgen.
Unsere Lösung bestand darin, sicherzustellen, dass lesbare Strings in den XML-Dateien einfach zu extrahieren waren (wir haben sie in ein LABEL
-Attribut gesetzt) und ein kleines Tool entwickelt, das die XML-Dateien analysiert, die Strings extrahiert und generiert einen Kontext (durch Extrahieren von Daten aus der XML-Datei) und dann Generieren einer CPP-Headerdatei mit einer Liste von QT_TR_NOOP()
.
Diese Datei wurde zu unserer Projektdatei (.pro) hinzugefügt, die von lupdate
verwendet wurde.
Diese Lösung war für uns in Ordnung, aber wir mussten bei zwei Dingen sehr vorsichtig sein:
Sie können alles, was Sie zur Laufzeit benötigen, mit tr () übersetzen, solange die .qm-Datei eine passende Übersetzung / Kontext hat. Es sollte keinen Unterschied machen, ob lupdate es extrahiert oder nicht.
Ich weiß nicht, wie man Lupdate dazu bringt, Strings aus beliebigem XML zu extrahieren, aber das bedeutet nicht, dass man Linguisten nicht verwenden kann.
Wenn Sie wirklich alles in einer Datei für den Übersetzer haben möchten, lassen Sie Ihre XSLT die lupdate-generierte Datei in ihre Ausgabe kopieren.
Solange Sie einen Kontextnamen verwenden, der nichts im Quellcode dupliziert, sollte dies (aus der Sicht von Qt) nicht anders sein als die Art und Weise, wie viele Apps eine .qm für jede DLL laden hat GUI.
Tags und Links c++ qt translation