Blog

CakePHP: Plugin Locale para localização de datas e moeda

29 de janeiro, 2011 2 comentários

Uma coisa importante na produção de um sistema ou website é exibir informações compreensíveis para o usuário. A internacionalização e localização de uma aplicação são tarefas importantes no desenvolvimento de um sistema ou website, pois garante que palavras, expressões e numerações serão exibidas no idioma de preferência do usuário.

O CakePHP possui suporte a localização, porém não possui nativamente um mecanismo de tradução de datas e moeda para busca e salvamento no banco de dados. Pensando nisso, nosso amigo Cauan Cabral desenvolveu o plugin Locale  que conta com um Behavior que realiza a adaptação de datas e numeração locais para o formato aceito pelo banco de dados, e um Helper que traduz datas e valores monetários para a formatação local.

A utilização do Behavior e do Helper é extremamente simples. Sua instalação é feita por, no máximo, duas linhas de código no arquivo config/bootstrap.php:

// dizemos a língua/região utilizada na aplicação
Config::write('Language.default', 'pt-br');
// esta linha é opcional, somente se seu servidor não estiver configurado com a mesma região da aplicação
setlocale(LC_ALL, 'pt_BR.utf-8', 'pt_BR', 'pt-br');

Basta incluir o behavior Locale no atributo $actsAs do model, não esquecendo de prefixar o nome do plugin:

$actsAs = array('Locale.Locale');

A partir dai qualquer dado do tipo decimal, numeric, float, date ou datetime será convertido antes de ser gerado a SQL para a consulta/inserção no banco de dados. Porém é importante que os dados estejam corretos, conforme a formatação local (por exemplo, o valor 5,000 mesmo significando cinco mil em inglês será entendido como 5 no formato numérico brasileiro – por isso a necessidade de dizer ao plugin qual o formato da entrada localizado).

Utilizar o helper também é simples. Basta incluir o helper Locale no atributo $helpers do controlador (ou da classe AppController):

$helpers = array('Locale.Locale');

Para localizar datas nas views, basta chamar os métodos date() ou dateTime(), conforme o tipo de data utilizada pelo banco de dados. Por exemplo:

echo $this->Locale->date($this->data['ModelName']['date'], true);
// ou no caso de datetime
echo $this->Locale->dateTime($this->data['ModelName']['datetime'], true);

O segundo parâmetro do método diz se o helper deve exibir vazio quando uma data está errada.

Para localizar moedas, utiliza-se o método currency. Por exemplo:

echo $this->Locale->currency($this->data['ModelName']['salary']);

Será exibido o símbolo monetário conforme o locale do sistema junto com o valor numérico no formato local.

O Locale é um plugin simples mais que facilita a formatação de dados. Sinta-se a vontade para utiliza-lo, ele está disponível para download ou clone no Github da Radig sob licença MIT.

Comentários e pings estão fechados no momento.

2 comentários para “CakePHP: Plugin Locale para localização de datas e moeda”

Diego

20 de janeiro de 2012 / 11:31

Opa amigo, sei que já faz um ano da sua postagem mas gostaria de saber se funciona na versão 2.0 tb