【问题标题】:ActiveRecord error messages: translation for fieldsActiveRecord 错误消息:字段翻译
【发布时间】:2023-04-08 23:23:01
【问题描述】:

我已使用http://guides.rubyonrails.org/i18n.html 中指定的说明 翻译我的模型的字段,但标签没有翻译。我做错了什么。

我有一个 User 模型,字段为 name,我想将它翻译成巴西葡萄牙语 (pt_br),所以我得到了我的 pt_br.yml:

pt_br:
    errors: "Erro!"
    activerecord:
        models:
            user: "Usuário"
        attributes:
            name: "Nome"
            address: "Endereço"
        errors:
            template:
                body: "Por favor, corrija os campos assinalados"
                header: "Dados inválidos"
            messages:
                blank: "é obrigatório"
                taken: "já existe"
                too_short: "incompleto"

当我到达带有表单的页面时:

<% form_for(@usuario) do |f| %>
<%= f.error_messages %>
<%= f.label :name %>
<%= f.text_field :name %>
<% end %>

我仍然将该字段标记为“名称”,而不是像我希望的那样标记为“名称”。 我也有

config.i18n.default_locale = :pt_br 

在我的环境中.rb

缺少什么?

【问题讨论】:

    标签: ruby-on-rails forms activerecord internationalization


    【解决方案1】:

    您需要在user 下命名您的属性,即:

    pt_br:
      activerecord:
        attributes:
          user:
            name: "Nome"
            address: "Endereço"
    

    您也可以安装i18n_label plugin 来自动翻译标签。

    【讨论】:

    • 太棒了!它有效,但您的链接有问题(可能是下划线)
    【解决方案2】:

    你可以试试&lt;%= f.label :name, t('activerecord.attributes.name') %&gt;

    【讨论】:

    • 它适用于该字段,但我仍然在错误框中得到未翻译的文本(例如,当我将必填字段留空时)
    【解决方案3】:

    human_attribute_name 呢?从 Rails 2.1.0 开始就有了吗?

    我认为它比任何其他解决方案都要好:

    <%= f.label :name, User.human_attribute_name(:name) %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2022-10-15
      • 2019-07-27
      相关资源
      最近更新 更多