Boa Tarde Pedro. Eu fui o autor desse tópico, e extensão recomendada não atendia totalmente minhas necessidades.
Por isso criei uma solução explicarei aqui resumidamente, espero que te ajude:
Crie duas tabelas em seu banco de dados (Caso haja necessidade de mais campos, sinta-se livre)
Primeira Tabela chamada Idiomas, e outra chamada termos.
Estrutura da Tabela Idiomas:
CREATE TABLE IF NOT EXISTS `idiomas` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`lang` varchar(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`flagpath` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`active` tinyint(1) NOT NULL,
`main` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
Tabela Termos:
CREATE TABLE IF NOT EXISTS `Termos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rotulo` varchar(60) NOT NULL,
`conteudo` varchar(155) NOT NULL,
`id_idiomas` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
Crie sua FK para essa tabelas e voilá, estrutura das tabelas prontas. No meu caso acrescentei um campo para armzenar o idioma (id) escolhido pelo meu usuário.
Após isso, criei uma model ( Você pode usar o gii para isso ) para a tabela idiomas. Após isso criei um método dentro desta model para recuperar os termos para o idioma escolhido pelo usuário durante o cadastro:
public static function Termos(){
if(!empty(Yii::app()->user->id)){
$Sets = Yii::app()->db->createCommand(' SELECT id_idiomas FROM Administradores WHERE id = '."'".Yii::app()->user->id."'")->queryRow();
$Termos = Yii::app()->db->createCommand(' SELECT * FROM Termos WHERE id_idiomas = ' . $Sets['id_idiomas'] )->queryAll();
}else{
$Idiomas = Lang::carregaIdiomas($html=false);
if(!empty($Idiomas)){
foreach($Idiomas AS $idioma){
if($idioma['main'] == 1){
$idIdioma = $idioma['id'];
}
}
$Termos = Yii::app()->db->createCommand(' SELECT * FROM Termos WHERE id_idiomas = ' . $idIdioma )->queryAll();
}
}
foreach($Termos AS $Termo){
$Palavras[$Termo['rotulo']] = $Termo['conteudo'];
}
return $Palavras;
}
Pronto. com está função. seto na configuração ao usuário se logar no sistema, uma session que armazena o dioma padrão (caso o idioma escolhido não exista, é apresentado o padrão).
Esta foi a solução que dei. tomara que sirva de base para você achar sua própria solução para o seu caso. =)