Publicidade (Anuncie Aqui)

Traduzindo o nome dos meses no CakePHP

Traduzindo o nome dos meses no CakePHP

Fala pessoal!

Este é o meu primeiro artigo (de muitos) sobre o CakePHP aqui no blog… Não vou entrar em detalhes (ainda) sobre o que é e como usar o Cake, mas vou falar de um probleminha que tive por muito tempo e só encontrei a “perfeita solução” pra ele esses dias: traduzir o nome dos meses (para inputs de datas) sem alterar o core.

Essa tradução consiste em usar o sistema de localização que já vem no Cake… Bom, vamos lá:

Primeiro de tudo, vá no controller onde você quer a tradução ou direto no AppController e antes da definição da classe, insira essa linha:

App::import('Core', 'l10n');

Isso vai fazer o Cake chamar a classe/função l10n, que é o sistema de localização.

Depois, crie a seguinte estrutura de pastas:

../app/locale/br/LC_MESSAGE/

Agora, dentro da pasta LC_MESSAGE criada, crie um arquivo chamado default.po com o seguinte conteúdo:

msgid  "January"
msgstr "Janeiro"

msgid  "February"
msgstr "Fevereiro"

msgid  "March"
msgstr "Março"

msgid  "April"
msgstr "Abril"

msgid  "May"
msgstr "Maio"

msgid  "June"
msgstr "Junho"

msgid  "July"
msgstr "Julho"

msgid  "August"
msgstr "Agosto"

msgid  "September"
msgstr "Setembro"

msgid  "October"
msgstr "Outubro"

msgid  "November"
msgstr "Novembro"

msgid  "December"
msgstr "Dezembro"

Agora é só ir no arquivo de configurações (../app/config/core.php) e inserir a seguinte linha:

Configure::write('Config.language', 'br');

Pronto! Quando você criar um input para a seleção de data usando o HTML Helper, o nome do mês já vai aparecer em português direitinho. ;)

Esse também foi um bom exemplo de uso do sistema de localização do Cake.

Abraços

Você também vai gostar de ler:

Postado em CakePHP, PHP

Com as tags , , , , , , ,

Escrito por Thiago Belem

Gostou desse artigo?

Não se esqueça de assinar o RSS e divulgue-o para o mundo:

  • http://www.tiagofaustino.com/site/ Tiago Faustino

    Eu uso o CakePtBr http://github.com/jrbasso/cake_ptbr/tree/master . No arquivo core.po já vem com todas essas traduções. Fora as inúmeras funções de validação, formatação, etc, etc…

  • http://www.tiagofaustino.com/site/ Tiago Faustino

    Eu uso o CakePtBr http://github.com/jrbasso/cake_ptbr/tree/master . No arquivo core.po já vem com todas essas traduções. Fora as inúmeras funções de validação, formatação, etc, etc…

  • http://blog.thiagobelem.net/ Thiago Belem

    @Tiago Faustino
    Muito obrigado cara! Ajudou bastante… Já até passei pra alguns amigos. :)

  • http://thiagobelem.net/ Thiago Belem

    @Tiago Faustino
    Muito obrigado cara! Ajudou bastante… Já até passei pra alguns amigos. :)

  • Luiz Lins

    Valeu amigo, livrou a minha vida. A meses que procuro algo sobre tradução dos meses/////

  • Luiz Lins

    Valeu amigo, livrou a minha vida. A meses que procuro algo sobre tradução dos meses/////

  • Fred

    velho, estou tentando utilizar o cake no Windows Vista, ja configurei tudo mas continuo obtendo a seguinte mensagem ao executa-lo:

    Deprecated: Assigning the return value of new by reference is deprecated in C:wampwwwprojetoscakephpcakelibsinflector.php on line 131

    Deprecated: Assigning the return value of new by reference is deprecated in C:wampwwwprojetoscakephpcakelibsconfigure.php on line 136

    Deprecated: Assigning the return value of new by reference is deprecated in C:wampwwwprojetoscakephpcakelibsconfigure.php on line 226

    Deprecated: Assigning the return value of new by reference is deprecated in C:wampwwwprojetoscakephpcakelibsconfigure.php on line 906

    Deprecated: Assigning the return value of new by reference is deprecated in C:wampwwwprojetoscakephpcakelibsconfigure.php on line 946

    Ah, e ja ativei o mod_rewrite no apache e nada. Pode me ajudar?

  • Fred

    velho, estou tentando utilizar o cake no Windows Vista, ja configurei tudo mas continuo obtendo a seguinte mensagem ao executa-lo:

    Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\projetos\cakephp\cake\libs\inflector.php on line 131

    Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\projetos\cakephp\cake\libs\configure.php on line 136

    Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\projetos\cakephp\cake\libs\configure.php on line 226

    Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\projetos\cakephp\cake\libs\configure.php on line 906

    Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\projetos\cakephp\cake\libs\configure.php on line 946

    Ah, e ja ativei o mod_rewrite no apache e nada. Pode me ajudar?

  • http://blog.thiagobelem.net/ Thiago Belem

    @Fred
    Verifique a versão do CakePHP que você está instalando e verifique a versão do PHP, um dos dois é antigo.

  • http://thiagobelem.net/ Thiago Belem

    @Fred
    Verifique a versão do CakePHP que você está instalando e verifique a versão do PHP, um dos dois é antigo.

  • Fred

    Deu certo, atualizei o cake para 1.2.5 trabalhando com PHP 5.3.0!
    Valeu thiago!!

  • Fred

    Deu certo, atualizei o cake para 1.2.5 trabalhando com PHP 5.3.0!
    Valeu thiago!!

blog comments powered by Disqus