Seite 1 von 1

Online-Übersetzung von Eingaben

Verfasst: 27. Oktober 2012 18:40
von Tuxing
Hallo zusammen,

ich habe folgendes Problem: Mein Programm lädt aus einer Datenbank eine Liste von Begriffen, die dem Benutzer in einer Liste bzw. einem LineEdit angezeigt werden. Alle Begriffe sind auf Deutsch in der Datenbank eingetragen. Jetzt soll das Programm um die Sprache Englisch erweitert werden. Die Sprachauswahl funktioniert soweit auch. Es werden auch alle GUI Elemente übersetzt. Die Frage ist aber, wie ich diesen Begriffe aus der Datenbank übersetzen kann ? Gibt es eine Möglichkeit das Programm dazu zu bringen, dass immer, bevor ein QString in einem LineEdit angezeigt wird, in die Sprachdatei nach einer Übersetzung zu schauen ? Bzw. wenn ich die Begriffe in einem ListWidget anzeige und die Sprache wechsel, dass auch diese Begriffe dann übersetzt werden ?

Grüße
tuxing

Re: Online-Übersetzung von Eingaben

Verfasst: 28. Oktober 2012 09:08
von Christian81
QObject::tr() und co sind hier gefragt.

Re: Online-Übersetzung von Eingaben

Verfasst: 29. Oktober 2012 20:52
von Tuxing
aber dann stünde in meinem Textfeld sowas beispielsweise:

Code: Alles auswählen

label.setText(my_string_from_database);
Die Variable my_string_from_database kann jetzt Beispielsweise die Werte "rot", "grün" und "blau" haben. Aber wenn ich die tr Funktion verwende, kennt der QtLinguist, mit dem ich die Übersetzungen ja erzeugen könnte, die Variablen dennoch nicht. Ich habe mir deshalb einen eigenen Übersetzer für solche Fälle implementiert. Funktioniert prima.
Oder gibt es dennoch eine Möglichkeit die translate Funktionen von Qt zu verwenden ?

Danke schonmal für den ersten Hinweis.

Grüße

Re: Online-Übersetzung von Eingaben

Verfasst: 30. Oktober 2012 08:54
von Christian81
Man muss dem Linguist natürlich die Texte geben. Lesen hilft: http://qt-project.org/doc/qt-4.8/intern ... ation.html

Re: Online-Übersetzung von Eingaben

Verfasst: 30. Oktober 2012 20:51
von Tuxing
hm .. ok ich hätte mir zwar eher konstruktive Anregungen gewünscht, aber danke. Den Artikel hatte ich vorher schon gelesen. Was dort interessant ist, ist folgende Codefragment:

Code: Alles auswählen

 QString FriendlyConversation::greeting(int type)
 {
     static const char *greeting_strings[] = {
         QT_TR_NOOP("Hello"),
         QT_TR_NOOP("Goodbye")
     };
     return tr(greeting_strings[type]);
 }
Allerdings ist das für meinen Anwendungsfall absoluter quatsch. Ich müsste sämtliche meiner Vokabeln hier angeben und dann noch nach der richtigen jeweils suchen. Genau das habe ich in meinem eigenen Übersetzer ja getan. In dem Punkt kann ich mir den Linguist dann auch sparen. Ich entnehme der eher spärlichen Antwort also mal, dass es nicht möglich ist dem Linguist einfach eine Art Wörterbuch beizubringen, sodass mit der tr-Funktion dann beliebige Wörter übersetzt werden können.

Dennoch danke.

Re: Online-Übersetzung von Eingaben

Verfasst: 30. Oktober 2012 22:13
von Christian81
Ob Du die zu übersetzenden Texte extra irgendwo angibst oder als QT_TR_NOOP und dann einfach mittels tr() & linguist übersetzt und extra noch etwas hand-made programmierst - da würde ich doch eher auf linguist setzen. Aber ist deine Sache.