Files
bDS2/test/bds/i18n_test.exs

59 lines
2.1 KiB
Elixir

defmodule BDS.I18nTest do
use ExUnit.Case, async: true
test "supported languages, normalization, and UI locale resolution follow the spec" do
assert Enum.map(BDS.I18n.supported_languages(), & &1.code) == ["en", "de", "fr", "it", "es"]
assert BDS.I18n.normalize_language("de-DE") == "de"
assert BDS.I18n.normalize_language("FR_ca") == "fr"
assert BDS.I18n.normalize_language("pt-BR") == "en"
assert BDS.I18n.resolve_ui_locale("it-IT") == "it"
assert BDS.I18n.resolve_ui_locale("es_ES.UTF-8") == "es"
assert BDS.I18n.resolve_ui_locale(nil) == "en"
assert BDS.I18n.resolve_render_locale("fr-FR") == "fr"
assert BDS.I18n.resolve_render_locale("unknown") == "en"
end
test "format locale mapping uses the spec locale table" do
assert BDS.I18n.format_locale("en") == "en-US"
assert BDS.I18n.format_locale("de-DE") == "de-DE"
assert BDS.I18n.format_locale("fr") == "fr-FR"
assert BDS.I18n.format_locale("it-CH") == "it-IT"
assert BDS.I18n.format_locale("es_MX") == "es-ES"
assert BDS.I18n.format_locale("pt-BR") == "en-US"
end
test "gettext render translations resolve for supported locales" do
assert BDS.Gettext.lgettext("de", "render", "Back to preview home") ==
"Zurück zur Vorschau-Startseite"
assert BDS.Gettext.lgettext("pt-BR", "render", "Back to preview home") ==
"Back to preview home"
end
test "gettext ui translations resolve for supported locales" do
BDS.Gettext.put_locale("de")
assert Gettext.dgettext(BDS.Gettext, "ui", "Posts") == "Beiträge"
BDS.Gettext.put_locale("en")
end
test "gettext falls back to the msgid for missing translations" do
assert BDS.Gettext.lgettext("de", "ui", "totally.missing.key.12345") ==
"totally.missing.key.12345"
end
test "supported non-english locales translate representative keys differently from english" do
representative = [
{"ui", "Posts"},
{"render", "Back to preview home"},
{"render", "Archive"}
]
for locale <- ["de", "fr", "it", "es"], {domain, msgid} <- representative do
assert BDS.Gettext.lgettext(locale, domain, msgid) != msgid
end
end
end