I18n路由导航

时间:2015-07-27 20:28:15

标签: ruby-on-rails-4 routes rails-i18n

我想用英语编程,但我的输出路径必须是另一种语言。

今天我使用以下方法,但我没有收到index操作,newedit仍然缺少翻译。我试图使用test: one: other:但没有成功。

resource :activities, path: I18n.t('routes.test')

# config/routes.rb

     activities POST   /teste(.:format)            activities#create
 new_activities GET    /teste/new(.:format)        activities#new
edit_activities GET    /teste/edit(.:format)       activities#edit
                GET    /teste(.:format)            activities#show
                PATCH  /teste(.:format)            activities#update
                PUT    /teste(.:format)            activities#update
                DELETE /teste(.:format)            activities#destroy

# config/locales/routes.yml

fr:
  routes:
    test: "teste"

我该如何实现?

1 个答案:

答案 0 :(得分:2)

您应该创建一个routes.yml文件,其中包含路由:作为主键,以及您想要更深层次翻译的路线

# config/locales/routes.yml
routes:
  activities: "something_else"

并在routes.rb

中调用它
resources :activities, path: I18n.t('activities', locale: :routes)

然后你独立于I18n.locale

中设置的语言

输出是这样的:

       Prefix Verb   URI Pattern                        Controller#Action
   activities GET    /something_else(.:format)          activities#index
              POST   /something_else(.:format)          activities#create
 new_activity GET    /something_else/new(.:format)      activities#new
edit_activity GET    /something_else/:id/edit(.:format) activities#edit
     activity GET    /something_else/:id(.:format)      activities#show
              PATCH  /something_else/:id(.:format)      activities#update
              PUT    /something_else/:id(.:format)      activities#update
              DELETE /something_else/:id(.:format)      activities#destroy

编辑:忽略了你也想翻译新的和编辑,你可以这样做:

scope(path_names: { new: I18n.t('new', locale: :routes), edit: I18n.t('edit', locale: :routes) }) do
  resources :activities, path: I18n.t('activities', locale: :routes)
end

或者你可以像在http://guides.rubyonrails.org/routing.html#translated-paths

中提到的那样在routes.rb中硬编码