代码之家  ›  专栏  ›  技术社区  ›  edgerunner

如何使用本地化文件使Rails 3路由器本地化URL?

  •  3
  • edgerunner  · 技术社区  · 14 年前

    我想做的是:

    在config/routes.rb中

    resources :posts
    

    在config/locale/en.yml中

    en:
      resources:
        posts: "posts"
        new: "new"
        edit: "edit"
    

    在config/locale/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随时匹配这些路由中的任何一个,并在参数散列中传递相关的区域设置,这样当我导航到 /yazilar ,请求应路由到 posts#index 行动与 :tr 参数哈希中的区域设置。

    有什么简单或复杂的方法吗?

    3 回复  |  直到 10 年前
        1
  •  7
  •   edgerunner    14 年前

    还有 I18NL路由 Guillaume Luccisano的插件 http://github.com/kwi/i18n_routing 解决了大部分问题 但是,它目前缺少像 ../new ../edit .吉劳姆说他会实施的 “很快” 但是。

    更新:操作名称转换已在中实现 I18NL路由 . 谢谢桂劳姆。:)

        2
  •  2
  •   Martin M    10 年前

    由于上述GEM不再得到积极维护,以下是一些最新的解决方案:

    两者都是 translate_routes

    或者更强大(更复杂)的解决方案:

        3
  •  0
  •   marzagao    14 年前

    Raul Murciano的“翻译路线”插件提供了您需要的一些功能:

    http://github.com/raul/translate_routes

    据我所知,它只适用于Rails 2.3.x。但至少你可以得到一些想法,或者甚至可以自己把这个插件移植到Rails3上。