簡體   English   中英

如何在 CDbMessageSource 中使用 Yiic 消息命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM