Ich möchte ein C++ GUI Projekt auf ID basierte übersetzungen umstellen.
Also von tr() auf qtTrId().
Das ganze soll mit möglichst wenig Aufwand umgestellt werden. Im idealfall sollewn die bestehenden tr() übersetzungen übernommen werden.
Hat damit jemand Erfahrungen?
Insbesonders die übersetzungen in den Designer .ui forms machen mir Probleme.
im .pro file habe ich folgendes hinzugefügt:
Code: Alles auswählen
CODECFORTR = UTF-8
load (uic)
uic.commands += --idbased
Das scheint auch zu funktionieren. In der ui_... Datei steht so etwas.
Code: Alles auswählen
void retranslateUi(QWidget *icDockableWinTemplatePanel)
{
label_2->setText(qtTrId("A_ID"));
} // retranslateUi
Code: Alles auswählen
<context>
// <unnamed context> wo die anderen qtTrId() übersetzungen aus den nicht designer klassen enthalten sind
// zum Beispiel:
<message id="ANOTHER_ID">
<location filename="../x.h" line="101"/>
<source>test</source>
<extracomment>comment</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>icDockableWinTemplatePanel</name>
<message>
<location filename="../icDockableWinTemplatePanel.ui" line="20"/>
<source>A_ID</source>
<translation type="unfinished">vorherige übersetzung</translation>
</message>
</context>
- für icDockableWinTemplatePanel gibt es weiterhin eine Context Gruppe. So wie ich es verstanden habe kann man mit qtTrId() keine Kontext gruppen mehr defionieren. Die icDockableWinTemplatePanel übersetzungen sollten auch im <unnamed context> stehen.
- das message "id" attribut fehlt.
Prizipiel (In den nicht UI Klassen) geht die übersetzung mit qtTrId(). Wenn ich für die ui strings im Linguist eine übersetzung eintrage und die .qm Dateien erzeuge erscheint für die ui Designer Klassen keine übersetzung.
Die Informationen im Web zur Id basierten übersetzung sind leider sehr spärlich.
Weiß vielleicht jemand wie man Id basierten übersetzungen im UI Designer anwendet bzw. verwendet?
Gruß Gerd