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.
Ottimo post. Volevo solo sottolineare una cosa. ' =' potrebbe essere rischioso. Non tutti i setup hanno tag brevi abilitati. potrebbe sembrare sciocco, ma può distruggere l'intero sistema durante la migrazione al nuovo server. Perché non usare ' Php echo' invece? :) – Gogol
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 –