Search code examples
ruby-on-railsinternationalizationlocale

Rails ES locale not working


I'm trying to set Rails locale up (for Spanish), but it seems not working. I've put the line config.i18n.locale = :es in my application.rb

And my es.yml locale file is:

es:
date:
  abbr_day_names:
  - dom
  - lun
  - mar
  - mié
  - jue
  - vie
  - sáb
  abbr_month_names:
  -
  - ene
  - feb
  - mar
  - abr
  - may
  - jun
  - jul
  - ago
  - sep
  - oct
  - nov
  - dic
  day_names:
  - domingo
  - lunes
  - martes
  - miércoles
  - jueves
  - viernes
  - sábado
  formats:
    default: ! '%d/%m/%Y'
    long: ! '%d de %B de %Y'
    short: ! '%d de %b'
  month_names:
  -
  - enero
  - febrero
  - marzo
  - abril
  - mayo
  - junio
  - julio
  - agosto
  - septiembre
  - octubre
  - noviembre
  - diciembre
  order:
  - :day
  - :month
  - :year
datetime:
  distance_in_words:
    about_x_hours:
      one: alrededor de 1 hora
      other: alrededor de %{count} horas
    about_x_months:
      one: alrededor de 1 mes
      other: alrededor de %{count} meses
    about_x_years:
      one: alrededor de 1 año
      other: alrededor de %{count} años
    almost_x_years:
      one: casi 1 año
      other: casi %{count} años
    half_a_minute: medio minuto
    less_than_x_minutes:
      one: menos de 1 minuto
      other: menos de %{count} minutos
    less_than_x_seconds:
      one: menos de 1 segundo
      other: menos de %{count} segundos
    over_x_years:
      one: más de 1 año
      other: más de %{count} años
    x_days:
      one: 1 día
      other: ! '%{count} días'
    x_minutes:
      one: 1 minuto
      other: ! '%{count} minutos'
    x_months:
      one: 1 mes
      other: ! '%{count} meses'
    x_seconds:
      one: 1 segundo
      other: ! '%{count} segundos'
  prompts:
    day: Día
    hour: Hora
    minute: Minutos
    month: Mes
    second: Segundos
    year: Año
errors:
  format: ! '%{attribute} %{message}'
  messages:
    accepted: debe ser aceptado
    blank: no puede estar en blanco
    confirmation: no coincide con la confirmación
    empty: no puede estar vacío
    equal_to: debe ser igual a %{count}
    even: debe ser par
    exclusion: está reservado
    greater_than: debe ser mayor que %{count}
    greater_than_or_equal_to: debe ser mayor que o igual a %{count}
    inclusion: no está incluido en la lista
    invalid: no es válido
    less_than: debe ser menor que %{count}
    less_than_or_equal_to: debe ser menor que o igual a %{count}
    not_a_number: no es un número
    not_an_integer: debe ser un entero
    odd: debe ser impar
    record_invalid: ! 'La validación falló: %{errors}'
    taken: ya está en uso
    too_long: es demasiado largo (%{count} caracteres máximo)
    too_short: es demasiado corto (%{count} caracteres mínimo)
    wrong_length: no tiene la longitud correcta (%{count} caracteres exactos)
  template:
    body: ! 'Se encontraron problemas con los siguientes campos:'
    header:
      one: No se pudo guardar este/a %{model} porque se encontró 1 error
      other: No se pudo guardar este/a %{model} porque se encontraron %{count} errores
helpers:
  select:
    prompt: Por favor seleccione
  submit:
    create: Crear %{model}
    submit: Guardar %{model}
    update: Actualizar %{model}
number:
  currency:
    format:
      delimiter: .
      format: ! '%n %u'
      precision: 2
      separator: ! ','
      significant: false
      strip_insignificant_zeros: false
      unit: €
  format:
    delimiter: .
    precision: 3
    separator: ! ','
    significant: false
    strip_insignificant_zeros: false
  human:
    decimal_units:
      format: ! '%n %u'
      units:
        billion: mil millones
        million: millón
        quadrillion: mil billones
        thousand: mil
        trillion: billón
        unit: ''
    format:
      delimiter: ''
      precision: 1
      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: ''
  precision:
    format:
      delimiter: ''
support:
  array:
    last_word_connector: ! ', y '
    two_words_connector: ! ' y '
    words_connector: ! ', '
time:
  am: 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: pm

Am I missing something?

UPDATE: application.rb:

module Sushi
  class Application < Rails::Application

    config.i18n.locale = :es

Solution

  • In a comment from the first answer you say you're using

    <%= lanzadera.time.strftime("%B %e, %Y at %I:%M %p") %>
    

    strftime is however not I18n-aware, so you must use it like this

    <%= l lanzadera.time, format: :long %>
    

    l is shorthand for I18n.l If you need a special format just add a line under time/formats in your es.yml file.