我最近为Rails 4.0.4应用程序更新了我的routes.rb
文件,以便能够正确处理多个本地化。它看起来像这样:
scope ':locale', locale: /#{I18n.available_locales.join("|")}/ do
# All the routing happens here
# ...
root "home#index", as: :locale_root
match '*path', to: "locale#not_found", via: :all
end
# handles /
root to: redirect("/#{I18n.default_locale}")
match '*path', to: redirect(status: 307) {|params| "/#{I18n.default_locale}/#{params[:path]}"}, via: :all
match '', to: redirect("/#{I18n.default_locale}"), via: :all
我想路由静态页面,以便根据当前URL更改URL。让我们说我有一个"它如何运作"页面通过http://mydomain/how_it_works
解决。使用多个本地化我想得到:
http://mydomain/en/how_it_works # English
http://mydomain/it/come_funziona # Italian
路由器应链接到相同的controller#action
,更改显示的URL。
我无法找到实现这一目标的宝石或合适的解决方案,所以我想知道Rails是否能够本地化这种静态URL。
此外,我希望能够在视图中使用相同的*_path
帮助程序来解决这些URL,"忽略"当前的语言环境。 ES。如果我使用how_it_works_path
且区域设置为:en
,则会收到http://mydomain/en/how_it_works
,否则如果区域设置为:it
,则会收到http://mydomain/it/come_funziona
。
答案 0 :(得分:1)
我知道这是2年前被问到的,但也许这对像我这样现在面临这个问题的人有帮助。
我的问题非常相似,我最终在Rails 5应用程序中使用以下gem:https://github.com/enriclluelles/route_translator