Como internacionalizar as mensagens nas views do Code Igniter

Estive fazendo um job junto com o @gserrano usando o Code Igniter, e tivemos a necessidade de fazer a view com mensagens internacionalizadas, uma vez que o site terá versão em espanhol e português. Mais uma vez, o framework facilitou muito a nossa vida.

Vamos lá, é simples:

  • dentro da pasta application, há uma chamada language
  • dentro de language, deve haver uma pasta para cada um dos seus idiomas
  • crie em cada uma dessas pasta um arquivo chamado {nomedocliente}_lang.php (claro, {nomedocliente} pode ser trocado por qualquer coisa. No exemplo a seguir, usarei meujob_lang.php)
  • o conteúdo do arquivo deve seguir a estrutura:
    $lang["chave1]    = "mensagem 1";
    $lang["chave2]    = "mensagem 2";
    $lang["chave3]    = "mensagem 3";
    ?>

    Ou seja, é um arquivo que conterá chaves (usadas na view) e os valores. As chaves serão sempre iguais nos diversos arquivos de internacionalização, e as mensagens, serão as mesmas, traduzidas para o idioma em questão
  • antes de usar na view essas mensagens, você deve adicionar as mesmas no controller.
    Imagine que você tenha o seguinte método em um controller:
    public function formulario() {
       $this->load->view('passo1');
    }
    O que você precisa é, antes de carregar a view, adicionar o idioma que será usado. No caso abaixo, o que fiz é carregar a view dependendo do terceiro parâmetro vindo na url (por exemplo: /meucontroller/formulario/pt_BR)
    public function formulario() {
       $this->lang->load('meujob', $this->uri->segment(3));
       $this->load->view('passo1');
    }
    Note que (1) falta uma validação do terceiro parâmetro e (2) meujob é o nome do arquivo criado lá no terceiro passo.
  • na view, basta você chamar lang->line("chave1"); ?> por exemplo, que será printada na tela a mensagem referente a chave1 do arquivo de mensagens correto.

Refefência: http://codeigniter.com/user_guide/libraries/language.html

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *