0

Я добавил локализации в моем веб-сайте, и она работает отлично, за исключением двух точекдобавление path_prefix в root_url

  1. Когда я открываю сайт, например www.test.help.com он показывает этот адрес вместо этого он должен также show locale, поскольку я использую path_prefix в своем контроллере приложений.
  2. Когда я нажимаю, чтобы изменить язык, 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' 

После я нажимаю на любую ссылку, а затем префикс пути виден, но не непосредственно при открытии веб-сайта.

+0

В функции set_locale у вас нет никакого значения по умолчанию, иначе в случае 'if' все недействительны. –

+0

, но я тестировал только английский и французский браузер, и эти условия должны работать по крайней мере для этих случаев. – user2323

+0

Хорошо, но это переводы, которые работают на главной странице (route_path) в соответствии с языковым стандартом? –

ответ

0

Когда вы прибудете на какой-либо URL-адрес для первого приложения (root_url, users_url ...), URL-адрес отображается в вашем веб-браузере, прежде чем вы войдете в set_locale. Затем, если вы посетите другую ссылку в приложении, языковой стандарт будет добавлен в URL-адрес. Но переводы будут работать в любом случае с локали, которую вы установили в I18n.locale.

+0

Но это не какой-то намек на то, что я просил, ничего для вопроса ... – user2323

+0

Можете ли вы точно указать это? «Когда я нажимаю, чтобы изменить язык, URL-адрес не меняется мгновенно» –

+0

, когда я нажимаю на изменение языка от en до fr, url также должен мгновенно меняться и от en до fr, но он остается включенным даже при изменении текста. – user2323

Смежные вопросы