Acabo de tropezar con este problema y el uso de un controlador para generar el código js sobre la marcha no es una opción porque perderá recursos debido a que comienza un proceso PHP adicional en cada solicitud. Esto puede ser un problema en sitios de alto tráfico. Así que implementé un enfoque diferente: En el .js los mensajes se almacenan en Variables, p.
var MyJsClass = {
lang:
{
foo: 'Foo',
bar: 'Bar',
},
doSomething: function()
{
console.log(this.lang.foo);
},
};
en la vista se agrega la traducción si el idioma actual es diferente a la sourceLanguage de la App:
<?php
$cs = Yii::app()->clientScript;
$cs->registerScriptFile($this->module->assetsUrl.'/js/myjsclass.js');
if (Yii::app()->sourceLanguage != Yii::app()->language) {
$cs->registerScript('MyScriptID', '
MyJsClass.lang.foo = \''.Yii::t('TranslationCategory', 'Translated Foo').'\';
MyJsClass.lang.bar = \''.Yii::t('TranslationCategory', 'Translated Bar').'\';
');
}
?>