yii2将消息提取到db

问题描述 投票:1回答:1

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

'*'=> [
         '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。如何将消息导出到DB?有人帮忙吗?

php yii2 internationalization
1个回答
0
投票

你需要使用以下CONSOLE-DOCS有一个ExtendedMessageControler类。此控制器扩展默认的MessageController以提供一些有用的操作:

  • 要在不同的消息源之间迁移消息,请执行以下常见操作 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}}',
    ]
);

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

<?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,
    ]
);

您只需运行migration命令即可创建表,并将消息导出到相应的表中。

有关更多详细信息,请参阅SOURCEactionMigrate()

© www.soinside.com 2019 - 2024. All rights reserved.