Как я могу заставить маршрутизатор Rails 3 локализовать URL-адреса с помощью файлов локализации? - PullRequest
3 голосов
/ 08 апреля 2010

То, что я хотел бы сделать, это:

в config / rout.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 в любое время соответствовал любому из этих маршрутов и передавал соответствующий языковой стандарт в хэше params, чтобы при переходе к /yazilar запрос направлялся на действие posts#index с * 1017. * локаль в хэше params.

Какой-нибудь простой или сложный способ сделать это?

Ответы [ 3 ]

7 голосов
/ 18 апреля 2010

Существует также плагин i18n_routing от Гийома Лучизано в http://github.com/kwi/i18n_routing, который решает большинство из этих проблем однако в настоящее время не хватает перевода имен действий, таких как ../new и ../edit. Гийом говорит, что он осуществит это "скоро" , хотя.

Обновление: преобразование имени действия было реализовано в i18n_routing . Спасибо, Гийом. :)

2 голосов
/ 03 марта 2014

Поскольку упомянутые драгоценные камни больше не поддерживаются, вот несколько более новых решений:

оба являются наследниками translate_routes

или более мощное (и сложное) решение:

0 голосов
/ 14 апреля 2010

Плагин translate_routes Рауля Мурчиано предоставляет некоторые функции, которые вы просите:

http://github.com/raul/translate_routes

Насколько я знаю, он работает только на Rails 2.3.x. Но, по крайней мере, вы можете получить некоторые идеи или даже разложить плагин и заставить его работать на Rails 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...