2015-05-07 15 views
8

Sto provando a impostare la traduzione del frontend del sito web utilizzando la cosa i18l. Qui è il mio file i18l.php posto sul frontend/configYii2 - Multi lingua

<?php 
return [ 
    'sourcePath' => 'frontend', 
    'languages' => ['en-US', 'pt-BR'] , //Add languages to the array for the language files to be generated. 
    'translator' => 'Yii::t', 
    'sort' => false, 
    'removeUnused' => false, 
    'only' => ['*.php'], 
    'except' => [ 
     '.svn', 
     '.git', 
     '.gitignore', 
     '.gitkeep', 
     '.hgignore', 
     '.hgkeep', 
     '/messages', 
     '/vendor', 
    ], 
    'format' => 'php', 
    'messagePath' => 'frontend' . DIRECTORY_SEPARATOR . 'translations', 
    'overwrite' => true, 
]; 

e qui il mio main.php anche sul frontend

(...) 
'language' => 'en-US', 
'components' => [ 
     'i18n' => [ 
      'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => 'frontend/translations', 

       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
] 

sto usando il <?= Yii::t('app', 'some string') ?> sui siti e layout e quando corro il comando ./yii message/extract @ frontend/config/i18n.php mi crea una cartella chiamata 'translations' contiene altre due cartelle 'en-US' e 'pt-BR' entrambe con app.php che avevo già riempito con alcune traduzioni. Ma ancora, nessuna traduzione accade quando cambio la lingua sul main.php come dovrebbe essere (credo). Apprezzerei se qualcuno potesse darmi una mano su quello.

Grazie.

+1

Ottimo post. Volevo solo sottolineare una cosa. ' Gogol

+0

Non sono sicuro che sia così, ma ho scoperto che se le destinazioni di destinazione e di origine sono uguali, è necessario forzare le traduzioni per ottenere il rispetto del file anziché l'input param da 'Yii :: t'. http://www.yiiframework.com/doc-2.0/yii-i18n-messagesource.html#$forceTranslation-detail –

risposta

4

Ottimo post, con tutti i dettagli necessari.

Ero alle prese con le stesse cose, ma l'hai fatto abbastanza bene.

Quindi, se è possibile eseguire il comando e genera il file, quindi il sourcePath è corretto. Se non visualizza i messaggi traduzione in fase di runtime, nonostante le modifiche di impostazione, quindi, presumo la questionepotrebbe essere sul vostro basePath:

Provate ad usare, alla configurazione basePath, il seguente:

'basePath' => '@frontend/translations',