Seite 1 von 1
QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 28. Januar 2012 01:58
von EdgarButan
Ich habe folgendes Problem, das ich am besten mit zwei Zeilen (PyQt-, sollte aber auch für Fremdsprachler gut verständlich sein)Code beschreibe:
Code: Alles auswählen
print QtCore.QLocale().languageToString(QtCore.QLocale().language())
print QtCore.QDate().currentDate().toString(QtCore.Qt.DefaultLocaleLongDate)
ergibt als Ausgabe:
Sprich: die Ländereinstellung (die hier, wie ich in #qt erfahren habe, maßgeblich ist, nicht die Übersetzung, welche ich aber mit QTranslator.load() ebenfalls erfolgreich geladen habe) ist korrekt auf Deutsch gesetzt, das Datum bekomme ich dennoch auf Englisch.
Was das Ganze noch mysteriöser macht, ist, dass das Programm nachweislich mindestens am 24. Dezember 2011 (und über einen Zeitraum von über einem Jahr davor, ich habe das Programm schon lange ohne Probleme in Benutzung) noch ein deutsches Datum generiert hat (ohne, dass ich irgendwelche Übersetzungs-Dateien oder sonst irgendwas laden musste).
In #qt konnte mir leider niemand richtig weiterhelfen, eigene Recherchen haben in den letzten Tagen nichts ergeben und da dieses Problem auch noch scheinbar völlig aus dem Nichts auftauchte, bin ich mit meinem zugegeben begrenzten Latein am Ende; für Hilfe wäre ich sehr dankbar.
Gruß,
EdgarButan
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 11:57
von Christian81
Ich würde da mal eher bei einer speziellen PyQt ML anfragen. Bei mir (openSUSE 12.1, Qt 4.7.4, PyQt 4.8.5) funktioniert es:
Code: Alles auswählen
>>> from PyQt4 import QtCore
>>> print QtCore.QLocale().languageToString(QtCore.QLocale().language())
German
>>> print QtCore.QDate().currentDate().toString(QtCore.Qt.DefaultLocaleLongDate)
Sonntag, 29. Januar 2012
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 13:27
von EdgarButan
Ok, dann werd ich's da mal versuchen. Was die Suche nach diesem winzigen Fehler für Ausmaße annimmt…
Danke.
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 13:58
von franzf
Bei mir geht es auch nicht.
Was gibt bei euch ein
aus?
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 14:20
von Christian81
LC_ALL ist bei mir in der Konsole nicht gesetzt. Was habt ihr für (Py)Qt-Versionen?
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 15:16
von franzf
Und LC_TIME?
Das Problem hier ist, dass überhaupt keine LC gesetzt sind.

st ein neuerer Rechner und das hab ich wohl bisher komplett versäumt).
Sobald ich in der Konsole LC_ALL exportiere, bekomme ich deutsche Namen für Tage/Monate/...
Es hat also nichts mit Python zu tun (mein Testprogramm war in C++).
Siehe auch: <qt-4.8.0-src>/src/corelib/tools/qlocale_unix.cpp:Z.60 ff
* Geht schnell seine zsh-Config anpassen *
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 15:26
von Christian81
Bei mir ist auch kein LC_xxx gesetzt, nur LANG steht auf de_DE.UTF-8
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 15:49
von franzf
LANG ist ja (theoretisch) auch OK:
Code: Alles auswählen
QByteArray lang = qgetenv("LANG");
if (lang.isEmpty())
lang = QByteArray("C");
if (numeric.isEmpty())
numeric = lang;
LANG ist also ein Fallback.
Dann muss hier wohl ein Bug sein, denn LANG war (ist) auch hier gesetzt, hat sich aber auf die locale nicht ausgewirkt.
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 15:57
von EdgarButan
Tatsächlich, jetzt habe ich von Hand LC_ALL explizit auf Deutsch gesetzt und siehe da, ich bekomme ein deutsches Datum!
Dann ist auch klar bzw. verständlich, warum Christian das Problem nicht hat; mein Qt ist Version 4.8.0.
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 29. Januar 2012 16:19
von Christian81
Ok, ist definitiv ein Bug in Qt4.8, hab es hier auf einen anderen System mit Qt 4.8.0 und PyQt 4.9.0 getestet und das gleiche fehlerhafte Verhalten festgestellt.
Re: QDate in falscher Sprache, Locale jedoch korrekt
Verfasst: 14. April 2012 11:13
von franzf
Ich...
Da war ich SO KURZ davor, aber doch zu blind...
Code: Alles auswählen
--- src/corelib/tools/qlocale_unix.cpp.org 2012-04-14 11:02:06.425917171 +0200
+++ src/corelib/tools/qlocale_unix.cpp 2012-04-14 11:02:50.247920549 +0200
@@ -68,6 +68,8 @@
lang = QByteArray("C");
if (numeric.isEmpty())
numeric = lang;
+ if (time.isEmpty())
+ time = lang;
if (monetary.isEmpty())
monetary = lang;
if (lc_messages_var.isEmpty())
Mit dem Patch funktioniert es wieder...
// edit:
Und es wurde vor 9 Tagen im git-repository gefixt:
http://qt.gitorious.org/qt/qt/commit/9e ... e324fb1e33