diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-03-10 19:57:55 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-03-10 20:05:23 +0100 |
commit | e5bc14535395b36c129608e77793aebf3fc0afb5 (patch) | |
tree | 53091ece331dd792c4dcfa00e62f96c875373470 | |
parent | 05fc3ddf374d79e4c3aa3869a2e8723650778741 (diff) | |
download | qutebrowser-e5bc14535395b36c129608e77793aebf3fc0afb5.tar.gz qutebrowser-e5bc14535395b36c129608e77793aebf3fc0afb5.zip |
Update locale workaround based on Chromium code
See #6235
-rw-r--r-- | qutebrowser/config/qtargs.py | 13 | ||||
-rw-r--r-- | tests/unit/config/test_qtargs_locale_workaround.py | 9 |
2 files changed, 17 insertions, 5 deletions
diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py index da4ec01aa..c2c5ede7e 100644 --- a/qutebrowser/config/qtargs.py +++ b/qutebrowser/config/qtargs.py @@ -188,8 +188,9 @@ def _get_lang_override( log.init.debug(f"Found {pak_path}, skipping workaround") return None - # Based on Chromium's behavior - if locale_name in {'en', 'en-PH'}: + # Based on Chromium's behavior in l10n_util::CheckAndResolveLocale: + # https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc;l=344-428;drc=43d5378f7f363dab9271ca37774c71176c9e7b69 + if locale_name in {'en', 'en-PH', 'en-LR'}: pak_name = 'en-US' elif locale_name.startswith('en-'): pak_name = 'en-GB' @@ -197,10 +198,12 @@ def _get_lang_override( pak_name = 'es-419' elif locale_name == 'pt': pak_name = 'pt-BR' - elif locale_name in {'zh', 'zh-SG'}: - pak_name = 'zh-CN' - elif locale_name == 'zh-HK': + elif locale_name.startswith('pt-'): + pak_name = 'pt-PT' + elif locale_name in {'zh-HK', 'zh-MO'}: pak_name = 'zh-TW' + elif locale_name == 'zh' or locale_name.startswith('zh-'): + pak_name = 'zh-CN' else: pak_name = locale_name.split('-')[0] diff --git a/tests/unit/config/test_qtargs_locale_workaround.py b/tests/unit/config/test_qtargs_locale_workaround.py index 65073b1bb..f38940283 100644 --- a/tests/unit/config/test_qtargs_locale_workaround.py +++ b/tests/unit/config/test_qtargs_locale_workaround.py @@ -129,6 +129,7 @@ pytest.importorskip('PyQt5.QtWebEngineWidgets') ("en_IE@euro.UTF-8", "en-GB"), ("en_IL.UTF-8", "en-GB"), ("en_IN.UTF-8", "en-GB"), + ("en_LR.UTF-8", "en-US"), # locale not available on my system ("en_NG.UTF-8", "en-GB"), ("en_NZ.UTF-8", "en-GB"), ("en_PH.UTF-8", "en-US"), @@ -290,6 +291,10 @@ pytest.importorskip('PyQt5.QtWebEngineWidgets') ("pt_BR.UTF-8", "pt-BR"), ("pt_PT.UTF-8", "pt-PT"), ("pt_PT@euro.UTF-8", "pt-PT"), + pytest.param( + "pt_XX.UTF-8", "pt-PT", + marks=pytest.mark.xfail(reason="Mapped to pt by Qt"), + ), # locale not available on my system ("quz_PE.UTF-8", "en-US"), ("raj_IN.UTF-8", "en-US"), ("ro_RO.UTF-8", "ro"), @@ -383,10 +388,14 @@ pytest.importorskip('PyQt5.QtWebEngineWidgets') ("zh_HK.UTF-8", "zh-TW"), ("zh_SG.UTF-8", "zh-CN"), ("zh_TW.UTF-8", "zh-TW"), + ("zh_MO.UTF-8", "zh-TW"), # locale not available on my system + ("zh_XX.UTF-8", "zh-CN"), # locale not available on my system ("zu_ZA.UTF-8", "en-US"), ]) def test_lang_workaround_all_locales(lang, expected): locale_name = QLocale(lang).bcp47Name() + print(locale_name) + override = qtargs._get_lang_override( webengine_version=utils.VersionNumber(5, 15, 3), locale_name=locale_name, |