使用i18n在更新和创建之间更改文本

时间:2011-02-14 23:03:47

标签: ruby-on-rails ruby-on-rails-3 internationalization

我有一个模型,它使用相同的表单来创建和更新控制器操作。 没什么特别的。我有提交按钮根据使用en.yml

的操作更改其文本
en:
  helpers:
  submit:
    location:
      create: "Add to map"
      update: "Save changes"

如何根据相应的操作更改此表单上的文本正文?

例如,如果是创建,

<h1>Create new location</h1>

如果更新

<h1>Update location</h1>

1 个答案:

答案 0 :(得分:1)

您只需将文本添加到en.yml文件中即可:

en:
  create_new_location: 'Create new location'
  update_location: 'Update location'

然后在视图中使用以下内容(创建/更新)

<h1><%= I18n.t(params[:action] == 'create' ? 'create_new_location' : 'update_location') %></h1>

或者,如果你使用new / edit:

<h1><%= I18n.t(params[:action] == 'new' ? 'create_new_location' : 'update_location') %></h1>

您还可以根据操作进行翻译,并将其嵌入翻译文本中,方法如下:

I18n.t "location.action.#{params[:action]}"

我建议不要这样做,因为要告诉你实际翻译的是哪个文字更难。