Sprache von QPrintDialog

Alles rund um die Programmierung mit Qt
Antworten
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Sprache von QPrintDialog

Beitrag von comer352l »

Hallo zusammen,

ich habe das Problem, dass QPrintDialog bei mir unter Linux grundsätzlich in englischer Sprache ausgegeben wird. Die Systemsprache steht auf deutsch und QPrintDialog::locale() ergibt auch, dass "deutsch" eingestellt ist.
Unter Windows erscheint der Dialog wie gewünscht in der Systemsprache.

Außerdem würde ich ich Sprache des Dialogs gerne einstellen können, was eigentlich z.B. mit QPrintDialog::setLocale(QLocale::French) gehen sollte ?
Sowohl unter Winows als auch unter Linux ändert sich da aber gar nix...

Woran könnte das liegen bzw. was mache ich falsch ?
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Das Problem hatte ich auch. Korrektes laden der deutschen Übersetzungen in meiner main.cpp hat geholfen:

Code: Alles auswählen

   QApplication app( argc, argv );

	// Lade deutsche Übersetzung aus den Resourcen:
	QString translatorFileName = QLatin1String("qt_");
	translatorFileName += QLocale::system().name();
	QTranslator *translator = new QTranslator(&app);

	if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
		app.installTranslator(translator);
HTH,
F.
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

Hast recht, wenn man denn passenden Translator manuell installiert, dann klappts.
Das bedeutet auch, dass eigentlich alle Dialoge (z.B. auch QFileDialog) betroffen sind.
Das wäre dann aber ein ziemlich fetter Bug, der eigentlich schon längst jemandem hätte auffallen müssen ??! Daran will ich irgenwie nicht so recht glauben, zumal mir das in Bezug auf QPrintDialog schon seit mindestens Qt4.3.1 aufgefallen ist...

Wie steht's denn mit dem Ändern der Dialog-Sprachen ? Liege ich da mit setLocale(...) richtig ?
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Mit QLocale änderst du nur die Formatierung von Zahlen und Zeichen -> Doku. Und abgesehen davon, dass ich nicht wüßte, warum man bei einzelnen Dialogen die Sprache ändern möchte, würde ich tippen, das das auch irgendwie mit installTranslator und removeTranslator gehen müsste.

Und was das grundsätzliche Problem angeht, dass unter Linux erstmal alle Dialoge in Englisch dargestellt werden und unter Windows in Deutsch, scheint auf einen Unterschied zwischen Linux und Win hinzudeuten, über den sicher irgendwer hier im Forum mehr sagen kann :-)

Gruß,
F.
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

Mit QLocale änderst du nur die Formatierung von Zahlen und Zeichen -> Doku. Und abgesehen davon, dass ich nicht wüßte, warum man bei einzelnen Dialogen die Sprache ändern möchte, würde ich tippen, das das auch irgendwie mit installTranslator und removeTranslator gehen müsste.
Bist du sicher, dass sich QLocale nur auf die Formatierung von Zahlen und Zeichen bezieht ? Ich dachte das beinhaltet mehr...

Das Ändern der Dialogsprache aus dem Programm heraus ist dann sinnvoll/notwendig, wenn das Programm mehrere Sprachen unterstützt und diese vom Benutzer einstellbar ist. Wenn dieser die Programmsprache z.B. auf einem "deutschen" System auf "englisch" stellt, dann sollte es möglich sein, die Sprache z.B. des Druckdialogs ebenfalls auf englisch zu setzen.
Bei mehreren unterstützten Programmsprachen kann ich auch nicht einfach den Translator wechseln, weil mir dann meine Übersetzungen für den Rest des Programms flöten gehen.
Und was das grundsätzliche Problem angeht, dass unter Linux erstmal alle Dialoge in Englisch dargestellt werden und unter Windows in Deutsch, scheint auf einen Unterschied zwischen Linux und Win hinzudeuten, über den sicher irgendwer hier im Forum mehr sagen kann
Deshalb frag' ich ;-)...

Gruss,
Frank
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

The QLocale class converts between numbers and their string representations in various languages.
Bei mehreren unterstützten Programmsprachen kann ich auch nicht einfach den Translator wechseln, weil mir dann meine Übersetzungen für den Rest des Programms flöten gehen
Warum nicht einfach immer das gewünschte Translatorfile laden und gut ist? Oder wolltest du den PrintDialog auf Spanisch, den FileDialog auf polnisch etc.?
Antworten