Почему не получаетеся с интернационализацией модуля?

вот так подключаю в модуле

namespace sirgalas\menu;
class Module extends \yii\base\Module
{
    public function registerTranslations()
    {
        Yii::$app->i18n->translations['modules/users/*'] = [
            'class'          => 'yii\i18n\PhpMessageSource',
            'sourceLanguage' => 'ru-Ru',
            'basePath'       => 'sirgalas/menu/messages',
        ];
    }
    public static function t($category, $message, $params = [], $language = null)
    {
        return Yii::t($category, $message, $params, $language);
    }

файл находится в папке massages/ru-RU/ директории модуля в модуле подключаю его название translit.php

в представлении подключаю так
<?= Module::t('translit','Menu setup'); ?> получаю 'Menu setup' почему?
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 3
slo_nik
@slo_nik Куратор тега Yii
Вечер добрый.
Вот Вам пример, подставьте своё название модуля
namespace app\modules\main;

//use Yii;
use yii\base\BootstrapInterface;

class MainBootstrap implements BootstrapInterface
{
	public function bootstrap($app)
	{
		$app->i18n->translations['modules/main/*'] = [
            'class' => 'yii\i18n\PhpMessageSource',
            'forceTranslation' => true,
            'basePath' => '@app/modules/main/messages',
            'fileMap' => [
                'modules/main/module' => 'module.php'
            ]
		];
	}
}

namespace app\modules\main;

use Yii;

/**
 * main module definition class
 */
class MainModule extends \yii\base\Module
{
    /**
     * @inheritdoc
     */
    public $controllerNamespace = 'app\modules\main\controllers';

    public static function t($category, $message, $params = [], $language = null)
    {
        return Yii::t('modules/main/' . $category, $message, $params, $language);
    }

}

В конфигурации подключите модуль, в секции bootstrap
'app\modules\main\MainBootstrap',
Ответ написан
Sergalas
@Sergalas Автор вопроса
Учусь
в моем случае надо было поступить так

public function registerTranslations()
        {
            Yii::$app->i18n->translations['translit'] = [
                'class'          => 'yii\i18n\PhpMessageSource',
                'sourceLanguage' => 'en-US',
                'basePath'       => '@vendor/sirgalas/yii2-wordperss-menu/messages',
            ];
        }

, а потом вызывать все через Module::t('translit','Menu create') то есть должно было совпадать translit вот здесь Yii::$app->i18n->translations['translit'] и вот здесь Module::t('translit','Menu create') да и не забыть указать адрес полный с vendor@vendor/sirgalas/yii2-wordperss-menu/messages
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы объявили функцию registerTranslations(), но надо же было ее вызвать где-то?
Например в init модуля
public function init()
    {
        parent::init();
        $this->registerTranslations();
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы