From 5075281add3bb31a9697a198f3659a009b117803 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Mon, 24 Apr 2023 09:55:08 -0500 Subject: [PATCH] Fix zh Hant/Hans (#91390) * Fix zh Hant/Hans * Fix comments --- homeassistant/util/language.py | 8 +++++--- tests/util/test_language.py | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/homeassistant/util/language.py b/homeassistant/util/language.py index 4d0092dfd20..9fa46b6a5d6 100644 --- a/homeassistant/util/language.py +++ b/homeassistant/util/language.py @@ -16,7 +16,11 @@ def preferred_regions( country: str | None = None, code: str | None = None, ) -> Iterable[str | None]: - """Yield preferred regions for a language based on country/code hints.""" + """Yield an ordered list of regions for a language based on country/code hints. + + Regions should be checked for support in the returned order if no other + information is available. + """ if country is not None: yield country.upper() @@ -27,10 +31,8 @@ def preferred_regions( elif language == "zh": if code == "Hant": yield "HK" - elif code == "Hans": yield "TW" else: - # Prefer China if no matching code yield "CN" # fr -> fr-FR diff --git a/tests/util/test_language.py b/tests/util/test_language.py index 3d3b0f9f960..87f54ee882e 100644 --- a/tests/util/test_language.py +++ b/tests/util/test_language.py @@ -95,31 +95,40 @@ def test_language_as_region() -> None: def test_zh_hant() -> None: - """Test that the zh-Hant defaults to HK.""" + """Test that the zh-Hant matches HK or TW first.""" assert language.matches( "zh-Hant", ["en-US", "en-GB", "zh-CN", "zh-HK", "zh-TW"], ) == [ "zh-HK", - "zh-CN", "zh-TW", + "zh-CN", + ] + + assert language.matches( + "zh-Hant", + ["en-US", "en-GB", "zh-CN", "zh-TW", "zh-HK"], + ) == [ + "zh-TW", + "zh-HK", + "zh-CN", ] def test_zh_hans() -> None: - """Test that the zh-Hans defaults to TW.""" + """Test that the zh-Hans matches CN first.""" assert language.matches( "zh-Hans", ["en-US", "en-GB", "zh-CN", "zh-HK", "zh-TW"], ) == [ - "zh-TW", "zh-CN", "zh-HK", + "zh-TW", ] def test_zh_no_code() -> None: - """Test that the zh defaults to CN.""" + """Test that the zh defaults to CN first.""" assert language.matches( "zh", ["en-US", "en-GB", "zh-CN", "zh-HK", "zh-TW"],