Seite 1 von 1

Problem mit Übersetzung

Verfasst: 30. Mai 2007 01:18
von sindri
Hallo Qt-Profis,

ich habe ein kleines Programm mit Qt geschrieben und hänge an einem kleinen Problem mit der automatischen Übersetzung per Linguist und QTranslator.

Was bisher gelaufen ist:
- .pro Datei um die TRANSLATIONS Direktive erweitert und eine Datei "QtUebung_de.ts" dort eingetragen
- lupdate QtUebung.pro laufen lassen
- linguist geöffnet und fleissig übersetzt
- die ts Datei per lrelease QtUebung.pro in das binärfprmat übersetzt
- die main Methode angepasst. Sie sieht nun so aus:

Code: Alles auswählen

int main(int argc, char *argv[])
{
      QApplication app(argc, argv);
      
      
      if(argc == 2)
      {
      		QString *filename = new QString("QtUebung_");
      		filename->append(argv[1]);
      		cout << filename->toStdString() << endl;
      			
      		QTranslator translator;
      		if(translator.load( *filename, "." ))
      		{
      			cout << "Translation File " << filename->toStdString() << " loaded" << endl;
      		}
      		else
      		{
      			cout << "Translation File " << filename->toStdString() << " not loaded" << endl;
      		}
      		app.installTranslator(&translator);
      }      
      
      MainWindow *mainwin = new MainWindow();
      mainwin->show();

      
      return app.exec();
}
Die Ausgabe beim Starten der Anwendung einmal mit Parameter 'de' ergibt:

QtUebung$ ./QtUebung de
QtUebung_de
Translation File QtUebung_de loaded

und einmal mit Parameter 'do':

QtUebung$ ./QtUebung do
QtUebung_do
Translation File QtUebung_do not loaded

In beiden Fällen wird aber die original in englisch programmierte Version gezegt und trotz 'de' im Parameter nicht die Deutsche Übersetzung gewählt, obwohl der load() Befehl im ersten Fall die qm Datei zu finden scheint. Der zweite Fall scheitert zu Recht, da es ja keine QtUebung_do gibt.

Was kann das sein? Wäre für jede Hilfe von euch dankbar!

Michael

Verfasst: 30. Mai 2007 07:46
von Christian81
Abgesehen davon dass ich mir keinen Grund vorstellen kann einen QString mit new zu erzeugen (welche später auch noch leakt da ein delete fehlt) sieht es korrekt aus.
Übersetzt Du auch alles mittels tr()?

Verfasst: 30. Mai 2007 14:50
von sindri
Hallo,

die Sache mit dem Qstring: Ich bin Anfänger und werde das nochmal überdenken. :roll:

Die Sache mit tr(): Ja, selbst in den Quellcode getippelte Texte tragen das tr() und der Rest der vom QtDesigner gemacht wurde trägt das doch bestimmt.

Frage: Ich nehme an nur Texte, die von einem tr() umschlossen sind tauchen auch im Linguist auf und da habe ich derer 55 übersetzt.

Michael

Verfasst: 30. Mai 2007 14:59
von Christian81
Ich sehe eigentlich keinen Fehler... mal das Tutorial von http://doc.trolltech.com/4.2/linguist-hellotr.html probiert ? Das müsste auf alle Fälle gehen.