2011-01-11 1 views
1

In einer Anwendung habe ich viele Klassen, die anscheinend keine Nachkommen von QObject sind, und diese Objekte werfen anscheinend Ausnahmen, und diese Ausnahmen müssen anscheinend übersetzt werden. Also habe ich jede in Ausnahme geworfene Zeichenkette in das Makro QT_TR_NOOP eingeschlossen. So konnte ich Übersetzungsdateien erzeugen. Aber wenn ich mein Programm starte, werden Zeichenfolgen immer noch nicht übersetzt. Wenn ich versuche, sie über QApplication :: translate ("MyClassName", "Text in Englisch") zu bekommen, kann ich Strings in Ordnung, aber QT_TR_NOOP ("Text in Englisch") gibt nur Text in Englisch zurück. Gibt es zusätzliche Schritte, die ich ergreifen sollte, damit es richtig funktioniert?QT_TR_NOOP: Übersetzungsdateien werden generiert, aber übersetzte Zeichenfolgen werden nie verwendet, warum?

Auch eine kleine Nebenfrage: wenn ich QT_TR_NOOP in einer Funktion verwende, die kein Mitglied einer Klasse ist, was wird passieren? Versteht Qt diese Situation einfach still?

Antwort

4

Es scheint, dass ich die ganze Sache falsch verstanden :(

QT_TR_NOOP ist für Strings für die Übersetzung außerhalb Funktionen Kennzeichnung;. Es soll Originaltext zurückzukehren Was ich brauchte, war die Übersetzungen für die Nicht-qt Klassen anzuwenden im Detail, die hier beschrieben wird.?

Internationalization with Qt: Translating Non-Qt Classes

Sorry für die Mühe

3

QT_TR_NOOP markiert den Text nur als etwas, das übersetzt werden muss (so dass er in Qt Linguist angezeigt wird), aber er übersetzt nicht. Dafür müssen Sie tr() verwenden.

+0

Also muss ich zweimal übersetzten Text einzubetten Einmal in QT_TR_NOOP und wieder in tr() gibt es eine einfachere Lösung? – Septagram