diff --git a/searx/locales.py b/searx/locales.py index baa2c23eb..71bf4f23a 100644 --- a/searx/locales.py +++ b/searx/locales.py @@ -366,7 +366,7 @@ def get_engine_locale(searxng_locale: str, engine_locales: dict[str, str], defau if engine_locale is None: engine_locale = default - return default + return engine_locale def match_locale(searxng_locale: str, locale_tag_list: list[str], fallback: str | None = None) -> str | None: diff --git a/tests/unit/test_locales.py b/tests/unit/test_locales.py index d08f27fdc..6376f3023 100644 --- a/tests/unit/test_locales.py +++ b/tests/unit/test_locales.py @@ -99,11 +99,17 @@ class TestLocales(SearxTestCase): @parameterized.expand( [ - ('fr-BE', ['fr-FR', 'fr-CA', 'nl-BE'], 'nl-BE'), # A user selects region 'fr-BE' which should end in nl-BE - ('fr', ['fr-BE', 'fr-CH'], 'fr-BE'), # A user selects fr with 2 locales, - # the get_engine_locale selects the locale by looking at the "population - # percent" and this percentage has an higher amount in BE (68.%) - # compared to CH (21%) + # approximation rule (*by territory*) -> territory has priority over the lang: + # A user selects region 'fr-BE' which should end in nl-BE + ('fr-BE', ['fr-FR', 'fr-CA', 'nl-BE'], 'nl-BE'), + # approximation rule (*by language*) -> Check in which territories + # the language has an official status and if one of these + # territories is supported: + # A user selects fr with 2 locales where fr is a offical language, + # the get_engine_locale selects the locale by looking at the + # "population percent" and this percentage has a higher amount in + # BE (population 38%) compared to IT (population 20). + ('fr', ['fr-BE', 'fr-IT'], 'fr-BE'), ] ) def test_locale_optimized_territory(self, locale: str, locale_list: list[str], expected_locale: str):