Code Igniter – Internacionalização

Code Igniter – Internacionalização

O framework CodeIgniter é um dos grandes frameworks feitos para PHP. E um dos recursos que ele oferece é a possibilidade de se usar internacionalização de páginas, para que você possa oferecer recursos de mudança de idiomas para seus usuários.

Indispensável nos dias de hoje para páginas da web, imagine então para sistemas online. Vamos ver o procedimento de forma simples neste primeiro momento. Para que no futuro eu possa mostrar como aplicar este recurso no sistema inteiro através de páginas navegaveis.

Por que eu já não mostro o funcionamento da internacionalização para o sistema inteiro você deve estar pensando. Optei por começar exibindo o que realmente importa para que a internacionalização aconteça. Pois em seguida precisaremos usar o arquivo config.php, usaremos funções em url, iremos usar sessões para manter na memória o idioma selecionado, e criaremos uma classe especializada no controle de idiomas. Então para não complicar, veremos o básico, funcionando em uma única página.

O exemplo a seguir foi criado e testado no code igniter 1.7, usando o modelo padrão da instalação, para que as pastas e arquivos mencionados aqui possam ser encontrados por você nos seus testes.

Os arquivos de internacionalização podem ser localizados em duas estruturas, uma dentro e outra fora da sua aplicação. O code igniter começa procurando pelos arquivos dentro da pasta system/application/language. Caso não encontre o arquivo, ele vai procurar em system/language.

Então para começar, vamos criar 3 (três) pastas, que equivalem a 3 idiomas. Crie a pasta english, pt_br e es dentro da estrutura system/application/language.

Dentro de cada pasta crie um arquivo chamado properties_lang.php. Este arquivo pode conter qualquer nome, desde que termine com _lang.php para informar ao sistema que se trata de um arquivo de language.

As 3 pastas devem ter o mesmo nome de arquivo, e dentro de cada arquivo teremos as mesmas variáveis, mudando apenas o valor de cada argumento.

$lang['pro_idioma'] = "Meu idioma em portugues";
?>
$lang['pro_idioma'] = "My language is english";
?>
$lang['pro_idioma'] = "Mi idioma es espanol";
?>

Eu não sei nada de espanhol, as frases acima são meramente ilustrativas. :)

Cada linha deve ficar dentro de um arquivo diferente. Note que as variáveis se repetem nos 3 arquivos, isso é proposital.

Estrutura pronta. Partimos para o código.

Na pasta controllers, temos o arquivo welcome.php, que chama a página welcome_message.php. Então antes de chamarmos o arquivo welcome_message vamos informar qual idioma iremos utilizar na página.

function index() {
$this->lang->load('properties', 'pt_br');

$this->load->view('welcome_message');
}

Veja que apesar do nome do arquivo ser properties_lang.php, informamos apenas o que vem antes do _lang, isso porque o método já identifica que se trata de um arquivo de language $this->lang. E o segundo parâmetro é o nome da pasta onde se encontra o arquivo, no caso a linguagem que você decidiu importar.

E para finalizar, basta incluir a linha mágica que fará o conteúdo ser exibido conforme o arquivo selecionado. No arquivo welcome_message.php que fica na pasta views.

...
lang->line('pro_idioma'); ?>
...

Veja que basta utilizar o método $this->lang->line e informar qual a varável iremos exibir na página. Como é uma variável que existe nos 3 arquivos criados, basta alterar o load no controllers para que seja feita a internacionalização do sistema.

Em um próximo post eu mostro como manter o idioma selecionado na sessão, para que você possa navegar sem perder a escolha do usuário, e também teremos um controlador especializado no idioma, que vai fazer a alteração do arquivo da sessão e ainda devolver o controle para a página em que o usuário se encontrava quando solicitou alteração do idioma.

Mas pra isso você deve entender como funciona o básico da internacionalização usando o exemplo acima. Então faça o seu teste. E para mais informações visite o site do code igniter – language class.

Sucesso!



Sobre o Autor

MarioSAM é faixa preta 2Dan de Taekwondo. Entusiasta do marketing online. Especulador do mercado financeiro. Projetista web com certificação SCJP da SUN. Com 10 anos de experiência em desenvolvimento de sistemas.