Я добавил локализации в моем веб-сайте, и она работает отлично, за исключением двух точекдобавление path_prefix в root_url
- Когда я открываю сайт, например www.test.help.com он показывает этот адрес вместо этого он должен также show locale, поскольку я использую path_prefix в своем контроллере приложений.
- Когда я нажимаю, чтобы изменить язык, URL-адрес не мгновенно меняется
здесь мой фрагмент кода
application.rb
include HttpAcceptLanguage::AutoLocale
before_action :set_locale
def default_url_options(options = {})
{ :path_prefix => I18n.locale }
end
def set_locale
if cookies[:educator_locale] && I18n.available_locales.include?(cookies[:educator_locale].to_sym)
l = cookies[:educator_locale].to_sym
else
if params[:path_prefix].present?
l = params[:path_present]
cookies.permanent[:educator_locale] = l
else
if (http_accept_language.preferred_language_from(http_accept_language.user_preferred_languages).include? "en")
l = 'en'
cookies.permanent[:educator_locale] = l
end
if (http_accept_language.preferred_language_from(http_accept_language.user_preferred_languages).include? "fr")
l = 'fr'
cookies.permanent[:educator_locale] = l
end
end
cookies.permanent[:educator_locale] = l
end
I18n.locale = l
end
Мой контроллер настройки
def change_locale
l = params[:locale].to_s.strip.to_sym
# puts "---------"
# puts l
l = I18n.default_locale unless I18n.available_locales.include?(l)
cookies.permanent[:educator_locale] = l
url_hash = Rails.application.routes.recognize_path URI(request.referer).path url_hash[:locale] =l
redirect_to url_hash
конец
Тогда мои маршруты
get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale
get "home/index"
root 'home#index'
После я нажимаю на любую ссылку, а затем префикс пути виден, но не непосредственно при открытии веб-сайта.
В функции set_locale у вас нет никакого значения по умолчанию, иначе в случае 'if' все недействительны. –
, но я тестировал только английский и французский браузер, и эти условия должны работать по крайней мере для этих случаев. – user2323
Хорошо, но это переводы, которые работают на главной странице (route_path) в соответствии с языковым стандартом? –