/** * Loads the message translation for the specified language and category or returns null if file doesn't exist. * * @param string $messageFile path to message file * @param string $category the message category * @return array|null array of messages or null if file not found */ protected function loadMessagesFromFile($messageFile, $category) { if (is_file($messageFile)) { if ($this->useMoFile) { $gettextFile = new GettextMoFile(['useBigEndian' => $this->useBigEndian]); } else { $gettextFile = new GettextPoFile(); } $messages = $gettextFile->load($messageFile, $category); if (!is_array($messages)) { $messages = []; } return $messages; } else { return null; } }
/** * Writes messages into POT file * * @param array $messages * @param string $dirName name of the directory to write to * @param string $catalog message catalog * @since 2.0.6 */ protected function saveMessagesToPOT($messages, $dirName, $catalog) { $file = str_replace("\\", '/', "{$dirName}/{$catalog}.pot"); FileHelper::createDirectory(dirname($file)); $this->stdout("Saving messages to {$file}...\n"); $poFile = new GettextPoFile(); $merged = []; $hasSomethingToWrite = false; foreach ($messages as $category => $msgs) { $msgs = array_values(array_unique($msgs)); sort($msgs); foreach ($msgs as $message) { $merged[$category . chr(4) . $message] = ''; } ksort($merged); $this->stdout("Category \"{$category}\" merged.\n"); $hasSomethingToWrite = true; } if ($hasSomethingToWrite) { $poFile->save($file, $merged); $this->stdout("Translation saved.\n", Console::FG_GREEN); } else { $this->stdout("Nothing to save.\n", Console::FG_GREEN); } }