Improve locale selection algorithm

Don't include locales which only have rails translations in
the candidates, and ensure that user specified options take
priority over less specific variants of earlier choices.
This commit is contained in:
Tom Hughes 2020-06-04 17:23:16 +01:00
parent b16388d099
commit bf22c69286
4 changed files with 25 additions and 17 deletions

View file

@ -80,7 +80,7 @@ class LocaleTest < ActiveSupport::TestCase
end
def test_available
assert_equal I18n.available_locales.count, Locale.available.count
assert Locale.available.count <= I18n.available_locales.count
end
def test_preferred
@ -91,9 +91,7 @@ class LocaleTest < ActiveSupport::TestCase
assert_equal "de", Locale.available.preferred(Locale.list("zh-Hant", "de")).to_s
assert_equal "zh-TW", Locale.available.preferred(Locale.list("zh-Hant-TW", "de")).to_s
assert_equal "zh-TW", Locale.available.preferred(Locale.list("zh-TW", "de")).to_s
assert_equal "zh-HK", Locale.available.preferred(Locale.list("yue", "zh-HK", "de")).to_s
assert_equal "zh-yue", Locale.available.preferred(Locale.list("yue", "zh-yue", "zh-HK", "de")).to_s
assert_equal "zh-yue", Locale.available.preferred(Locale.list("yue", "zh-YUE", "zh-HK", "de")).to_s
assert_equal "zh-TW", Locale.available.preferred(Locale.list("zh-HK", "zh-hk", "zh-Hant", "zh-hant", "zh-TW", "zh-tw", "zh", "zh-yue", "yue", "yue-Hant", "yue-HK", "yue-Hans", "zh-classical", "lzh", "ja-Hani", "ko-Hani", "ko_hanja", "vi-Hani", "ja-hani", "ko-hani", "vi-hani", "en-HK", "en-hk", "en-SG", "en-sg", "en-GB", "en-gb", "en-US", "en-us", "en", "ja")).to_s
assert_equal "en", Locale.available.preferred(Locale.list("yue")).to_s
end
end