MouseOver Studio

MouseOver Studio header image 2

i18n on Rails => mudanças no helper date_select

July 24th, 2008 por Diego Carrion · 3 comentários

Com o novo suporte a i18n no Rails o helper date_select ficou muito louco.

Olhem só a malandragem: caso os atributos date_order, months_names e abbr_month_names sejam necessários e não tenham sido especificados, eles iram ser procurados nos arquivo de mensagens/propriedades para os diferentes locales.

Por exemplo, eu posso ter os seguintes arquivos:

lib/locale/pt-BR.rb

I18n.store_translations 'pt-BR',
  :date => {
    :order => [:day, :month, :year],
    :month_names => %w[Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro]
  }

lib/locale/es-PE.rb

I18n.store_translations 'es-PE',
  :date => {
    :order => [:year, :day :month],
    :month_names => %w[Enero Febrero Marzo Abril Maio Junio Julio Agosto Setiembre Octubre Noviembre Diciembre]
  }

e na view correspondente somente executar:

date_select("post", "written_on")

e as combos apareceram na ordem e com os nomes dos meses definidos no arquivo de propriedades relacionado ao locale do usuário, muito legal!

Tags: i18n · rails

3 respostas ate agora ↓

  • 1 Jimmy // Jul 25, 2008 at 6:44 pm

    Kra gostei prak dos novos posts, logo estou visitando aqui para colocar em pratica os exemplos.

    Estou com uma idéia legal de app. usando Rails e esses posts vão ajudar!

    Domingão estamos ai denovo.
    “O pessoal tá com saudades”…confessa que está com saudades de tu papa xP

    []s

  • 2 Diego Carrion // Jul 25, 2008 at 7:31 pm

    Hahahah domingao a gente mete bala então. Assim chegamos preparados no Rails Summit :D

  • 3 iain // Aug 9, 2008 at 4:43 pm

    You forgot to add a nil value at the beginning of the months-array. There is no zeroth month, so that one should be nil (or anything else, because it wouldn’t happen).

    This should work:

    I18n.store_translations ‘pt-BR’,
    :date => {
    :order => [:day, :month, :year],
    :month_names => [nil] + %w[Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro]
    }

    I18n.store_translations ‘es-PE’,
    :date => {
    :order => [:year, :day :month],
    :month_names => [nil] %w[Enero Febrero Marzo Abril Maio Junio Julio Agosto Setiembre Octubre Noviembre Diciembre]
    }

Deixar um comentário