CodeIgniter: Templates e Internacionalização

Encontrei uma maneira rápida e fácil de usar várias línguas com templates. Acho que não é um sistema de templates de verdade, mas por enquanto, está dando conta do recado. Depois da configuração inicial do meu CodeIgniter, decidi implementar um sistema de várias linguas. Seguindo esse tutorial, notei que cada página (view) traduzida é na verdade um arquivo independente, Não achei isso legal, pois se meu designer precisa mudar uma tag ou uma propriedade, ele teria que mudar em todas as views.

O truque é simples, e certamente deve haver outra forma mais elegante de fazer isso. O artigo acima diz que se eu tenho uma visão “myview”, eu não preciso adicionar um sufixo caso eu esteja na minha língua padrão, mas em outras línguas, eu preciso do sufixo do código da língua, por exemplo _pt, _en, etc. Mas no meu caso, todas as línguas deverão ter seu próprio sufixo, até mesmo a língua padrão, e a minha view sem sufixo é na verdade o template da página.

O código abaixo mostra o meu controlador chamando meu template:

[cc lang=”php”]
load_view(‘myview’); // Aqui eu carrego o meu template que será interceptado
}
}

/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */
[/cc]

Minha pequena modificação começa aqui. Eu não preciso chamar myview_pt pelo controlador (nesse caso eu teria que fazer uma checagem de qual lingua o usuario selecionou), porque o controlador modificado do artigo citado faz isso automaticamente. Então eu apenas crio myview_en.php e myview_pt.php (assumingo que tenho apenas essas duas línguas), e o conteudo desses arquivos seria algo mais ou menos assim:

[cc lang=”php”]
lang->load(‘myview’, ‘english’); ?>

[/cc]

Na primeira linha, “myview” é um arquivo localizado em system/language/english/myview_lang.php

Dessa forma eu coloco todo o meu html e css no myview.php e trabalho simulando um template. Espero que alguem venha comentar esse post dizendo “Olha, é assim que se faz corretamente”, mas até lá eu vou trabalando dessa forma pois assim pelo menos está resolvendo meu problema.

Até a próxima!

Did you like this? Share it:

1,968 Comments

  • Robson |

    A versão 1.6 já possui suporte nativo à internacionalização. Vc continua precisando apenas de uma view também e faz chamadas das variáveis da página via $this->lang->line(‘form_save’) , por exemplo.

  • akira_lee |

    Olá,
    Tenho o codeigniter (estou a começar a explorar) mas ainda não percebi muito bem como posso usar as línguas. Tenho a pasta language/en, language/pt e language/es coloco um ficheiro com as variáveis (iguais em todos) e respectivas traduções, mas como faço para alterar o idioma? Há alguma maneira de o fazer sem ter que fazer refresh à pagina?

    Obrigada

  • admin |

    Olá, infelizmente só com refresh mesmo, pois o CI depende da url para saber qual linguagem usar

  • nada |

    nada de mais, só um teste, favor apagar, desculpa ai amigo ter postado um teste em seu blog

So, what do you think ?