Skip to content

Commit 4e9fc4f

Browse files
authored
Use locale codes for language (#275)
* Map language code to locale * Use UTF locales * Fix wrong country code
1 parent 592a66b commit 4e9fc4f

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

gramps_webapi/api/util.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from webargs.flaskparser import FlaskParser
4040

4141
from ..auth.const import PERM_VIEW_PRIVATE
42+
from ..const import LOCALE_MAP
4243
from ..dbmanager import WebDbManager
4344
from .auth import has_permissions
4445

@@ -139,7 +140,11 @@ def get_locale_for_language(language: str, default: bool = False) -> GrampsLocal
139140
catalog = GRAMPS_LOCALE.get_language_dict()
140141
for entry in catalog:
141142
if catalog[entry] == language:
142-
return GrampsLocale(lang=language)
143+
# translate language code (e.g. "da") to locale code (e.g. "da_DK")
144+
locale_code = LOCALE_MAP.get(language, language)
145+
if "UTF" not in locale_code.upper():
146+
locale_code = f"{locale_code}.UTF-8"
147+
return GrampsLocale(lang=locale_code)
143148
if default:
144149
return GRAMPS_LOCALE
145150
return None

gramps_webapi/const.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,40 @@
119119
REPORT_DEFAULTS = {
120120
CATEGORY_TEXT: "rtf",
121121
}
122+
123+
124+
# mapping Gramps language codes to locales that exist on a typical Unix system.
125+
LOCALE_MAP = {
126+
"ar": "ar_EG",
127+
"bg": "bg_BG",
128+
"ca": "ca_ES",
129+
"cs": "cs_CZ",
130+
"da": "da_DK",
131+
"de": "de_DE",
132+
"el": "el_GR",
133+
"en": "en_GB",
134+
"es": "es_ES",
135+
"fi": "fi_FI",
136+
"fr": "fr_FR",
137+
"he": "he_IL",
138+
"hr": "hr_HR",
139+
"hu": "hu_HU",
140+
"is": "is_IS",
141+
"it": "it_IT",
142+
"ja": "ja_JP",
143+
"lt": "lt_LT",
144+
"nb": "nb_NO",
145+
"nl": "nl_NL",
146+
"nn": "nn_NO",
147+
"pl": "pl_PL",
148+
"ru": "ru_RU",
149+
"sk": "sk_SK",
150+
"sl": "sl_SI",
151+
"sq": "sq_AL",
152+
"sr": "sr_RS",
153+
"sv": "sv_SE",
154+
"ta": "ta_IN",
155+
"tr": "tr_TR",
156+
"uk": "uk_UA",
157+
"vi": "vi_VN",
158+
}

0 commit comments

Comments
 (0)