Configurando aplicações multi-idioma no CodeIgniter

Configurando aplicações multi-idioma no CodeIgniter

Sistemas multi-idioma estão sendo cada vez mais requisitados, e fazer as configurações para iniciar o desenvolvimento de uma aplicação multi-idioma no CodeIgniter é bem simples. Veja a seguir um processo bem enxuto para fazer essa configuração.

Criando o projeto e fazendo o download dos arquivos de idioma

Para criar o projeto execute o comando a seguir no terminal, para que o projeto seja criado utilizando a versão mais recente do CodeIgniter.


composer create-project bcit-ci/codeigniter aplicacao-multi-idiomas --prefer-dist

Esse processo vai levar alguns minutos, então enquanto você aguarda a criação do projeto, faça o download dos arquivos de idioma através do link abaixo:

https://github.com/bcit-ci/codeigniter3-translations

Após concluir o download dos arquivos de idioma e a criação do projeto, descompacte o arquivo e copie os diretórios dos idiomas portuguese-brazilian e spanish para o diretório application/language. (Caso queira utilizar outros idiomas, basta copiá-los)

Para finalizar, não se esqueça de criar o arquivo .htaccess na raiz do projeto, pois vamoas trabalhar com URL amigável mais adiante, e sem ele as URLs não funcionarão.

Com os arquivos devidamento copiados para o diretório de idiomas da aplicação, é hora de iniciar o processo de configuração e codificação para que o recurso de multi-idioma no CodeIgniter comece a funcionar.

Atualizando o arquivo de rotas (routes.php)

Para que possamos utilizar rotas como as exemplificadas abaixo é necessário fazer uma atualização no arquivo application/config/routes.php.

Criando um arquivo de idioma personalizado

Assim como existem os arquivos de idiomas padrões do CodeIgniter, você pode criar arquivos personalizados para sua aplicação. Para esse tutorial vamos utilizar um arquivo personalizado com apenas uma linha, apenas para ilustrar o funcionamento.

Os arquivos de idioma devem respeitar um padrão de nomenclatura, onde o nome do arquivo deve ser acompanhado do sufix “_lang” e da extensão “.php”.

O conteúdo dos arquivos deve ser um array, que formará um dicionário, conforme o exemplo abaixo:


$lang['chave'] = 'Texto';

As chaves devem ser as mesmas para todos os diferentes idiomas da sua aplicação, mudando somente o valor de cada uma delas. Crie então um arquivo chamado welcome_lang.php dentro do diretório de cada idioma que a aplicação dará suporte. Para esse exemplo estamos utilizando english, portuguse-brazilian e spanish.

Spanish


$lang['welcome_title'] = 'Bienvenido a CodeIgniter!';

English

$lang['welcome_title'] = 'Welcome to CodeIgniter!';

Portuguese-brazilian


$lang['welcome_title'] = 'Bem vindo ao CodeIgniter!';

Após criar os arquivos você deve ter percebido que no diretório english há somente o arquivo personalizado que você criou. Isso acontece porque o idioma padrão do CodeIgniter é o inglês, e os arquivos de idioma padrão ficam localizados em ‘system/language/english’. Se você precisar alterar alguma mensagem do dicionário padrão, basta copiar os arquivos de idioma para o diretório english dentro de application/language.

Ajustando o controller Welcome e a view welcome_message

Agora vamos fazer pequenos ajustes no controller Welcome e na view welcome_message para que possamos fazer uso dos dicionários.

Controller Welcome

View welcome_message

Repare que na view alguns textos foram substituídos por “<?=$this->lang->line(welcome_title)?>“, que corresponde ao valor da chave “welcome_title” do dicionário de idioma. Dessa forma, independente do idioma utilizado, o texto a ser exibido será buscado no dicionário.

Controlando automaticamente o carregamento dos dicionários de idiomas

Para automatizar o controle do carragemento dos dicionários vamos utilizar os hooks do CodeIgniter, recurso muito útil disponível no framework.

O primeiro passo é atualizar o arquivo de configuração config.php. Localize a linha abaixo no arquivo e substitua o valor FALSE por TRUE. Essa mudança irá ativar os hooks.


$config['enable_hooks'] = TRUE;

Com o uso dos hooks ativado é hora de criar e configurar o hook que fará o controle dos dicionários de idiomas. No diretório application/hooks crie um arquivo chamado “LanguageLoader.php”. Esse arquivo irá conter a rotina de controle dos idiomas, verificando a partir do primeiro nós da URL qual é o idioma que deve ser utilizado.

Na sequência, abra o arquivo application/config/hooks.php e adicione o código abaixo dentro dele, para que a verificação do idioma seja executada sempre que o método __construct() dos controllers for executado.

Agora você pode testar sua aplicação acessando o link dela no browser e clicando nos links de idiomas que estão na página principal. Repare no título da página, que vai ser alterado conforme o idioma escolhido. Repare também na URL, que tem o seu primeiro nó alterado conforme o idioma escolhido pelo usuário.

Viu como é fácil configurar uma aplicação multi-idioma no CodeIgniter? Os recursos apresentados aqui (hooks e language) estão descritos na documentação oficial, que pode ser acessada em www.codeigniter.com/user_guide.

Até a próxima!