2010-04-08 92 views
3

我想什么,能够做的是:在如何使Rails 3路由器使用本地化文件来本地化URL?

配置

/routes.rb中

resources :posts 
在配置

/区域/ en.yml

en: 
    resources: 
    posts: "posts" 
    new: "new" 
    edit: "edit" 
在配置

/区域设置/tr.yml

tr: 
    resources: 
    posts: "yazilar" 
    new: "yeni" 
    edit: "duzenle" 

,并得到

I18n.locale = :en 
edit_post_path(3) #=> /posts/3/edit 

I18n.locale = :tr 
edit_post_path(3) #=> /yazilar/3/duzenle 

我也会喜欢的Rails匹配任何这些路线随时随地通过相关区域设置在params哈希表,这样当我浏览到/yazilar,请求应该被路由到posts#index行动中的:tr区域params哈希。

任何简单或复杂的方法呢?

回答

7

还有一个在 http://github.com/kwi/i18n_routingi18n_routing插件由纪尧姆Luccisano能够解决大部分的这些问题 然而,目前缺乏平移动作的名称,如../new../edit。尽管如此,纪尧姆说他将实施“即将”

更新:操作名称翻译已在i18n_routing中实施。感谢Guillaume。 :)

0

的translate_routes插件劳尔Murciano饰提供了一些你所要求的功能:

http://github.com/raul/translate_routes

它仅适用于Rails的2.3.x版本,据我了解,虽然。但至少你可以得到一些想法,甚至可以派发插件,并让它自己在Rails 3上运行。

+0

这一个利用范围来确定语言环境,一个'/:区域/:资源/:URL的id'类型不是我想要的。抱歉。 – edgerunner 2010-04-18 11:57:20

2

当提到宝石不再是积极维护,这里有一些较新的解决方案:

无一不是translate_routes

或继任一个更强大(和复杂)的解决方案:

+0

他们是否翻译动作动词? – edgerunner 2014-03-14 07:34:37

+0

'route_translator'确实翻译了动词(在描述中是new-> nuevo)。我不确定'rails-translate-routes'。它在翻译文件中显示'new:crear',但'rake routes'不显示翻译的动词(在文档中,我没有尝试) – 2014-03-14 12:15:27