Filter language to not display the current lang in the dropdown

No need to set a lang that is actually already set
This commit is contained in:
Jean-Baptiste Bellet
2021-06-28 11:39:17 +02:00
parent aa982fe8df
commit 1a8a12fb0c
3 changed files with 7 additions and 2 deletions

View File

@@ -3,6 +3,6 @@
%i.ofn-i_071-globe
%span= t 'language_name'
%ul.dropdown
- OpenFoodNetwork::I18nConfig.selectable_locales.each do |l|
- OpenFoodNetwork::I18nConfig.locale_options.each do |l|
%li
= link_to t('language_name', locale: l), main_app.locale_path(l.to_s)

View File

@@ -5,6 +5,11 @@ module OpenFoodNetwork
# Currently, language settings are read from the environment.
# See: config/application.yml
class I18nConfig
# Users don't need to select the already selected locale.
def self.locale_options
selectable_locales - [I18n.locale.to_s]
end
# Locales that can be selected by users.
def self.selectable_locales
ENV["AVAILABLE_LOCALES"].andand.split(/[\s,]+/) || []

View File

@@ -127,7 +127,7 @@ feature 'Multilingual', js: true do
find('.language-switcher').click
within '.language-switcher .dropdown' do
expect(page).to have_link I18n.t('language_name', locale: :en), href: '/locales/en'
expect(page).not_to have_link I18n.t('language_name', locale: :en), href: '/locales/en'
expect(page).to have_link I18n.t('language_name', locale: :es, default: 'Language Name'),
href: '/locales/es'