Skip to content

Commit 1900988

Browse files
committed
cs_calendar: Localize regions and cities
Fixes #10057
1 parent a46c425 commit 1900988

2 files changed

Lines changed: 39 additions & 2 deletions

File tree

debian/control

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ Depends:
9090
network-manager-gnome [linux-any],
9191
policykit-1-gnome | mate-polkit,
9292
python3,
93+
python3-babel,
9394
python3-distro,
9495
python3-gi,
9596
python3-gi-cairo,

files/usr/share/cinnamon/cinnamon-settings/modules/cs_calendar.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
import pytz
77
import gi
88
import datetime
9+
import locale
10+
try:
11+
from babel import Locale as BabelLocale
12+
except:
13+
pass
914
import os
1015
gi.require_version('TimezoneMap', '1.0')
1116
from gi.repository import TimezoneMap
@@ -241,18 +246,49 @@ def __init__(self):
241246
self.city_combo.add_attribute(renderer_text, "text", 1)
242247
self.city_combo.set_id_column(0)
243248

249+
REGION_NAMES = {
250+
"Africa": _("Africa"),
251+
"America": _("America"),
252+
"Antarctica": _("Antarctica"),
253+
"Arctic": _("Arctic"),
254+
"Asia": _("Asia"),
255+
"Atlantic": _("Atlantic Ocean"),
256+
"Australia": _("Australia"),
257+
"Canada": _("Canada"),
258+
"Europe": _("Europe"),
259+
"Indian": _("Indian Ocean"),
260+
"Pacific": _("Pacific Ocean"),
261+
"US": _("USA"),
262+
}
263+
244264
self.region_map = {}
245265
for tz in pytz.common_timezones:
266+
city_display_name = tz
267+
region_display_name = tz
246268
try:
247269
region, city = tz.split('/', maxsplit=1)
248270
city_display_name = city.replace("_"," ")
271+
region_display_name = region
249272
except:
250273
continue
251274

275+
try:
276+
# localize city names (best effort, ignore exceptions)
277+
loc = BabelLocale(locale.getlocale()[0])
278+
city_display_name = loc.time_zones[tz]["city"]
279+
except:
280+
pass
281+
282+
try:
283+
# localize the region name (best effort, ignore exceptions)
284+
region_display_name = REGION_NAMES[region_display_name]
285+
except:
286+
pass
287+
252288
if region not in self.region_map:
253289
self.region_map[region] = Gtk.ListStore(str, str)
254-
self.region_list.append([region, _(region)])
255-
self.region_map[region].append([city, _(city_display_name)])
290+
self.region_list.append([region, region_display_name])
291+
self.region_map[region].append([city, city_display_name])
256292

257293
def set_timezone(self, timezone):
258294
if timezone == "Etc/UTC" or timezone == "Universal":

0 commit comments

Comments
 (0)