Ajuda com traducao para cada usuario

Em meu site, preciso traduzir as palavras de acordo com o idioma do usuario, entao inicialmente segui os seguintes passos:

  • Em /views/site/layout/main.php utilizei Yii::app()->setLanguage(‘ptbr’);

  • Em /protected/messages/ptbr/traducao.php coloquei algumas mensagens para testar.

  • Testei usando Yii::t(traducao, ‘string1’); e funcionou normalmente.

O problema eh quando eu uso o ultimo passo em qualquer outro lugar, a traducao nao eh feita, alguem pode me ajudar? Sou meio leigo no Yii ainda…

Eh importante lembrar que cada usuario pode ter um idioma diferente (pode ser ingles ao inves do ptbr…), entao pensei que nao seria util usar o ‘language’ e o ‘sourceLanguage’ no /config/main.php, caso esteja errado podem me corrigir, por favor :)

Grato pela ajuda.

Cara, se não me engano, seu problema é igual um que tive aqui .

Se or o mesmo, eu bati cabeça um pouco mas descobri … o problema pode ser no fluxo de geração de páginas do Yii.

Se vc colocou em /views/site/layout/main.php, é provavelmente o mesmo problema.

O arquivo de teamplate é uma das últimas coisas que o framework gera. Isso pq até quase no final, o Yii ainda não sabe se vai ser uma renderização parcial ou completa (se vc vai chamar, render, renderPartial ou outro método de renderização), e consequentemente não sabe se terá que gerar o teamplate ou não.

Se ele gerar como uma das primeiras coisas, vc pode dar um renderPartial depois e o tempo e custo de geração o teamplate foi perdido.

Dentro do arquivo de teamplate funciona pq vc, colocando no começo do arquivo(A partir daquele momento) sua linguágem foi modificada para pt, mas, nesta hora a view do seu controller já foi gerada em ingreis.[i]

[/i]

Tente colocar no init do seu controller, provavelmente lá funcionará para todos os casos, como esplica neste link: http://www.yiiframew…oc/cookbook/26/

Mas, eu criaria um novo objeto só com essa responsabilidade

Hmm, já tinha lido esse link que vc me passou mas nao tinha me tocado que poderia ser isso realmente, vou dar uma olhada e pensar tambem um pouco na sua ideia, obrigado :)

Qualquer problema eu volto a postar aqui…