views:

169

answers:

2

I have a form like this :

<fieldset>
    <legend>
        اضافه کردن یک قالب
    </legend>
    <%= error_messages_for 'theme' , :header_message => "موارد زیر دارای اشکال می باشند، لطفا دوباره بررسی نمایید :" , :message => nil %>
    <ol>
        <% form_for @theme do |t| %>
        <li>
            <%= label :theme , :نام %>
            <%= t.text_field :name %>
        </li>
        <li>
            <%= label :theme , :نام_انگلیسی %>
            <%= t.text_field :en_name %>
        </li>
        <li>
            <%= label :theme , :قیمت %>
            <%= t.text_field :price %>
        </li>
        <li>
            <%= label :theme , :قیمت_ویژه %>
            <%= t.text_field :unique_price %>
        </li>
        <li>
            <%= label :theme , :توضیحات %>
            <%= t.text_area :description %>
        </li>
        <li>
            <%= submit_tag "اضافه کردن قالب" %>
        </li>
        <% end %>
    </ol>
</fieldset>

in my model i have a validation :

  validates_presence_of :name , :en_name , :price , :unique_price , :description , :message => "نباید خالی باشد"

the problem is i want to have a unicode(persian) name in my validation error message, currently it returns something like this error :

موارد زیر دارای اشکال می باشند، لطفا دوباره بررسی نمایید :

    * Name نباید خالی باشد

all i want to do is somehow change the 'Name' in error message to a persian word, what can I do ?

+1  A: 

You need to have a look at humanized attributes

in your model (each model)

  HUMANIZED_ATTRIBUTES = {
    :name => "نا"
  }

  def self.human_attribute_name(attr)
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end
Question Mark
Many thanks for your help :)
Datis
+2  A: 

Since 2.3, the proper way to do it is to use i18n. See: http://guides.rubyonrails.org/i18n.html section 5.2.1.