summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-10 19:57:55 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-03-10 20:05:23 +0100
commite5bc14535395b36c129608e77793aebf3fc0afb5 (patch)
tree53091ece331dd792c4dcfa00e62f96c875373470
parent05fc3ddf374d79e4c3aa3869a2e8723650778741 (diff)
downloadqutebrowser-e5bc14535395b36c129608e77793aebf3fc0afb5.tar.gz
qutebrowser-e5bc14535395b36c129608e77793aebf3fc0afb5.zip
Update locale workaround based on Chromium code
See #6235
-rw-r--r--qutebrowser/config/qtargs.py13
-rw-r--r--tests/unit/config/test_qtargs_locale_workaround.py9
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,