【发布时间】:2014-05-07 21:20:43
【问题描述】:
我最近为 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。
我一直找不到 gem 或合适的解决方案来实现这一点,所以我想知道 Rails 是否能够本地化这种静态 URL。
此外,我希望能够在视图中使用相同的 *_path 助手来处理这些 URL,“忽略”当前语言环境。埃斯。如果我使用how_it_works_path 并且语言环境是:en 我得到http://mydomain/en/how_it_works,否则如果语言环境是:it 我得到http://mydomain/it/come_funziona。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 routing url-routing