是否可以在Rails中本地化静态页面URL?

时间:2014-03-28 12:07:17

标签: ruby-on-rails ruby-on-rails-4 routing url-routing

我最近为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

1 个答案:

答案 0 :(得分:1)

我知道这是2年前被问到的,但也许这对像我这样现在面临这个问题的人有帮助。

我的问题非常相似,我最终在Rails 5应用程序中使用以下gem:https://github.com/enriclluelles/route_translator