将 Yii 1.x 消息从文件移动到 db 源


Move Yii 1.x messages from file to db source

我目前正在使用默认的、基于文件的 Yii 消息源 (CPhpMessageSource),我希望将其更改为基于数据库的源 (CDbMessageSource),但我在基于文件的源中已经有大量现有的翻译。

有没有一种快速将这些翻译从文件移动到数据库源的方法?

如何创建一个数据库迁移,其中为每个翻译插入一行。如果您需要进一步的帮助,请尝试共享一些代码,我可以尝试为您提供一个代码示例。

只需创建读取所有翻译并将其插入数据库的脚本:

$content = file_get_content($pathToMessages);
$translations = eval($content);
$sql = "INSERT INTO `translations` (`key`, `value`) VALUES ";
$params = [];
$inserts = [];
$index = 0;
foreach ($translations as $key => $value) {
   $inserts[] = "(:param{$index}, :param".($index + 1).")";
   $params[":param{$index}"] = $key;
   $params[":param".($index + 1)] = $value;
   $index += 2;
}
$sql .= implode(', ', $inserts);
// Convert it to Yii style.
$query = $db->prepare($sql);
$query->execute($params);