Postagem

Aqui é onde faço postagens de coisas que acho interessante.

CakePHP - Internacionalização

Postagem do dia 05/11/2013 na categoria CakePHP



Vou mostrar como criar uma aplicação com suporte à múltiplos idiomas, o exemplo será baseado no sistema linux

O Cake usa a função __( 'string aqui' ) para traduzir todos os textos usados nesta função. Portanto tudo que se deseja fazer internacionalização deve ser usado dentro da função __( 'string aqui' ).

Exemplo:
<h1><?php echo __( 'Página principal' ) ?></h1>
<h1><?php echo __( 'contato' ) ?></h1>

Primeiro, abra o terminal e acesse o diretório $ cd /var/www/teste/app/Console/, depois abra o bake do cake com o seguinte comando $ php cake.php i18n.

Em seguida deverá aparecer varias opções do cake baker.


Welcome to CakePHP v2.1.0 Console
---------------------------------------------------------------
App : app
Path: /var/www/teste/app/
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize i18n database table
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q) 


Agora selecione a primeira opção apertando a letra E. Para as perguntas sobre path aperte a tecla Enter, para as outras perguntas confime com a letra Y. Feito isso logo em seguida o baker comeà§ará a criar os arquivos para tradução.

Exemplo:

Welcome to CakePHP v2.1.0 Console
---------------------------------------------------------------
App : app
Path: /var/www/teste/app/
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize i18n database table
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q) 
> E
What is the path you would like to extract?
[Q]uit [D]one  
[/var/www/teste/app/] >         

What is the path you would like to extract?
[Q]uit [D]one  
[D] > 

What is the path you would like to output?
[Q]uit  
[/var/www/teste/app/Locale] > 

Would you like to merge all domains strings into the default.pot file? (y/n) 
[n] > Y


Extracting...
---------------------------------------------------------------
Paths:
   /var/www/teste/app/
Output Directory: /var/www/teste/app/Locale/
---------------------------------------------------------------
Processing /var/www/teste/app/index.php...
Processing /var/www/teste/Config/acl.ini.php...
Processing /var/www/teste/app/Config/acl.php...
Processing /var/www/teste/app/Config/bootstrap.php...




Dentro do diretório app/Locale/ foi criado um arquivo chamado default.pot, este arquivo foi criado pelo baker contém todas as strings para tradução.

Copie o arquivo default.pot para /app/Locale/en/LC_MESSAGES/, altere a extenção do arquivo pot para po e em seguida abra com um editor de texto e traduza tudo que estiver no msgid no msgstr como no exemplo abaixo:

msgid “An Internal Error Has Occurred.”
msgstr “Um erro interno ocorreu”


Agora para finalizar abra o arquivo app/Config/core.php e no final dele insira o seguinte trecho de código Configure::write('Config.language', 'en');. Com isso a linguagem padrão da sua aplicação será a inglês e o cake usará o arquivo de tradução que se encontra no diretório: /app/Locale/en/LC_MESSAGES/default.po.

Se quiser criar tradução para inglês e outras linguagens, copie e renomeie o diretorio en/ para por/ caso queira criar tradução para o português, para francês fra/, etc...

Altera o valor de Configure::write('Config.language', 'en');, para Configure::write('Config.language', 'por');, Configure::write('Config.language', 'fra');, etc...

Para quem quiser um exemplo de internacionalização funcionando com o cake basta clicar aqui



Deixe seus comentários abaixo: