【问题标题】:yii2 extract messages to dbyii2 提取消息到数据库
【发布时间】:2018-02-28 13:20:57
【问题描述】:

我正在使用 trntv/Yii2-starter-kit。如何将消息提取到数据库? 我的配置:

'*'=> [
    'class' => 'yii\i18n\DbMessageSource',
    'sourceMessageTable'=>'{{%i18n_source_message}}',
    'messageTable'=>'{{%i18n_message}}',
    'enableCaching' => YII_ENV_DEV,
    'cachingDuration' => 3600,
    'on missingTranslation' => ['\backend\modules\i18n\Module', 'missingTranslation']
]

我的 I18N 文件:

'sourcePath'=>Yii::getAlias('@base'),
'languages' => ['uz','ru'],
'translator' => 'Yii::t',
'sort' => false,
'removeUnused' => true,
'only' => [
    '*.php',
],
'ignoreCategories' => ['yii'],

我试过了:

php yii message @common/config/messages/_base.php

并且 php yii 消息 但它总是将所有消息写入文件:vendor/yiisoft/yii2/messages。如何将消息导出到数据库?有人帮忙吗?

【问题讨论】:

  • 为你添加了一个答案,看看它是否对你有帮助

标签: php yii2 internationalization


【解决方案1】:

您需要根据CONSOLE-DOCS 使用以下内容,有一个ExtendedMessageControler 类。这个控制器扩展了默认的MessageController 以提供一些有用的操作:

  • 要在不同的消息源之间迁移消息,请运行下面的 common

    php console/yii message/migrate @common/config/messages/php.php @common/config/messages/db.php

这意味着您应该在 @common/confiog/messages/ 文件夹中有一个名为 db.php 的文件,该文件将用于创建 messagesource_message 表,该文件的内容应该是

<?php
return \yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/_base.php'),
    [
        // 'db' output format is for saving messages to database.
        'format' => 'db',
        // Connection component to use. Optional.
        'db' => 'db',
        // Custom source message table. Optional.
        'sourceMessageTable' => '{{%i18n_source_message}}',
        // Custom name for translation message table. Optional.
        'messageTable' => '{{%i18n_message}}',
    ]
);

消息源目录将由 @common/config/messages 目录中的 php.php 文件确定,该文件包含以下内容

<?php
return \yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/_base.php'),
    [
        // 'php' output format is for saving messages to php files.
        'format' => 'php',
        // Root directory containing message translations.
        'messagePath' => Yii::getAlias('@common/messages'),
        // boolean, whether the message file should be overwritten with the merged messages
        'overwrite' => true,
    ]
);

您只需要运行迁移命令,就会创建表并将消息导出到相应的表中。

更多详情请参阅SOURCEactionMigrate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多