2010-04-08 52 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