Yii2 Multilingua

15 views
Skip to first unread message

Danilo Eusepi

unread,
Mar 10, 2016, 2:02:53 PM3/10/16
to yii-it
Salve a tutti, nella precedente versione di Yii avevo utilizzato le impostazioni del multilingua per gestire i contenuti caricati in più lingue.
Non avevo però utilizzato alcuna traduzione dei messaggi di sistema che Yii mi comunicava in caso di errore.

Ho cercato un po di documentazione:



nel mio file config/web.php ho configurato questo:


        // set target language to be Italian
        'language' => 'it-IT', /*it-IT'*/
        // set source language to be English
        //'sourceLanguage' => 'en-US',
        'i18n' => [
       'translations' => [
       'yii' => [
       'class' => 'yii\i18n\PhpMessageSource',
       'sourceLanguage' => 'en-US',
       'basePath' => '@app/vendor/yiisoft/yii2/messages'
        ],
        ],
        ],


Che parametri devo impostare per far tradurre i messaggi di sistema in Italiano?

Lorenzo Milesi

unread,
Mar 11, 2016, 2:55:46 AM3/11/16
to yii...@googlegroups.com

> Che parametri devo impostare per far tradurre i messaggi di sistema in Italiano?

la configurazione mi sembra corretta, non ho capito però la tua domanda...

significa che nella tua app non stai vedendo i messaggi in italiano?
--
Lorenzo Milesi - lorenzo...@yetopen.it

YetOpen S.r.l. - http://www.yetopen.it/

Danilo Eusepi

unread,
Mar 11, 2016, 3:06:18 AM3/11/16
to yii-it, max...@ufficyo.com
Si, per esempio per fare una prova lancio un'indirizzo non esistente, viene generata la pagina 404 e i messaggi sono ancora in inglese.
Oppure se uso l'interfaccia di login standard mi vengono mostrati messaggi del tipo che il campo non può essere blank.

Lorenzo Milesi

unread,
Mar 11, 2016, 3:33:46 AM3/11/16
to yii...@googlegroups.com
> Si, per esempio per fare una prova lancio un'indirizzo non esistente, viene
> generata la pagina 404 e i messaggi sono ancora in inglese.

guarda views/site/error.php

> Oppure se uso l'interfaccia di login standard mi vengono mostrati messaggi del
> tipo che il campo non può essere blank.

quello mi sa che è così di default, controlla models/User.php

Danilo Eusepi

unread,
Mar 11, 2016, 9:06:46 AM3/11/16
to yii-it, max...@ufficyo.com
dentro models/User.php non ho alcun testo!.

Lorenzo Milesi

unread,
Mar 11, 2016, 9:14:05 AM3/11/16
to yii...@googlegroups.com
> dentro models/User.php non ho alcun testo!.

scusa mi sono confuso, guarda in models/LoginForm.php. ci sono da tradurre (o rendere traducibili mettendo Yii::t) le label e il messaggio della validazione delle credenziali.
idem in views/site/login.php

Danilo Eusepi

unread,
Mar 11, 2016, 9:50:36 AM3/11/16
to yii-it, max...@ufficyo.com
In models/LoginForm.php avevo tradotto le label manualmente e anche il messaggio di nome utente e password errati.
Provvederò a mettere la funzione corretta per tradurre le label.

Per quanto concerne la login è presente l'active form come riporto di seguito:


   <?php $form = ActiveForm::begin([
       'id' => 'login-form',
       'options' => ['class' => 'form-horizontal'],
    'action' => Url::to(['site/login']),
       'fieldConfig' => [
           'template' => "{label}\n<div class=\"col-lg-8\">{input}</div>\n<div class=\"col-lg-11\">{error}</div>",
           'labelOptions' => ['class' => 'col-lg-3 control-label'],
       ],
   ]); ?>
       <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
       <?= $form->field($model, 'password')->passwordInput() ?>
       <?= $form->field($model, 'rememberMe')->checkbox([
           'template' => "<div class=\"col-lg-offset-1 col-lg-8\">{input} {label}</div>\n<div class=\"col-lg-11\">{error}</div>",
       ]) ?>
       <div class="form-group">
           <div class="col-lg-offset-1 col-lg-11">
               <?= Html::submitButton('ACCEDI AL PORTALE', ['class' => 'btn btn-primary pull-right', 'name' => 'login-button']) ?>
           </div>
       </div>
   <?php ActiveForm::end(); ?>

Danilo Eusepi

unread,
Mar 14, 2016, 10:02:25 AM3/14/16
to yii-it, max...@ufficyo.com
Ad esempio se genero con gii dei form e poi inserisco dei dati che non rispettano le regole presenti nelle rules(), la segnalazione di errore che mi viene fatta in frontend è nella source language.
Quindi, come faccio a far tradurre questo tipo di segnalazioni?

Lorenzo Milesi

unread,
Mar 14, 2016, 10:21:16 AM3/14/16
to yii...@googlegroups.com
> Ad esempio se genero con gii dei form e poi inserisco dei dati che non
> rispettano le regole presenti nelle rules(), la segnalazione di errore che mi
> viene fatta in frontend è nella source language.
> Quindi, come faccio a far tradurre questo tipo di segnalazioni?

a me funziona una volta impostata la lingua.
prova ad omettere dalla configurazione il parametro sourceLanguage e mettere il language così:
'language' => 'it',

Danilo Eusepi

unread,
Mar 14, 2016, 11:18:31 AM3/14/16
to yii-it, max...@ufficyo.com
Funziona!
Senza caricare la classe di riferimento, posizionando 'language' => 'it-IT', nell'array di configurazione al di fuori di component =>.
Nelle precendenti prove avevo tentato un po di tutto ma non escludere il caricamento della classe, così sembra che funzioni.
Reply all
Reply to author
Forward
0 new messages