Estoy agregando I18N a mi aplicación de rieles al pasar la configuración regional usando parámetros de URL. Mis direcciones URL se parecen a http://example.com/en/users y http://example.com/ar/users (para las configuraciones regionales en inglés y árabe, respectivamente).Los rieles enlazan a la página actual y le pasan los parámetros
En mi archivo de rutas, he definido mis rutas con la opción: path_prefix:
map.resources :users, :path_prefix => '/:locale'
y la configuración regional se está estableciendo el uso de un before_filter definido en ApplicationController
def set_locale
I18n.locale = params[:locale]
end
que también definió ApplicationController # default_url_options, para agregar la configuración regional a todas las direcciones URL generadas por la aplicación:
def default_url_options(options={})
{:locale => I18n.locale}
end
Lo que quiero es agregar un enlace en el encabezado de diseño (que se muestra en todas las páginas) que se vincularía a la misma página pero con la otra configuración regional.
Por ejemplo, si estoy navegando por la configuración regional árabe, quiero un enlace "Inglés" en el encabezado, que me redireccionará a mi página actual, y estableceré la configuración regional en inglés. ¿Hay alguna manera de hacer esto en los rieles?
Gracias, esta sería una solución elegante. Sin embargo, no funciona con URLs tranquilas: s – Faisal
Esto es genial y elegante, he estado buscando una solución como esta por horas ... No entiendo por qué no cumple con las URL RESTful? Puede dar un ejemplo ? – Alex
Si quiere suprimir la configuración regional: url_for (: locale => nil) –