[英]how to use Yiic message command with CDbMessageSource
我曾經使用 CPhpMessageSource 但我想嘗試 CDbMessageSource 我雖然我只需要改變這個...
'components' => array(
'message' => array(
// 'class' => 'CPhpMessageSource',
'class' => 'CDbMessageSource',
),
但是當我執行 Yiic 消息以在數據庫中插入翻譯數據時,它仍然在 protected/messages/"files".php 中生成文件......
我一定錯過了一點......
我按照這個http://www.yiiframework.com/doc/api/1.1/CDbMessageSource
盡管 Yii 有一個用於數據庫翻譯的“閱讀器”,但它沒有“編寫器”。 我通常最終做的是編寫一些可以使用生成的翻譯文件填充表的代碼。
您還可以為 Yii 編寫一個派生的“消息”命令,並使用它直接插入數據庫,這不是很多工作:
<?php
Yii::import('system.cli.commands.MessageCommand', TRUE);
class DbMessageCommand extends MessageCommand
{
protected function generateMessageFile($messages,$fileName,$overwrite,$removeOld,$sort)
{
if (preg_match('@/(..)/([^\\/:"*?<>|]+?)\.php$@i', $fileName, $matches))
{
$language = $matches[1];
$category = $matches[2];
foreach ($messages as $message)
{
// $message contains the string, $category has the category and $language is the current language
// Add to your DB here
}
}
}
}
只需在您的命令子目錄中創建一個DbMessageCommand.php
文件並完成代碼,您就應該開始營業了。
簡而言之,它的作用是使用常規消息命令來解析文件,但是當調用generateMessageFile
函數寫入 php 文件時,它使用正則表達式來確定將寫入的內容(按語言/類別調用)並將其添加到數據庫中。
我沒有包含該代碼,因為我不使用模型,因為它們包含在 Yii 中。 我有我自己的CDbMessageSource
和我自己的字符串表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.