Carlos Brando

Nome do Jogo

Meses em português no Rails

Um dos maiores problemas que encontro quando crio algo com o Ruby on Rails é a falta de uma internacionalização nos componentes existentes.

Então, vivo tendo de criar ou alterar algo para funcionar do jeito que preciso.

No meu site (carreiraTI) eu queria exibir a abreviação do mês em que a oferta de emprego foi publicada. Para isto bastaria usar o método strftime do próprio objeto Time. [source:ruby]t.strftime(“%b”)[/source] Isto funciona desde que seu site seja em inglês. O que não é o meu caso.

Pesquisei as bibliotecas do próprio Ruby para ver como este método funcionava, e encontrei a seguinte constante: [source:ruby]ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez)[/source] O problema aqui é não quero alterar as classes originais do Ruby e também não consigo alterar os valores da constante depois. Mesmo usando o método const_set do objeto Module.

A solução que encontrei foi criar o meu próprio método para exibir a abreviação da data: [source:ruby] module ActionView

module Helpers
    module DateHelper

        BR_ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez)

        def abbr_month_name(month)
            BR_ABBR_MONTHNAMES[month]
        end
    end
end

end [/source] Se alguém tiver uma solução melhor que esta, por favor se pronuncie.

Para ver como ficou clique aqui.

Comments