i18 - How to translate attributes in error messages

1

Friends I have something like this:

user.rb:

class User < ActiveRecord::Base
    has_one :address, autosave: true, dependent: :destroy
    accepts_nested_attributes_for(:address, update_only: true, allow_destroy:true)
end

address.rb

class Address < ActiveRecord::Base
    belongs_to :user
    belongs_to :country
    belongs_to :state
    belongs_to :city

    validates :country_id, presence: true, on: :update
    validates :state_id, :city_id, presence: true, on: :update, if: :is_brasil?

    def is_brasil?
        country_id.eql? 34
    end
end

When saving the user update form, when I do not fill state_id and / or city_id I have:

  

Address state can not be empty

     

Address city can not be empty

My question is how to translate the Address state and Address city items.

Thank you!

    
asked by anonymous 27.12.2014 / 05:36

2 answers

1

Hey, the solution was simple:

em: config / locales / pt-BR.yml

pt-BR:
 ...
 ...
activerecord:
    attributes:
      user:
        address:
          state_id: 'Estado'
          city_id: 'Cidade'
     name: 'Nome'
     ...
     ...

I hope it helps.

    
27.12.2014 / 05:59
0

Copy this content to config / locales / en-BR.yml you will avoid problems with the translation if you have fields of type date (fields with date) and others things more! Hope it helps!

pt-BR:
  date:
    abbr_day_names:
    - Dom
    - Seg
    - Ter
    - Qua
    - Qui
    - Sex
    - Sáb
    abbr_month_names:
    -
    - Jan
    - Fev
    - Mar
    - Abr
    - Mai
    - Jun
    - Jul
    - Ago
    - Set
    - Out
    - Nov
    - Dez
    day_names:
    - Domingo
    - Segunda
    - Terça
    - Quarta
    - Quinta
    - Sexta
    - Sábado
    formats:
      default: ! '%d/%m/%Y'
      long: ! '%d de %B de %Y'
      short: ! '%d de %B'
    month_names:
    -
    - Janeiro
    - Fevereiro
    - Março
    - Abril
    - Maio
    - Junho
    - Julho
    - Agosto
    - Setembro
    - Outubro
    - Novembro
    - Dezembro
    order:
    - :day
    - :month
    - :year
  datetime:
    distance_in_words:
      about_x_hours:
        one: aproximadamente 1 hora
        other: aproximadamente %{count} horas
      about_x_months:
        one: aproximadamente 1 mês
        other: aproximadamente %{count} meses
      about_x_years:
        one: aproximadamente 1 ano
        other: aproximadamente %{count} anos
      almost_x_years:
        one: quase 1 ano
        other: quase %{count} anos
      half_a_minute: meio minuto
      less_than_x_minutes:
        one: menos de um minuto
        other: menos de %{count} minutos
      less_than_x_seconds:
        one: menos de 1 segundo
        other: menos de %{count} segundos
      over_x_years:
        one: mais de 1 ano
        other: mais de %{count} anos
      x_days:
        one: 1 dia
        other: ! '%{count} dias'
      x_minutes:
        one: 1 minuto
        other: ! '%{count} minutos'
      x_months:
        one: 1 mês
        other: ! '%{count} meses'
      x_seconds:
        one: 1 segundo
        other: ! '%{count} segundos'
    prompts:
      day: Dia
      hour: Hora
      minute: Minuto
      month: Mês
      second: Segundo
      year: Ano
  errors:
    format: ! '%{attribute} %{message}'
    messages:
      accepted: deve ser aceito
      blank: não pode ficar em branco
      present: deve ficar em branco
      confirmation: não é igual a %{attribute}
      empty: não pode ficar vazio
      equal_to: deve ser igual a %{count}
      even: deve ser par
      exclusion: não está disponível
      greater_than: deve ser maior que %{count}
      greater_than_or_equal_to: deve ser maior ou igual a %{count}
      inclusion: não está incluído na lista
      invalid: não é válido
      less_than: deve ser menor que %{count}
      less_than_or_equal_to: deve ser menor ou igual a %{count}
      not_a_number: não é um número
      not_an_integer: não é um número inteiro
      odd: deve ser ímpar
      record_invalid: ! 'A validação falhou: %{errors}'
      restrict_dependent_destroy:
        one: "Não é possível excluir o registro pois existe um %{record} dependente"
        many: "Não é possível excluir o registro pois existem %{record} dependentes"
      taken: já está em uso
      too_long: ! 'é muito longo (máximo: %{count} caracteres)'
      too_short: ! 'é muito curto (mínimo: %{count} caracteres)'
      wrong_length: não possui o tamanho esperado (%{count} caracteres)
      other_than: "deve ser diferente de %{count}"
    template:
      body: ! 'Por favor, verifique o(s) seguinte(s) campo(s):'
      header:
        one: ! 'Não foi possível gravar %{model}: 1 erro'
        other: ! 'Não foi possível gravar %{model}: %{count} erros.'
  helpers:
    select:
      prompt: Por favor selecione
    submit:
      create: Criar %{model}
      submit: Salvar %{model}
      update: Atualizar %{model}
  number:
    currency:
      format:
        delimiter: .
        format: ! '%u %n'
        precision: 2
        separator: ! ','
        significant: false
        strip_insignificant_zeros: false
        unit: R$
    format:
      delimiter: .
      precision: 3
      separator: ! ','
      significant: false
      strip_insignificant_zeros: false
    human:
      decimal_units:
        format: ! '%n %u'
        units:
          billion:
            one: bilhão
            other: bilhões
          million:
            one: milhão
            other: milhões
          quadrillion:
            one: quatrilhão
            other: quatrilhões
          thousand: mil
          trillion:
            one: trilhão
            other: trilhões
          unit: ''
      format:
        delimiter: .
        precision: 2
        significant: true
        strip_insignificant_zeros: true
      storage_units:
        format: ! '%n %u'
        units:
          byte:
            one: Byte
            other: Bytes
          gb: GB
          kb: KB
          mb: MB
          tb: TB
    percentage:
      format:
        delimiter: .
        format: "%n%"
    precision:
      format:
        delimiter: .
  support:
    array:
      last_word_connector: ! ' e '
      two_words_connector: ! ' e '
      words_connector: ! ', '
  time:
    am: ''
    formats:
      default: ! '%a, %d de %B de %Y, %H:%M:%S %z'
      long: ! '%d de %B de %Y, %H:%M'
      short: ! '%d de %B, %H:%M'
    pm: ''
    
29.12.2014 / 15:53