在之前的Rails 2.3项目中,我使用translate_routes gem来执行路由的转换。它运作得很好。 在我的新Rails 3.1项目中,我再次需要路由转换。不幸的是,translate_routes不再起作用了,劳尔的开发者宣布他将不再维护宝石。 我尝试使用Rails 3.1上应该没问题的项目的一个fork,但是我做不了多少。
有没有办法在没有宝石的情况下建立路线翻译?
这是一个没有翻译的工作路线的例子。
constraints(:subdomain => 'admin') do
scope "(:locale)", :locale => /fr|de/ do
resources :country, :languages
match '/' => 'home#admin', :as => :admin_home
end
end
正如您所看到的,我还想要一个没有用于我的默认语言环境的语言环境的默认路由:en。
之前有人这样做过吗? 感谢
答案 0 :(得分:1)
对你来说可能有点晚了,但对其他人来说可能会有所帮助,请尝试使用translate_routes的分支:
答案 1 :(得分:1)
早些时候看到你的帖子,但后来发现了另一个解决方案。
我想翻译Rails路由及其默认资源操作,但我不喜欢rails-translate-routes
将_nl
添加到我的默认路径名。
我最终做了这个(也适用于rails 4.0),当你用1或2种语言展示你的应用程序时,这应该是一个很好的解决方案。
# config/routes.rb
Testapp::Application.routes.draw do
# This scope changes resources methods names
scope(path_names: { new: I18n.t('routename.new'), edit: I18n.t('routename.edit') }) do
# devise works fine with this technique
devise_for :users, path: I18n.t('routename.userspath')
# resource path names can be translated like this
resources :cars, path: I18n.t('routename.carspath')
# url prefixes can be translated to
get "#{I18n.t('routename.carspath')}/export", to: 'cars#export'
end
end
和
# config/locales/nl.yml
nl:
routename:
## methods
new: 'nieuw'
edit: 'aanpassen'
## resources, etc.
userpath: 'gebruikers'
carspath: 'voertuigen'
结果:
更新和销毁不是必需的,因为它们作为后期操作链接到根目录。保存你的工作;)