如何使Rails 3路由器使用本地化文件来本地化URL?
我想什么,能够做的是:在如何使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哈希。
任何简单或复杂的方法呢?
还有一个在 http://github.com/kwi/i18n_routing的i18n_routing插件由纪尧姆Luccisano能够解决大部分的这些问题 然而,目前缺乏平移动作的名称,如../new
和../edit
。尽管如此,纪尧姆说他将实施“即将”。
更新:操作名称翻译已在i18n_routing中实施。感谢Guillaume。 :)
的translate_routes插件劳尔Murciano饰提供了一些你所要求的功能:
http://github.com/raul/translate_routes
它仅适用于Rails的2.3.x版本,据我了解,虽然。但至少你可以得到一些想法,甚至可以派发插件,并让它自己在Rails 3上运行。
当提到宝石不再是积极维护,这里有一些较新的解决方案:
无一不是translate_routes
或继任一个更强大(和复杂)的解决方案:
他们是否翻译动作动词? – edgerunner 2014-03-14 07:34:37
'route_translator'确实翻译了动词(在描述中是new-> nuevo)。我不确定'rails-translate-routes'。它在翻译文件中显示'new:crear',但'rake routes'不显示翻译的动词(在文档中,我没有尝试) – 2014-03-14 12:15:27
这一个利用范围来确定语言环境,一个'/:区域/:资源/:URL的id'类型不是我想要的。抱歉。 – edgerunner 2010-04-18 11:57:20