5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-06-02 04:34:16 +00:00

feat: cambiar el idioma en toda la sesión

This commit is contained in:
f 2023-03-17 15:27:06 -03:00
parent 13ec35f61b
commit 2f3a596fa5
2 changed files with 15 additions and 5 deletions

View file

@ -46,17 +46,19 @@ class ApplicationController < ActionController::Base
# defecto.
#
# Esto se refiere al idioma de la interfaz, no de los artículos.
def current_locale(include_params: true, site: nil)
return params[:locale] if include_params && params[:locale].present?
#
# @return [String,Symbol]
def current_locale
session[:locale] ||= params[:change_locale_to]
current_usuarie&.lang || I18n.locale
session[:locale] || current_usuarie&.lang || I18n.locale
end
# El idioma es el preferido por le usuarie, pero no necesariamente se
# corresponde con el idioma de los artículos, porque puede querer
# traducirlos.
def set_locale(&action)
I18n.with_locale(current_locale(include_params: params[:controller].start_with?('devise')), &action)
I18n.with_locale(current_locale, &action)
end
# Muestra una página 404
@ -88,4 +90,12 @@ class ApplicationController < ActionController::Base
def prepare_exception_notifier
request.env['exception_notifier.exception_data'] = { usuarie: current_usuarie }
end
# Olvidar el idioma elegido antes de iniciar la sesión y reenviar a
# los sitios en el idioma de le usuarie.
def after_sign_in_path_for(resource)
session[:locale] = nil
sites_path
end
end

View file

@ -24,4 +24,4 @@
method: :delete, role: 'button', class: 'btn'
- else
- other_locale = I18n.available_locales.find { |locale| locale != I18n.locale }
= link_to t(other_locale), "?locale=#{other_locale}"
= link_to t(other_locale), "?change_locale_to=#{other_locale}"