Si sigue el I18N Rails Guide, todos los enlaces generados contienen el parámetro locale (localhost/en/about, localhost/fr/about). Esto se debe a que utilizamos el método default_url_options
añadir siempre el parámetro de configuración regional:¿Cómo evitar agregar la configuración regional predeterminada en las URL generadas?
def default_url_options(options={})
{ :locale => I18n.locale }
end
¿Es posible eliminar el parámetro de configuración regional de la URL generada cuando la configuración regional es desconocido o un defecto?
Lo que necesito:
- Locale desconocida:
mysite/about
- Locale es:
mysite/about
(y nolocalhost/en/about
) - configuración regional fr:
mysite/fr/about
traté de establecer sólo el locale si no era el predeterminado, pero el resultado es que los enlaces generados nunca contienen el parámetro de configuración regional ...
He intentado muchas cosas como ésta
def default_url_options(options={})
if I18n.locale == :fr
{ :locale => I18n.locale }
else
{ :locale => nil }
end
end
código entero:
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'
Si no desea pasar a través de URL, se debe considerar almacenarla en sesión o cookie. – apneadiving
No quiero pasarlo en la url cuando la configuración regional actual es la predeterminada. Cuando esto no es lo predeterminado, está bien tenerlo en la url. – Tom