Vamos falar um pouco sobre outro plugin para CakePHP que surgiu no coração da Radig: o Locale.
Meu amigo José Agripino já apresentou o plugin no próprio blog da Radig, mas como reescrevi quase que totalmente o plugin nos últimos dias, acredito ser a hora de falar dele novamente.
Nada melhor para ver a utilidade de algo como imaginar uma situação de uso real, então vamos lá…
Cenário 1: você desenvolve um sistema para brasileiros, e quer permitir a entrada de informações em formato local, isto é, datas com dia/mês/ano e números com vírgula separando decimais. O problema é que estes dados são inválidos em um banco de dados convencional (como MySQL e PostgreSQL). Ao tentar salvar uma data formatada com dia/mês/ano você receberá um erro como resposta. Como resolver isso? Use o behavior Locale no seu modelo.
Basta adicionar o behavior Locale no modelo que ele fará a conversão de datas e números para o formato americano.
public $actsAs = array('Locale.Locale');
É possível converter automaticamente datas, datas acompanhadas de horas e decimais/floats.
Cenário 2: você já tem os dados do seu usuário armazenados no banco (formato padrão/americano) e quer apresenta-los em um formato local na sua View, o que fazer? Use o Helper Locale em sua view. Primeiro ative o helper no seu controller:
public $helpers = array('Locale.Locale');
Agora basta usa-lo na view:
echo $this->Locale->date($this->data['User']['birthday']);
É possível formatar data, data com hora, data literal (quarta-feira 18 de abril de 2012, por exemplo), decimais como 53,42 e valores monetários ( R$ 53,42 ).
Além do Behavior e do Helper, você pode carregar as libs Localize e Unlocalize em qualquer parte de seu sistema para converter entre os dois diferentes formatos. As libs são estáticas e suportam aninhamento de método, assim você pode fazer:
echo Localize::setLocale('pt_BR')->decimal(12.45); // 12,45
A unica configuração necessária é a definição do locale de sua aplicação, que pode ser feito no próprio bootstrap.php do Cake:
setlocale(LC_ALL, 'pt_BR');
Assim como outros plugins da Radig, você pode consultar os testes incluídos para ver melhor o funcionamento deste.
Se for utilizar, nos avise, será uma grande satisfação ver que o plugin é util para outros.
Há uma versão compatível com o CakePHP 1.3 e outra com o CakePHP 2.x, basta usar o branch correspondente.