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!
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
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