diff --git a/app/helpers/locales_helper.rb b/app/helpers/locales_helper.rb index 78ab25189..3ae6bb5ef 100644 --- a/app/helpers/locales_helper.rb +++ b/app/helpers/locales_helper.rb @@ -1,10 +1,7 @@ module LocalesHelper def name_for_locale(locale) - default = I18n.t("locale", locale: locale) - I18n.backend.translate(locale, "i18n.language.name", default: default) - rescue - nil + I18n.t("i18n.language.name", locale: locale, fallback: false, default: locale.to_s) end end diff --git a/spec/features/localization_spec.rb b/spec/features/localization_spec.rb index eb345cb7c..255847991 100644 --- a/spec/features/localization_spec.rb +++ b/spec/features/localization_spec.rb @@ -48,4 +48,30 @@ feature 'Localization' do expect(page).not_to have_content('Language') expect(page).not_to have_css('div.locale') end + + context "Missing language names" do + + let!(:default_enforce) { I18n.enforce_available_locales } + let!(:default_locales) { I18n.available_locales } + + before do + I18n.enforce_available_locales = false + I18n.available_locales << :wl + I18n.locale = :wl + end + + after do + I18n.enforce_available_locales = default_enforce + I18n.available_locales = default_locales + end + + scenario 'Available locales without language translation display locale key' do + visit '/' + + within('.locale-form .js-location-changer') do + expect(page).to have_content 'wl' + end + end + + end end diff --git a/spec/helpers/locales_helper_spec.rb b/spec/helpers/locales_helper_spec.rb new file mode 100644 index 000000000..2eb10be05 --- /dev/null +++ b/spec/helpers/locales_helper_spec.rb @@ -0,0 +1,32 @@ +require 'rails_helper' + +describe LocalesHelper do + + context "Language names" do + + let!(:default_enforce) { I18n.enforce_available_locales } + + before do + I18n.enforce_available_locales = false + end + + after do + I18n.backend.reload! + I18n.enforce_available_locales = default_enforce + end + + it "returns the language name in i18n.language.name translation" do + keys = { language: { + name: "World Language" }} + + I18n.backend.store_translations(:wl, { i18n: keys }) + + expect(name_for_locale(:wl)).to eq("World Language") + end + + it "retuns the locale key if i18n.language.name translation is not found" do + expect(name_for_locale(:wl)).to eq("wl") + end + + end +end \ No newline at end of file