Em alguns projetos, é necessário utilizar os nomes de meses, ou dias da semana em português. Eu sempre usei o método de sobrescrever as constantes que o Ruby usa, colocando o seguinte código no config/environment.rb:

silence_warnings do
  Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
  Date::DAYNAMES = %w(Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado)
  Date::ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Aug Set Out Nov Dez)
  Date::ABBR_DAYNAMES = %w(Dom Seg Ter Qua Qui Sex Sab)
 
  Time::MONTHNAMES = Date::MONTHNAMES
  Time::DAYNAMES = Date::DAYNAMES
  Time::ABBR_MONTHNAMES = Date::ABBR_MONTHNAMES
  Time::ABBR_DAYNAMES = Date::ABBR_DAYNAMES
end

Acontece, que quando usamos a função strftime, estes nomes não são traduzidos. Eles funcionam apenas nos helpers date_select, entro outros. Em um projeto meu, eu precisava usar estes nomes traduzidos, justamente com a função strftime, então, cheguei à este código:

class Time
  alias :strftime_nolocale :strftime
 
  def strftime(format)
    format = format.dup
    format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
    format.gsub!(/%A/, Date::DAYNAMES[self.wday])
    format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])
    format.gsub!(/%B/, Date::MONTHNAMES[self.mon])
    self.strftime_nolocale(format)
  end
end

E funcionou!

Fica aqui a dica então, para quem estiver com este mesmo problema.

Tags: , / Trackback URI: trackback

Um comentário em “Traduzindo Datas no Rails”

  1. 16/09/08 às 9:27 pm #Patrick Espake

    Valeu!

    Meu salvou!

    Obrigado.
    Abraço.

Deixe um comentário

Não é aceito código HTML