Если вы следуете I18N Rails Guide , все сгенерированные ссылки содержат параметр locale (localhost / en / about, localhost / fr / about). Это потому, что мы используем метод default_url_options
, чтобы всегда добавлять параметр Locale:
def default_url_options(options={})
{ :locale => I18n.locale }
end
Можно ли удалить параметр языкового стандарта из сгенерированного URL-адреса, если языковой стандарт неизвестен или задан по умолчанию?
Что мне нужно:
- Неизвестный язык:
mysite/about
- Язык: en:
mysite/about
(а не localhost/en/about
)
- Local fr:
mysite/fr/about
Я пытался установить языковой стандарт только в том случае, если он не был задан по умолчанию, но в результате сгенерированные ссылки никогда не содержат параметр языкового стандарта ...
Я пробовал много вещей, как эта
def default_url_options(options={})
if I18n.locale == :fr
{ :locale => I18n.locale }
else
{ :locale => nil }
end
end
Весь код:
ApplicationController.rb:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale]
end
def default_url_options(options={})
{ :locale => I18n.locale }
end
routes.rb
scope "(:locale)", :locale => /en|fr/ do
match 'about' => 'static_pages#about', :via => :get
match 'contact' => 'static_pages#contact', :via => :get
match '/' => 'search#index', :as => :search
end
root :to => 'search#index'