如何在Yii2高级中使用Yii :: t()配置gettext?

时间:2014-09-10 15:54:02

标签: php yii gettext multilingual yii2

我安装了Yii2高级模板并使用PhpMessageSource配置Yii :: t(),但我需要使用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文件或我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

改为 'basePath' => '@common/messages','basePath' => '@root/common/messages

并将您的邮件替换为公共邮件。

答案 1 :(得分:1)

我还遇到了GettextMessageSource的问题。检查你的po文件是否有行msgctxt 它应该是这样的:

msgctxt "app"
msgid "Settings"
msgstr "Ustawienia"

答案 2 :(得分:0)

你也可以传递一个参数Yii :: t()

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