Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a default english translation file for Active Record?

I am upgrading an application a rails application to 2.3.2 and I am finding that I can't display the default validation error messages for ActiveRecord because I don't have a translation file for it.

This is the error that is reported:

translation missing: en-US, activerecord, errors, template, header
translation missing: en-US, activerecord, errors, template, body
Email translation missing: en-US, activerecord, errors, models, user, attributes, email, taken

Does anyone know where I can find a default English translation file that would include all the strings that the validations might use?

like image 706
Kyle Boon Avatar asked Apr 23 '09 18:04

Kyle Boon


2 Answers

This happened because my language setting was 'en-US' and not 'en'. There are translation files under activerecord/lib/locale. I copied these translations into a new file en_US.yml.

"en-US": 
  activerecord:
    errors: 
        template: 
            body: There were problems with the following fields
            header: 
                one: 1 error prohibited this {{model}} from being saved
                other: "{{count}} errors prohibited this {{model}} from being saved"  
        messages:
            inclusion: "is not included in the list"
            exclusion: "is reserved"
            invalid: "is invalid"
            confirmation: "doesn't match confirmation"
            accepted: "must be accepted"
            empty: "can't be empty"
            blank: "can't be blank"
            too_long: "is too long (maximum is {{count}} characters)"
            too_short: "is too short (minimum is {{count}} characters)"
            wrong_length: "is the wrong length (should be {{count}} characters)"
            taken: "has already been taken"
            not_a_number: "is not a number"
            greater_than: "must be greater than {{count}}"
            greater_than_or_equal_to: "must be greater than or equal to {{count}}"
            equal_to: "must be equal to {{count}}"
            less_than: "must be less than {{count}}"
            less_than_or_equal_to: "must be less than or equal to {{count}}"
            odd: "must be odd"
            even: "must be even"

Then I just added my custom strings after these.

like image 138
Kyle Boon Avatar answered Nov 06 '22 18:11

Kyle Boon


You can avoid copying and pasting the standard translations by telling I18n to fallback to :en when it can't find a translation in :en_US. The example initializer below shows how we did it for falling back from 'en-GB' and 'it-IT' to the standrd 'en', throwing in pluralizations for good measure

# config/initializer/i18n.rb 

I18n.backend = I18n::Backend::Chain.new(I18n.backend)
I18n::Backend::Chain.send(:include, I18n::Backend::Fallbacks)
I18n.fallbacks[:'en-GB'] << :en
I18n.fallbacks[:'it-IT'] << :en

require "i18n/backend/pluralization" 
I18n::Backend::Chain.send(:include, I18n::Backend::Pluralization)
like image 22
stephenr Avatar answered Nov 06 '22 17:11

stephenr