Internazionalizzazione Con Gettext

Ciao a tutti,

avrei bisogno di trovare una guida passo-passo per far diventare la mia applicazione bilingue (EN ed IT) utilizzando CGettextMessageSource; mi consigliate qualche link utile?

Non disdegno nemmeno un’estensione :)

Crisz

Sto avendo una serie di errori; ecco cos’ho fatto sin ora:

Passo 1 ho creato il file "protected/includes/localization.php"


function __($string, $params = array(), $category = "") {

        return Yii::t($category, $string, $params);

}

Passo 2 in "protected/config/main.php" ho inserito la riga


require_once(dirname(__FILE__) . '/../includes/localization.php');

ed ho inserito nell’array components il seguente codice:


'messages' => array(

            'class' => 'CGettextMessageSource',

            'useMoFile' => false,

        ),

Passo 3 in "protected/messages" ho creato le due cartelle "en_US" ed "it_IT" ed i relativi file messages.po

Passo 4 per fare un test ho modificato il file contact.php inserendo all’inizio del file


Yii::app()->language = 'it_IT';

ho modificato le seguenti righe:


$this->pageTitle=Yii::app()->name .' - '. __("Contact Us");

echo __("If you have business inquiries or other questions, please fill out the following form to contact us. Thank you.");

echo __("Fields with * are required");


<div class="row">

		<?php echo $form->labelEx($model,__('name')); ?>

		<?php echo $form->textField($model,__('name'), array('required'=>'required')); ?>

		<?php echo $form->error($model,__('name')); ?>

	</div>

Risultato:

"Contact US" e "If you have business inquiries …" non vengono tradotte

"Fields with * are required" viene tradotta

$form->labelEx($model,__(‘name’)” viene tradotta

$form->textField($model,__(‘name’), array(‘required’=>‘required’))” mi da il seguente errore: CException - Property “ContactForm.Nome” is not defined.

Aggiornamento: ho corretto un po’ di sviste ma la frase “If you have business inquiries …” continua a non venir tradotta

Per quanto riguarda invece le label dei form ho trovato questo post: using-translations-in-form-labels

ed il modo corretto per tradurre le etichette è il seguente:


<?php echo $form->labelEx($model,'name', array('attributeName' => __('name'))); ?>

<?php echo $form->textField($model,'name', array('required'=>'required')); ?>

<?php echo $form->error($model,'name'); ?>