【问题标题】:How to configure gettext with Yii::t() in Yii2 advanced?如何在 Yii2 Advanced 中使用 Yii::t() 配置 gettext?
【发布时间】:2014-09-10 15:54:01
【问题描述】:

我安装了 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 文件或我做错了什么?

【问题讨论】:

    标签: php yii gettext multilingual yii2


    【解决方案1】:
    'basePath' => '@app/messages',
    

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

    并将您的消息替换为 common/messages。

    【讨论】:

      【解决方案2】:

      GettextMessageSource 也有问题。检查您的 po 文件是否有行 msgctxt 它应该是这样的:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-31
          • 1970-01-01
          • 1970-01-01
          • 2017-02-16
          • 2017-06-04
          相关资源
          最近更新 更多