Jeśli chcesz mieć tłumaczenie dla każdego modułu zawartego w module, musisz zarejestrować tłumaczenia dla tego modułu. Nie można tego zrobić po prostu z pliku konfiguracyjnego. Prawdopodobnie masz już to w swoim pliku modułu, po prostu dołączam do kompletności. Kod jest kopiowany z dokumentacją, i musi być w pliku modułu, więc w 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);
}
}
w twoim przypadku to nie wygląda jak trzeba dostarczyć plik mapping.You może po prostu użyć tego formatu Twoje pliki:
[[basePath]]/LanguageID/CategoryName.php
Niestety nie mogę znaleźć listy dostępnych kategorii.
Jeśli chcesz przesłonić niektóre tłumaczenia modułów, musisz określić kategorię, która ma zostać użyta, np. W pliku konfiguracyjnym. W szczególności nadpisuje kategorię moduły/foo/bar.
'i18n' => [
'translations' => [
'modules/foo*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/messages',
],
],
],
Plik tłumaczenie musi śledzić strukturę folderów podobnie jak w opisie tłumaczeń, więc w powyższym przykładzie byłoby
app/messages/ [language code] /modules/foo/bar.php
Otherise, można użyć fileMap
mapować do różnych miejsc, jak jeśli plik bar.php jest w app/wiadomości/[kod języka]
'fileMap' => [
'modules/foo/bar' => 'bar.php'
]
Proszę pokazać nam, jak ten moduł zarejestrować swoje tłumaczenia – soju