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.
97 lines
4.8 KiB
Ruby
97 lines
4.8 KiB
Ruby
require "test_helper"
|
|
|
|
class LocaleTest < ActiveSupport::TestCase
|
|
EN = Locale.new("en")
|
|
EN_GB = Locale.new("en", nil, "GB")
|
|
FR = Locale.new("fr")
|
|
ZH_HANS = Locale.new("zh", "Hans")
|
|
ZH_HANT_TW = Locale.new("zh", "Hant", "TW")
|
|
ZH_YUE = Locale.new("zh-yue")
|
|
BE_TARASK = Locale.new("be", nil, nil, "tarask")
|
|
|
|
def test_tag
|
|
assert_equal EN, Locale.tag("en")
|
|
assert_equal EN_GB, Locale.tag("en-GB")
|
|
assert_equal FR, Locale.tag("fr")
|
|
assert_equal ZH_HANS, Locale.tag("zh-Hans")
|
|
assert_equal ZH_HANT_TW, Locale.tag("zh-Hant-TW")
|
|
assert_equal ZH_YUE, Locale.tag("zh-yue")
|
|
assert_equal BE_TARASK, Locale.tag("be-tarask")
|
|
end
|
|
|
|
def test_language
|
|
assert_equal EN.language, Locale.tag("en").language
|
|
assert_equal EN_GB.language, Locale.tag("en-GB").language
|
|
assert_equal FR.language, Locale.tag("fr").language
|
|
assert_equal ZH_HANS.language, Locale.tag("zh-Hans").language
|
|
assert_equal ZH_HANT_TW.language, Locale.tag("zh-Hant-TW").language
|
|
assert_equal ZH_YUE.language, Locale.tag("zh-yue").language
|
|
assert_equal ZH_YUE.language, Locale.tag("zh-YUE").language
|
|
assert_equal BE_TARASK.language, Locale.tag("be-tarask").language
|
|
assert_equal BE_TARASK.language, Locale.tag("be-Tarask").language
|
|
end
|
|
|
|
def test_script
|
|
assert_equal_allowing_nil EN.script, Locale.tag("en").script
|
|
assert_equal_allowing_nil EN_GB.script, Locale.tag("en-GB").script
|
|
assert_equal_allowing_nil FR.script, Locale.tag("fr").script
|
|
assert_equal_allowing_nil ZH_HANS.script, Locale.tag("zh-Hans").script
|
|
assert_equal_allowing_nil ZH_HANT_TW.script, Locale.tag("zh-Hant-TW").script
|
|
assert_equal_allowing_nil ZH_YUE.script, Locale.tag("zh-yue").script
|
|
assert_equal_allowing_nil ZH_YUE.script, Locale.tag("zh-YUE").script
|
|
assert_equal_allowing_nil BE_TARASK.script, Locale.tag("be-tarask").script
|
|
assert_equal_allowing_nil BE_TARASK.script, Locale.tag("be-Tarask").script
|
|
end
|
|
|
|
def test_region
|
|
assert_equal_allowing_nil EN.region, Locale.tag("en").region
|
|
assert_equal_allowing_nil EN_GB.region, Locale.tag("en-GB").region
|
|
assert_equal_allowing_nil FR.region, Locale.tag("fr").region
|
|
assert_equal_allowing_nil ZH_HANS.region, Locale.tag("zh-Hans").region
|
|
assert_equal_allowing_nil ZH_HANT_TW.region, Locale.tag("zh-Hant-TW").region
|
|
assert_equal_allowing_nil ZH_YUE.region, Locale.tag("zh-yue").region
|
|
assert_equal_allowing_nil ZH_YUE.region, Locale.tag("zh-YUE").region
|
|
assert_equal_allowing_nil BE_TARASK.region, Locale.tag("be-tarask").region
|
|
assert_equal_allowing_nil BE_TARASK.region, Locale.tag("be-Tarask").region
|
|
end
|
|
|
|
def test_variant
|
|
assert_equal_allowing_nil EN.variant, Locale.tag("en").variant
|
|
assert_equal_allowing_nil EN_GB.variant, Locale.tag("en-GB").variant
|
|
assert_equal_allowing_nil FR.variant, Locale.tag("fr").variant
|
|
assert_equal_allowing_nil ZH_HANS.variant, Locale.tag("zh-Hans").variant
|
|
assert_equal_allowing_nil ZH_HANT_TW.variant, Locale.tag("zh-Hant-TW").variant
|
|
assert_equal_allowing_nil ZH_YUE.variant, Locale.tag("zh-yue").variant
|
|
assert_equal_allowing_nil ZH_YUE.variant, Locale.tag("zh-YUE").variant
|
|
assert_equal_allowing_nil BE_TARASK.variant, Locale.tag("be-tarask").variant
|
|
assert_equal_allowing_nil BE_TARASK.variant, Locale.tag("be-Tarask").variant
|
|
end
|
|
|
|
def test_list
|
|
assert_equal [], Locale.list
|
|
assert_equal [EN], Locale.list("en")
|
|
assert_equal [EN, ZH_YUE, ZH_HANT_TW], Locale.list("en", "zh-yue", "zh-Hant-TW")
|
|
assert_equal [ZH_YUE, ZH_HANT_TW], Locale.list("en;de", "zh-yue", "zh-Hant-TW")
|
|
assert_equal [ZH_YUE, ZH_HANT_TW], Locale.list(["en;de", "zh-yue", "zh-Hant-TW"])
|
|
end
|
|
|
|
def test_default
|
|
assert_equal EN, Locale.default
|
|
end
|
|
|
|
def test_available
|
|
assert Locale.available.count <= I18n.available_locales.count
|
|
end
|
|
|
|
def test_preferred
|
|
assert_equal "en-GB", Locale.available.preferred(Locale.list("en-GB", "en")).to_s
|
|
assert_equal "en", Locale.available.preferred(Locale.list("en")).to_s
|
|
assert_equal "fr", Locale.available.preferred(Locale.list("fr-GB", "fr", "en")).to_s
|
|
assert_equal "fr", Locale.available.preferred(Locale.list("fr", "en")).to_s
|
|
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-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
|