Improve 12/24 clock detection

The current check looks at whether there was some am/pm suffix in the
localized time; however in some cases (locales) that does not seem to
work. this version instead checks whether the localized versions of 05:00 and
17:00 start with the same two digits; if not, it's probably a 24h clock.

https://bugzilla.gnome.org/show_bug.cgi?id=603488
This commit is contained in:
Dirk-Jan C. Binnema 2010-02-27 10:29:13 +02:00 committed by Colin Walters
parent 1a0d507316
commit 046e0609ab

View File

@ -616,15 +616,22 @@ Panel.prototype = {
displayDate.setMinutes(displayDate.getMinutes() + 1); displayDate.setMinutes(displayDate.getMinutes() + 1);
msecRemaining += 60000; msecRemaining += 60000;
} }
/* If there is no am or pm, time format is 24h */
let isTime24h = displayDate.toLocaleFormat("x%p") == "x"; // if the locale representations of 05:00 and 17:00 do not
if (isTime24h) { // start with the same 2 digits, it must be a 24h clock
/* Translators: This is the time format used in 24-hour mode. */ let fiveAm = new Date();
this._clock.set_text(displayDate.toLocaleFormat(_("%a %R"))); fiveAm.setHours(5);
} else { let fivePm = new Date();
/* Translators: This is a time format used for AM/PM. */ fivePm.setHours(17);
this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p"))); let isTime24h = fiveAm.toLocaleFormat("%X").substr(0,2) !=
} fivePm.toLocaleFormat("%X").substr(0,2);
if (isTime24h) {
/* Translators: This is the time format used in 24-hour mode. */
this._clock.set_text(displayDate.toLocaleFormat(_("%a %R")));
} else {
/* Translators: This is a time format used for AM/PM. */
this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p")));
}
Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock)); Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock));
return false; return false;
}, },