From 041689d6378bbd3eb207d2db6f7aaffea0aac405 Mon Sep 17 00:00:00 2001 From: Ben Busby Date: Mon, 24 May 2021 13:52:10 -0400 Subject: [PATCH] Verify interface lang can be used for localization Check the configured interface language against the available localization dict before attempting to use, otherwise fall back to english. Also expanded language names in the languages json file. --- app/models/config.py | 11 ++-- app/routes.py | 4 +- app/static/settings/languages.json | 90 +++++++++++++++--------------- 3 files changed, 53 insertions(+), 52 deletions(-) diff --git a/app/models/config.py b/app/models/config.py index a4fac6a..cfcb3c7 100644 --- a/app/models/config.py +++ b/app/models/config.py @@ -10,13 +10,13 @@ class Config: return bool(int(val)) return False - app_config = current_app.config + self.app_config = current_app.config self.url = os.getenv('WHOOGLE_CONFIG_URL', '') self.lang_search = os.getenv('WHOOGLE_CONFIG_SEARCH_LANGUAGE', '') self.lang_interface = os.getenv('WHOOGLE_CONFIG_LANGUAGE', '') self.style = os.getenv( 'WHOOGLE_CONFIG_STYLE', - open(os.path.join(app_config['STATIC_FOLDER'], + open(os.path.join(self.app_config['STATIC_FOLDER'], 'css/variables.css')).read()) self.block = os.getenv('WHOOGLE_CONFIG_BLOCK', '') self.ctry = os.getenv('WHOOGLE_CONFIG_COUNTRY', '') @@ -77,14 +77,15 @@ class Config: return key in self.safe_keys - def get_interface_lang(self): + def get_localization_lang(self): """Returns the correct language to use for localization, but falls back to english if not set. Returns: - str -- the interface language string + str -- the localization language string """ - if self.lang_interface: + if (self.lang_interface and + self.lang_interface in self.app_config['TRANSLATIONS']): return self.lang_interface return 'lang_en' diff --git a/app/routes.py b/app/routes.py index 0919c6a..4409901 100644 --- a/app/routes.py +++ b/app/routes.py @@ -131,7 +131,7 @@ def index(): languages=app.config['LANGUAGES'], countries=app.config['COUNTRIES'], translation=app.config['TRANSLATIONS'][ - g.user_config.get_interface_lang() + g.user_config.get_localization_lang() ], logo=render_template( 'logo.html', @@ -239,7 +239,7 @@ def search(): search_type=search_util.search_type, config=g.user_config, translation=app.config['TRANSLATIONS'][ - g.user_config.get_interface_lang() + g.user_config.get_localization_lang() ], response=response, version_number=app.config['VERSION_NUMBER'], diff --git a/app/static/settings/languages.json b/app/static/settings/languages.json index 0a5e5c8..7056afa 100644 --- a/app/static/settings/languages.json +++ b/app/static/settings/languages.json @@ -1,49 +1,49 @@ [ {"name": "-------", "value": ""}, {"name": "English", "value": "lang_en"}, - {"name": "Afrikaans", "value": "lang_af"}, - {"name": "Arabic", "value": "lang_ar"}, - {"name": "Armenian", "value": "lang_hy"}, - {"name": "Belarusian", "value": "lang_be"}, - {"name": "Bulgarian", "value": "lang_bg"}, - {"name": "Catalan", "value": "lang_ca"}, - {"name": "Chinese (Simplified)", "value": "lang_zh-CN"}, - {"name": "Chinese (Traditional)", "value": "lang_zh-TW"}, - {"name": "Croatian", "value": "lang_hr"}, - {"name": "Czech", "value": "lang_cs"}, - {"name": "Danish", "value": "lang_da"}, - {"name": "Dutch", "value": "lang_nl"}, - {"name": "Esperanto", "value": "lang_eo"}, - {"name": "Estonian", "value": "lang_et"}, - {"name": "Filipino", "value": "lang_tl"}, - {"name": "Finnish", "value": "lang_fi"}, - {"name": "French", "value": "lang_fr"}, - {"name": "German", "value": "lang_de"}, - {"name": "Greek", "value": "lang_el"}, - {"name": "Hebrew", "value": "lang_iw"}, - {"name": "Hindi", "value": "lang_hi"}, - {"name": "Hungarian", "value": "lang_hu"}, - {"name": "Icelandic", "value": "lang_is"}, - {"name": "Indonesian", "value": "lang_id"}, - {"name": "Italian", "value": "lang_it"}, - {"name": "Japanese", "value": "lang_ja"}, - {"name": "Korean", "value": "lang_ko"}, - {"name": "Latvian", "value": "lang_lv"}, - {"name": "Lithuanian", "value": "lang_lt"}, - {"name": "Norwegian", "value": "lang_no"}, - {"name": "Persian", "value": "lang_fa"}, - {"name": "Polish", "value": "lang_pl"}, - {"name": "Portuguese", "value": "lang_pt"}, - {"name": "Romanian", "value": "lang_ro"}, - {"name": "Russian", "value": "lang_ru"}, - {"name": "Serbian", "value": "lang_sr"}, - {"name": "Slovak", "value": "lang_sk"}, - {"name": "Slovenian", "value": "lang_sl"}, - {"name": "Spanish", "value": "lang_es"}, - {"name": "Swahili", "value": "lang_sw"}, - {"name": "Swedish", "value": "lang_sv"}, - {"name": "Thai", "value": "lang_th"}, - {"name": "Turkish", "value": "lang_tr"}, - {"name": "Ukrainian", "value": "lang_uk"}, - {"name": "Vietnamese", "value": "lang_vi"} + {"name": "Afrikaans (Afrikaans)", "value": "lang_af"}, + {"name": "Arabic (عربى)", "value": "lang_ar"}, + {"name": "Armenian (հայերեն)", "value": "lang_hy"}, + {"name": "Belarusian (Беларуская)", "value": "lang_be"}, + {"name": "Bulgarian (български)", "value": "lang_bg"}, + {"name": "Catalan (Català)", "value": "lang_ca"}, + {"name": "Chinese, Simplified (简体中文)", "value": "lang_zh-CN"}, + {"name": "Chinese, Traditional (繁体中文)", "value": "lang_zh-TW"}, + {"name": "Croatian (Hrvatski)", "value": "lang_hr"}, + {"name": "Czech (čeština)", "value": "lang_cs"}, + {"name": "Danish (Dansk)", "value": "lang_da"}, + {"name": "Dutch (Nederlands)", "value": "lang_nl"}, + {"name": "Esperanto (Esperanto)", "value": "lang_eo"}, + {"name": "Estonian (Eestlane)", "value": "lang_et"}, + {"name": "Filipino (Pilipino)", "value": "lang_tl"}, + {"name": "Finnish (Suomalainen)", "value": "lang_fi"}, + {"name": "French (Français)", "value": "lang_fr"}, + {"name": "German (Deutsche)", "value": "lang_de"}, + {"name": "Greek (Ελληνικά)", "value": "lang_el"}, + {"name": "Hebrew (עִברִית)", "value": "lang_iw"}, + {"name": "Hindi (हिंदी)", "value": "lang_hi"}, + {"name": "Hungarian (Magyar)", "value": "lang_hu"}, + {"name": "Icelandic (Íslenska)", "value": "lang_is"}, + {"name": "Indonesian (Indonesian)", "value": "lang_id"}, + {"name": "Italian (Italiano)", "value": "lang_it"}, + {"name": "Japanese (日本語)", "value": "lang_ja"}, + {"name": "Korean (한국어)", "value": "lang_ko"}, + {"name": "Latvian (Latvietis)", "value": "lang_lv"}, + {"name": "Lithuanian (Lietuvis)", "value": "lang_lt"}, + {"name": "Norwegian (Norwegian)", "value": "lang_no"}, + {"name": "Persian (فارسی)", "value": "lang_fa"}, + {"name": "Polish (Polskie)", "value": "lang_pl"}, + {"name": "Portugese (Português)", "value": "lang_pt"}, + {"name": "Romanian (Română)", "value": "lang_ro"}, + {"name": "Russian (русский)", "value": "lang_ru"}, + {"name": "Serbian (Српски)", "value": "lang_sr"}, + {"name": "Slovak (Slovák)", "value": "lang_sk"}, + {"name": "Slovenian (Slovenščina)", "value": "lang_sl"}, + {"name": "Spanish (Español)", "value": "lang_es"}, + {"name": "Swahili (Kiswahili)", "value": "lang_sw"}, + {"name": "Swedish (Svenska)", "value": "lang_sv"}, + {"name": "Thai (ไทย)", "value": "lang_th"}, + {"name": "Turkish (Türk)", "value": "lang_tr"}, + {"name": "Ukranian (Український)", "value": "lang_uk"}, + {"name": "Vietnamese (Tiếng Việt)", "value": "lang_vi"} ]