Merge pull request #6209 from betagouv/localize-dropdown-button

i18n : ajout d’un sélecteur de langue (désactivé par défaut) (#6209)
This commit is contained in:
Pierre de La Morinerie 2021-05-25 16:24:55 +02:00 committed by GitHub
commit a2a66a6d59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 33 additions and 4 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 66 KiB

View file

@ -18,7 +18,8 @@ class ApplicationController < ActionController::Base
before_action :set_active_storage_host
before_action :setup_javascript_settings
before_action :setup_tracking
before_action :set_locale
around_action :switch_locale
helper_method :multiple_devise_profile_connect?, :instructeur_signed_in?, :current_instructeur, :current_expert, :expert_signed_in?,
:administrateur_signed_in?, :current_administrateur, :current_account
@ -308,9 +309,15 @@ class ApplicationController < ActionController::Base
current_user&.email
end
def set_locale
if ENV.fetch('LOCALIZATION_ENABLED', 'false') == 'true'
I18n.locale = http_accept_language.compatible_language_from(I18n.available_locales)
def switch_locale(&action)
locale = nil
if cookies[:locale]
locale = cookies[:locale]
elsif ENV.fetch('LOCALIZATION_ENABLED', 'false') == 'true'
locale = http_accept_language.compatible_language_from(I18n.available_locales)
else
locale = I18n.default_locale
end
I18n.with_locale(locale, &action)
end
end

View file

@ -87,4 +87,9 @@ class RootController < ApplicationController
format.js { render js: helpers.remove_element('#outdated-browser-banner') }
end
end
def save_locale
cookies[:locale] = params[:locale]
redirect_to request.referer
end
end

View file

@ -87,3 +87,7 @@
- else
= render partial: 'shared/help/help_button'
- if ENV.fetch('LOCALIZATION_ENABLED', 'false') == 'true'
%li
= render partial: 'layouts/locale_dropdown'

View file

@ -0,0 +1,11 @@
.dropdown.locale-dropdown
%button.button.dropdown-button.icon-only.header-menu-button{ title: "Translate", 'aria-expanded' => 'false', 'aria-controls' => 'locale_menu' }
.hidden Translate
= image_tag "icons/translate-icon.svg", alt: 'Translate', 'aria-hidden':'true'
%ul.header-menu.dropdown-content
%li
= link_to save_locale_path(locale: :en), method: :post, class: "menu-item menu-link" do
EN - English
%li
= link_to save_locale_path(locale: :fr), method: :post, class: "menu-item menu-link" do
FR - français

View file

@ -152,6 +152,7 @@ Rails.application.routes.draw do
get "patron" => "root#patron"
get "suivi" => "root#suivi"
post "dismiss_outdated_browser" => "root#dismiss_outdated_browser"
post "save_locale" => "root#save_locale"
get "contact", to: "support#index"
post "contact", to: "support#create"