[PATCH] Fix date and time l10n

Sergey Starosek sergey.starosek at gmail.com
Sat Jun 28 03:56:40 PDT 2014


QDateTime::toString(const QString & format) uses system locale
for month and day names.

In order to get localized month and day names for user-choosen locale
use QLocale::toString(const QDateTime & datetime, const QString & format)
instead.

Signed-off-by: Sergey Starosek <sergey.starosek at gmail.com>
---
 qt-gui.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/qt-gui.cpp b/qt-gui.cpp
index eeb43b8..23dc8b7 100644
--- a/qt-gui.cpp
+++ b/qt-gui.cpp
@@ -50,6 +50,7 @@ const char *existing_filename;
 static QString shortDateFormat;
 static QString dateFormat;
 static QString timeFormat;
+static QLocale loc;
 
 #if defined(Q_OS_WIN) && QT_VERSION < 0x050000
 static QByteArray encodeUtf8(const QString &fname)
@@ -72,10 +73,11 @@ QString uiLanguage(QLocale *callerLoc)
 {
 	QSettings s;
 	s.beginGroup("Language");
-	QLocale loc;
 
 	if (!s.value("UseSystemLanguage", true).toBool()) {
 		loc = QLocale(s.value("UiLanguage", QLocale().uiLanguages().first()).toString());
+	} else {
+		loc = QLocale(QLocale().uiLanguages().first());
 	}
 
 	QString uiLang = loc.uiLanguages().first();
@@ -392,14 +394,14 @@ QString get_dive_date_string(timestamp_t when)
 {
 	QDateTime ts;
 	ts.setMSecsSinceEpoch(when * 1000);
-	return ts.toUTC().toString(dateFormat + " " + timeFormat);
+	return loc.toString(ts.toUTC(), dateFormat + " " + timeFormat);
 }
 
 QString get_short_dive_date_string(timestamp_t when)
 {
 	QDateTime ts;
 	ts.setMSecsSinceEpoch(when * 1000);
-	return ts.toUTC().toString(shortDateFormat + " " + timeFormat);
+	return loc.toString(ts.toUTC(), shortDateFormat + " " + timeFormat);
 }
 
 QString get_trip_date_string(timestamp_t when, int nr)
-- 
1.8.5.5



More information about the subsurface mailing list