yii\console\controllers\MessageController::extractMessages PHP Method

extractMessages() protected method

Extracts messages from a file
protected extractMessages ( string $fileName, string $translator, array $ignoreCategories = [] ) : array
$fileName string name of the file to extract messages from
$translator string name of the function used to translate messages
$ignoreCategories array message categories to ignore. This parameter is available since version 2.0.4.
return array
    protected function extractMessages($fileName, $translator, $ignoreCategories = [])
    {
        $coloredFileName = Console::ansiFormat($fileName, [Console::FG_CYAN]);
        $this->stdout("Extracting messages from {$coloredFileName}...\n");
        $subject = file_get_contents($fileName);
        $messages = [];
        $tokens = token_get_all($subject);
        foreach ((array) $translator as $currentTranslator) {
            $translatorTokens = token_get_all('<?php ' . $currentTranslator);
            array_shift($translatorTokens);
            $messages = array_merge_recursive($messages, $this->extractMessagesFromTokens($tokens, $translatorTokens, $ignoreCategories));
        }
        $this->stdout("\n");
        return $messages;
    }

Usage Example

Beispiel #1
0
 protected function extractMessages($fileName, $translator)
 {
     $messages = parent::extractMessages($fileName, $translator);
     if (!empty($messages)) {
         echo 'Found messages: ' . print_r($messages, true);
     }
     try {
         $fileContent = file_get_contents($fileName);
         $markerFound = $this->findMarker($fileContent);
         if ($markerFound) {
             $fqn = $this->extractClassname($fileName, $fileContent);
             $arMessages = $this->loadMessages($fqn);
             $messages[$fqn] = $arMessages;
             if (!empty($arMessages)) {
                 echo 'Added arMessages: ' . print_r($messages, true);
             }
         }
     } catch (\Exception $ex) {
         $msg = $ex->getMessage();
         echo "  error: '{$msg}'\n";
     }
     return $messages;
 }