【问题标题】:Rails 3 ActiveForm internationalization (i18n)Rails 3 ActiveForm 国际化 (i18n)
【发布时间】:2012-02-25 22:34:12
【问题描述】:

我有一个 Rails 3.1.1 项目,使用 Gem ActiveFrom 扩展 ActiveModel 来验证非持久模型。在我的 i18n yml 文件中,我有以下代码:

activemodel:
  attributes:
    contact_form:
      name: "Name"
      phone: "Telefon"
  errors:
    models:
      contact_form:
        attributes:
          name:
            blank: "Sie müssen Ihren Namen angeben."
          phone:
            blank: "Sie müssen eine Telefonnummer angeben." 

当我收到所有带有@contact_form.errors.full_messages 的错误消息时,我认为这些消息已被翻译,但属性没有被翻译,例如:

Phone Sie müssen eine Telefonnummer angeben.

Phone也应该翻译成Telefon

当我对持久模型和 ActiveRecord 做同样的事情时,这是否有效?谁能告诉我 ActiveRecord 和 ActiveModel 在属性翻译上的区别?

【问题讨论】:

    标签: ruby-on-rails internationalization activemodel


    【解决方案1】:

    经过一番研究,我发现了问题所在。这是 ActiveFrom 中的一个错误,它没有使用 i18n 翻译。我已经解决了这个问题并创建了一个新的 gem rails3-active_form

    你可以在https://rubygems.org/gems/rails3-active_form找到它。

    将这一行添加到您的 Gemfile 中:

    gem "rails3-active_form", "~> 2.0.0"
    

    这对你的模型:

    require "active_form"
    
    class ContactForm < ActiveForm
      attr_accessor :name, :email, :contact_number, :address, :purpose
    
      # ...
    end 
    

    【讨论】: