在表单操作中翻译Rails模型名称

8

我希望使用i18n系统翻译一个Rails表单。

我的模型属性已经正确翻译,但是当我想要翻译提交操作时,模型名称没有被翻译。

这是我的fr.yml本地化文件:

fr:
  activerecord:
    model:
      character:
        one: "Personnage"
        other: "Personnages"
    attributes:
      character:
        name: "Nom"
        title: "Titre"
        biography: "Biographie"
  helpers:
    submit:
      update: "Mise à jour %{model}"

我的_form.html.erb文件是

<%= form_for(@character) do |f| %>
  <% if @character.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@character.errors.count, "error") %> prohibited this character from being saved:</h2>

      <ul>
      <% @character.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :biography %><br />
    <%= f.text_area :biography, :rows => 8%>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

在我的表单中,我期望更新按钮显示为“Mise à jour Personnage”,但是现在它仍然显示为“Mise à jour Character”。谢谢您的帮助!
2个回答

12

看起来你有一个model,但应该是models

将你的fr.yml更改为以下内容:

fr:
  activerecord:
    models:
      character:
        one: "Personnage"
        other: "Personnages"
    ...

请查看rails i18n文档中关于Active Record模型翻译的部分,以获取详细信息。


1
因为我遇到了这个问题:如果你的模型使用了 ActiveModel 但没有直接使用 ActiveRecord(可能是因为你使用了数据映射器),那么请使用 activemodel.models.character - Henrik N
对我没用,按钮仍然标记为(在我的情况下,pt-br)“Criar Category”,而不是“Criar Categoria”。 - Arthur Corenzan

1

当在form_for标签中使用提交按钮时,这是默认行为...它将显示“更新字符”而不是“更新#{Model.name}”...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接