KISS - Keep it simple, stupid!

Traduzindo o core de sua aplicação CakePHP

postado por Gabriel Gilini em 25/09/2008 15:25:48
Tags: ,

Muitos problemas que o desenvolvedor enfrenta durante o projeto são facilmente solucionados se a mensagem de erro for interpretada corretamente. Quem freqüenta listas de discussão sabe como muitas vezes a solução é compreender o problema.

Pensando em quem não fala inglês e utiliza o em seus projetos, fiz a tradução de todas as mensagens internacionalizadas do framework, passando mensagens como as do console, página inicial padrão, erros, entre outras, para o português.

A instalação das traduções é muito simples. Faça o download do arquivo que contém as mensagens em português neste link, e descompacte-o no diretório app/locale.

$ tar -xzvf pt_br.tar.gz -C <CAMINHO ATÉ SUA APLICAÇÃO>/app/locale

Após a extração, edite o arquivo core.php localizado no diretório config da sua aplicação, e insira a seguinte linha:

<?php
    Configure::write('Config.language', 'pt-br');
?>

E pronto, agora seu Cake fala português!

Convido a todos que utilizarem esta tradução a enviarem críticas e sugestões nos comentários. Obrigado!

Update:

O cake_ptbr agora é um plugin e pode ser encontrado no GitHub.

O Juan Basso fez ótimas melhorias no projeto como um todo e agora ele conta com novas funcionalidades além da tradução, como:

  • inflections;
  • um Model com os estados brasileiros;
  • validação de CEP, CNPJ, CPF e telefone;
  • Behavior para acessar recursos dos Correios;
  • Behavior para ajuste de datas;
  • Helper de formatação de datas e
  • Helper de estados.

Posts relacionados:

  1. Construindo uma select box com options condicionais utilizando cakephp e ajax Ao acompanhar a lista de discussão CakePHP Tuga percebi que...
  2. Vendo o mundo CakePHP pelo Twitter Venho acompanhando recentemente as mensagens relacionadas ao CakePHP no Twitter...
  3. Plugin Manager – Gerenciando os plugins de sua aplicação de forma ágil Já tinha visto muitas vezes o João José reclamando que...
  4. Fazendo deploy de uma aplicação CakePHP com Git Deploy é sempre um problema sério. Estamos sempre buscando soluções...
  5. CakePHP AutoTest – Testes Contínuos Certo dia, lá no canal do IRC fiquei sabendo de...

Trackback

Faça o seu

Comentários (29)

  • 001

    Josenivaldo Benito

    em 25/09/2008 17:08:56

    Olá,

    O correto não seria “pt_BR” ao invés de “pt” no Config.Language ?

    Eu acho que pt é pt de portugual…

    Abraço e obrigado

  • 002

    Gabriel Gilini

    em 25/09/2008 17:34:18

    Olá, Benito!

    O padrão de idiomas na nomenclatura dos diretórios do locale, segue a definição ISO 639-2, que não contém uma sigla para o português brasileiro, apenas ‘por’ para português em geral.

    Portanto, se o Config.language for modificado para pt_BR, o cake não reconhecerá o idioma.

    Grande abraço

  • 003

    Juan Basso

    em 25/09/2008 22:31:10

    Gabriel, conforme o arquivo l10n.php do core, ele espera o idioma ‘pt-br’ (esse é o valor no Configure::write), que usará o diretório ‘pt_br’ (com underline e não hifen) em primeiro lugar. Caso não exista, tentará o diretório ‘por’, conforme a ISO.
    Abraços e parabens pela iniciativa.

  • 004

    Cesar Fuentes

    em 26/09/2008 11:03:44

    Valeu cara!

  • 005

    Gabriel Gilini

    em 26/09/2008 19:34:29

    Tem razão Juan, li apenas no manual do Cake sobre a internacionalização, e lá citam que todos os idiomas seguem aquele padrão ISO.

    Já corrigi no post, muito obrigado!

  • 006

    carlos

    em 24/10/2008 07:59:44

    amigos, as dicas funcionaram mas os acentos ficam todos errados e ao tentar edicar o arquivo .po para corrigir os acentos recebo a mensagem:

    some characters cannot be mapped using CP1252.

    Alguem poderia me dar alguma ideia de como resolver isso?

    obrigado

    Carlos

  • 007

    joaojose

    em 29/10/2008 11:39:36

    Olá Carlos,

    Você esta utilizando qual editor de textos?

    É importante lembrar que utilizamos o enconding UTF-8, que é o padrão do CakePHP.

    Abraços

  • 008

    Juan Basso

    em 06/11/2008 19:17:02

    Gabriel, baixei hoje o pacote e vi que você colocou o nome do arquivo como default.po. O CakePHP importa os arquivos default.po e core.po. O core.po refere-se a tradução do núcleo, justamente como você fez. E o default.po para as strings internacionalizáveis da aplicação. Você não acha melhor trocar o nome do arquivo para não conflitar com uma tradução da aplicação?

  • 009

    Gabriel Gilini

    em 10/11/2008 14:05:25

    Realmente, Juan, falha minha! Consertei no repositório. Valeu pela dica ;)

  • 010

    Caio Vitor

    em 20/11/2008 08:33:01

    Esse: [gist='12879'] é a mesma coisa que: Configure::write(‘gist’, 12879) ?

  • 011

    joaojose

    em 20/11/2008 09:37:37

    Olá Caio,

    Mil desculpas, fizemos uma atualização no gerenciador de códigos e acabamos tendo este problema.

    Agora esta tudo resolvido.

  • 012

    Jose

    em 27/11/2008 10:04:43

    Parabéns pela tradução cara…

    Mas também estou com problemas em relação aos acentos… No browser ao invés de acentos aparecem “quadrados”… alguém já teve esse problema??

    |To quebrando a cabeça a nada!

  • 013

    Gabriel Gilini

    em 27/11/2008 10:16:58

    José, você está tendo este problema com todas as palavras acentuadas ou apenas aquelas que estão sendo traduzidas pelo arquivo .po?

    Verifique se os seus arquivos estão todos salvos em UTF-8, que é o encoding padrão do CakePHP.

    Abraços

  • 014

    joaquim

    em 17/12/2008 16:25:42

    Muito bom mas ainda tenho uma duvida como faço para ter o console traduzido mais especificamente o “cake bake “

  • 015

    Gabriel Gilini

    em 17/12/2008 18:35:18

    Joaquim, só seu console está sem tradução? Eu testei aqui e ele também está traduzido, e me lembro bem de ter escrito as mensagens!

    Você não está selecionando um diretório de app diferente do que contem a tradução no “locale”?

  • 016

    Paulo Marcelo

    em 30/12/2008 22:48:25

    Não traduziu o Novo, no meu sistema por exemplo quando coloquei scaffold no meu modelo livro ficou abaixo da tabela de listagem de registros(grid) New Livro.

  • 017

    JoaoJose

    em 03/01/2009 08:11:12

    Olá Paulo,

    O problema está na geração do Scaffold do CakePHP, tem algumas frases que ainda não estão internacionalizadas. Já mandei pro TRAC um ticket solicitando a mudança. https://trac.cakephp.org/ticket/5814

    Abraços.

  • 018

    Paulo Marcelo

    em 07/01/2009 16:36:33

    Entrei no link que você mandou e pelo que entendi esta sua alteração solicitada só está prevista para versão 1.3.x.x é isso mesmo ou entendi errado?

  • 019

    João José Pedirni

    em 08/01/2009 09:18:33

    Então Paulo,

    Eu não entendo muito bem esse pessoal do CakePHP, sinceramente ainda não sou muito bom em ajudar em projetos OpenSource. Não sei se é necessário criar um teste para isso ou um PATH, é meio estranho. O pior de tudo é que a alteração é simples.

    Se você quiser, você pode copiar o arquivo /cake/libs/view/scaffolds/index.ctp, fazer as modificações e colocar na sua pasta /app/views/scaffolds

    Grande abraço

  • 020

    Paulo Marcelo

    em 27/01/2009 12:27:19

    Gabriel, acredito que se você traduzisse New como adicionar ou incluir ficaria melhor pois atenderia a ambos os generos(masculino e feminino) pois se para o Model Cliente fica bom Novo Cliente, porém para o Model Tarefa fica ruim Novo Tarefa.

  • 021

    Gabriel Gilini

    em 27/01/2009 13:29:01

    Verdade, Paulo, valeu pelo comentário! Esse tipo de coisa passa batida.
    Vou arrumar lá no repositório.

  • 022

    Paulo Marcelo

    em 27/01/2009 15:20:20

    #: /cake/libs/error.php:233
    #: /cake/libs/view/errors/missing_view.ctp:27
    msgid “Missing View”
    msgstr “Scaffold não tem conexão com o banco de dados”

    Nesta parte não seria melhor traduzir como Faltando View ou View não encontrada

  • 023

    Gabriel Gilini

    em 27/01/2009 18:39:35

    Realmente, Paulo, provavelmente algum engano meu com copiar/colar, hehe.
    Valeu pelo feedback!

  • 024

    Juan Basso

    em 13/02/2009 20:44:20

    Gabriel,

    Outra sugestão: o termo ‘Delete’ está sendo traduzido para ‘Deletar’. Não seria melhor utilizar ‘Excluir’? Pois ‘Deletar’ ainda não pertence a lingua portuguesa, mesmo sendo usual (principalmente entre os ligados na área de TI). E ‘Excluir’ também é melhor comercialmente.

    Abraços,

    Juan Basso

  • 025

    Juan Basso

    em 16/02/2009 13:12:58

    Gabriel,

    Achei outra:

    Tentativa de acessar método privado na classe
    Erro: A tabela produtos para o model Produto não foi encontrada.
    Advertência: Se você quiser customizar esta mensagem de erro, crie app/views/errors/missing_table.ctp

    Não seria tentativa de método privado, mas de faltando tabela.

  • 026

    Diorges Rocha

    em 28/08/2009 10:01:31

    Opa, muito obrigado pela tradução pena que quando mudo o charset para ISO-8859-1 os acentos ficam errados, então como eu vi que muita gente ta tendo esse mesmo problema, eu editei o arquivo e codifiquei os acentos para o padrão ISO, e agora os acentos estão todos corretos… segue o link para download se alguém quiser: http://emsite.us/cakephp/pt-br.rar

    Obrigado!

  • 027

    Rodrigo

    em 03/09/2009 09:55:43

    Encontrei esse projeto aqui que possui a tradução das strings do core do CakePHP para o português além de incluir uma série de outras coisas úteis como validação de CEP e CPF, formatação de datas, entre outros.

    http://github.com/gabrielgilini/cake_ptbr/tree/master

  • 028

    Gabriel Gilini

    em 03/09/2009 12:30:13

    Falha nossa, Rodrigo. O Juan fez um fork do projeto e implementou um montão de coisa por cima, e eu esqueci de atualizar o post com as novas instruções de downloads.

  • 029

    Francisco

    em 28/09/2009 16:35:31

    Olá pessoal, preciso de uma ajuda num site que usa o cake php , claro que pago o serviço, não acho onde edita o footer.php e alguns links no menu do site…

  • Faça seu comentário

Topo

31 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil