Как настроить gettext с помощью Yii :: t () в Yii2 Advanced?

Я установил расширенный шаблон Yii2 и настроил Yii :: t () с помощью PhpMessageSource, но мне нужно настроить его с помощью GettextMessageSource. Я добавил в common / config / main-local.php этот код:

'i18n' => [
            'translations' => [
                'app*' => [
                    'class' => 'yii\i18n\GettextMessageSource',
                    'basePath' => '@app/messages',
                    'sourceLanguage' => 'en-US',
                ],
            ],
        ],

Поместите в frontend / messages / ru-RU образец текста файла app.po:

msgid "TEST"
msgstr "Текст"

Добавить в файл представления:

Yii::t('app', 'TEST');

Но не работает, где мне нужно хранить файлы .po или что я делаю не так?


person Demir Volkov    schedule 10.09.2014    source источник


Ответы (3)


'basePath' => '@app/messages',

изменить на 'basePath' => '@common/messages', или 'basePath' => '@root/common/messages

и замените ваши сообщения на common / messages.

person zelenin    schedule 11.09.2014

У меня также была проблема с GettextMessageSource. Проверьте свой po-файл, есть ли в нем строка msgctxt. Он должен выглядеть так:

msgctxt "app"
msgid "Settings"
msgstr "Ustawienia"
person Marcin    schedule 08.12.2014

вы также можете передать параметр в Yii :: t ()

Yii::t("app", "some text: {someVariable}",["someVariable"=>$whatEverYouWant]))
person yousef    schedule 18.05.2017