Rails 3 ActiveForm国际化(国际化)

问题描述:

我有一个Rails 3.1.1项目使用Gem ActiveFrom ActiveModel的扩展来验证非持久性模型。在我的国际化阳明文件我有以下代码:Rails 3 ActiveForm国际化(国际化)

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. 

电话应该被翻译成电话

当我用持久模型和ActiveRecord做同样的事情时,这是行得通的吗?任何人都可以告诉我从属性转换ActiveRecord和ActiveModel的区别?

经过一番研究,我发现了这个问题。这是ActiveFrom中的一个错误,没有使用i18n翻译。我已修复并创建了一个新宝石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