radig/locale

CakePHP Locale: allow your users to input localized data (like dates and decimals) while kept consistency at database-level.

Installs: 239

Dependents: 0

Stars: 19

Watchers: 9

Forks: 7

Language: PHP

2.0.8 2015-04-16 17:50 UTC

README

That plugin allow your users to input localized data (like dates and decimals) while
kept consistency at database-level.

It’s also included a Helper to output a non-localized data in users locale format.

Some static libs are delivered in bundle and are used by Helper and Behavior,
at the same time allow you to work with localized data where you need (like shell).
--
Este plugin permite que usuários de seu sistema visualizem e insiram
dados em formatos locais/regionais ao mesmo tempo que garante a consistência
dos dados convertendo-o para um formato aceito pelo banco de dados escolhido.

Autor e Copyright

  • Copyright 2009-2014, Radig – Soluções em TI
  • Licença MIT – Isto quer dizer que o código está disponível sem nenhuma garantia, ao mesmo tempo que
    você pode usa-lo de forma isolada ou em conjunto com seu próprio código.

Observações/Observations

  • PHP >= 5.4
  • CakePHP 2.x
  • Consulte os testes incluído no plugin para ver melhor seu funcionamento (Consult unit tests included)

Como usar / How begin

  • A única configuração necessária é ter definido o locale da sua aplicação. Caso não tenha feito isso, basta utilizar a função setlocale
  • Only configuration is define the locale of application with:
setlocale(LC_ALL, 'pt_BR.utf-8', 'pt_BR', 'pt-br', 'portuguese');

Utilizando o Behavior

  • Basta definir, no model que deseja ativa-lo, a seguinte linha:
$actsAs = ['Locale.Locale'];
  • A partir daí o behavior vai converter seus dados antes da validação e antes de salvar.

Utilizando o Helper

  • Nos controladores de interesse, adicione o helper Locale.Locale, deixando similar a linha abaixo:
$helpers = ['Locale.Locale'];
  • Agora nas views de seu controlador, você pode chamar o helper, como abaixo:
echo $this->Locale->dateTime('2010-08-26');

Além do Behavior e Helper…

Agora você também pode trabalhar com a normalização de desnormalização de dados em diferentes contextos de sua aplicação (como em Shells), bastando para isso carregar as libs Localize e Unlocalize, de acordo com suas necessidades.

App::uses('Localize', 'Locale.Lib');

Elas são todas estáticas, então você deve usa-las sem se preocupar com instâncias:

$localizada = Localize::date('2012-04-16');

Desta forma, a variável $localizada armazenará “16/04/2012” caso seu locale esteja definido para pt_BR

Resolvendo problemas

‘[Notice] Undefined index C: …’

Este erro ocorre quando o locale que você configurou no seu bootstrap não está disponível em seu SO. No caso do pt_BR, ele não costuma vir habilitado no Ubuntu Server (e me parece que no Desktop também). Para resolver o problema você possuí pelo menos duas alternativas:

Em uma linha (pode funcionar em outras distros):

sudo locale-gen --no-purge --lang pt_BR

Deixando para o SO gerenciar:

  1. sudo vi /var/lib/locales/supported.d/local
  2. Acrescente o locale pt_BR.UTF-8 UTF-8
  3. sudo dpkg-reconfigure locales
  4. Reinicie o Apache/PHP-FPM
‘Notice (8): Undefined index: [APP\Plugin\Locale\Lib\Localize.php, line 41]’

Outro erro relacionado ao locale do sistema que já foi reportado na [issue #2]:https://github.com/radig/locale/issues/2
e ocorre sempre na primeira execução do script (antes de haver cache de APC/Arquivo…).

A solução consiste em incluir o locale ‘portuguese’ quando configurar o setlocale.

setlocale(LC_ALL, 'pt_BR.utf-8', 'pt_BR', 'pt-br', 'portuguese');