Se si desidera avere traduzioni per ciascun modulo contenuto nel modulo, è necessario registrare le traduzioni per quel modulo. Non può essere fatto semplicemente dal file di configurazione. Probabilmente lo hai già nel tuo file del modulo, includo solo per completezza. Il codice viene copiato dalla documentazione, e ha bisogno di essere nel file del modulo, quindi in app/modules/Foo.php
<?php
namespace app\modules\foo;
use Yii;
class Module extends \yii\base\Module
{
public $controllerNamespace = 'app\modules\foo\controllers';
public function init()
{
parent::init();
/** Register custom translations for this module **/
$this->registerTranslations();
}
public function registerTranslations()
{
/**This registers translations for the Foo module **/
Yii::$app->i18n->translations['modules/foo/*'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en-US',
'basePath' => '@app/modules/foo/messages',
/**Tells yii where to find the translations for validation and form categories **/
'fileMap' => [
'modules/foo/validation' => 'validation.php',
'modules/foo/form' => 'form.php',
...
],
];
}
public static function t($category, $message, $params = [], $language = null)
{
return Yii::t('modules/users/' . $category, $message, $params, $language);
}
}
Nel tuo caso non sembra che tu abbia bisogno di fornire file di mapping.You potrebbe semplicemente utilizzare questo formato per i tuoi file
[[basePath]]/LanguageID/CategoryName.php
Purtroppo non riesco a trovare un elenco delle categorie disponibili.
Se si desidera eseguire l'override di alcune delle traduzioni del modulo, è necessario specificare la categoria da utilizzare, come questa nel file di configurazione. In particolare sovrascrive la categoria moduli/foo/bar.
'i18n' => [
'translations' => [
'modules/foo*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/messages',
],
],
],
Il file di traduzione ha bisogno di seguire una struttura di cartelle come quella nella descrizione di traduzione, così nell'esempio di cui sopra sarebbe
app/messages/ [language code] /modules/foo/bar.php
otherise, è possibile utilizzare fileMap
per mappare in posizioni diverse, come se il file bar.php si trova in app/messaggi/[codice lingua]
'fileMap' => [
'modules/foo/bar' => 'bar.php'
]
Vi preghiamo di mostrare come questo modulo registrato le traduzioni – soju