【问题标题】:I18n routes railsI18n 路线轨道
【发布时间】:2023-03-02 21:47:01
【问题描述】:

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

今天我正在使用以下方法,但我没有收到 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"

我怎样才能做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

    # 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中覆盖它的硬编码

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多