public function execute() { // Generate a template .pot based on source tree $this->output("Getting 'gettext' default messages from sources:"); $this->generatePot(); $this->output("done.\n"); $langTool = new languages(); if ($this->getOption('lang', ALL_LANGUAGES) === ALL_LANGUAGES) { $codes = $langTool->getLanguages(); } else { $codes = array($this->getOption('lang')); } // Do all languages foreach ($codes as $langcode) { $this->output("Loading messages for {$langcode}:\n"); if (!$this->generatePo($langcode, $langTool->getMessages($langcode))) { $this->error("ERROR: Failed to write file."); } else { $this->output("Applying template:"); $this->applyPot($langcode); } } }
$wgOut->element('%', true); $wgOut->element('Obsolete', true); $wgOut->element('%', true); $wgOut->element('Problematic', true); $wgOut->element('%', true); $wgOut->blockend(); $wgGeneralMessages = $wgLanguages->getGeneralMessages(); $wgRequiredMessagesNumber = count($wgGeneralMessages['required']); foreach ($wgLanguages->getLanguages() as $code) { # Don't check English or RTL English if ($code == 'en' || $code == 'enRTL') { continue; } # Calculate the numbers $language = $wgContLang->getLanguageName($code); $messages = $wgLanguages->getMessages($code); $messagesNumber = count($messages['translated']); $requiredMessagesNumber = count($messages['required']); $requiredMessagesPercent = $wgOut->formatPercent($requiredMessagesNumber, $wgRequiredMessagesNumber); $obsoleteMessagesNumber = count($messages['obsolete']); $obsoleteMessagesPercent = $wgOut->formatPercent($obsoleteMessagesNumber, $messagesNumber, true); $messagesWithoutVariables = $wgLanguages->getMessagesWithoutVariables($code); $emptyMessages = $wgLanguages->getEmptyMessages($code); $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace($code); $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages($code); $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars($code); $problematicMessagesNumber = count(array_unique(array_merge($messagesWithoutVariables, $emptyMessages, $messagesWithWhitespace, $nonXHTMLMessages, $messagesWithWrongChars))); $problematicMessagesPercent = $wgOut->formatPercent($problematicMessagesNumber, $messagesNumber, true); # Output them $wgOut->blockstart(); $wgOut->element("{$language}");
$langdir = LOCALE_OUTPUT_DIR . '/' . $langcode; $from = $langdir . '/fromlanguagefile.po'; $pot = LOCALE_OUTPUT_DIR . '/wfMsg.pot'; $dest = $langdir . '/messages.po'; // Merge template and generate file to get final .po exec(MSGMERGE_BIN . MSGMERGE_OPTIONS . " {$from} {$pot} -o {$dest} "); // delete no more needed file // unlink($from); } // Generate a template .pot based on source tree echo "Getting 'gettext' default messages from sources:"; generatePot(); echo "done.\n"; $langTool = new languages(); // Do all languages foreach ($langTool->getMessages() as $langcode) { echo "Loading messages for {$langcode}:\t"; require_once Language::getClassFileName($langcode); $arr = 'wgAllMessages' . $langcode; if (!@is_array(${$arr})) { echo "NONE FOUND\n"; } else { echo "ok\n"; if (!generatePo($langcode, ${$arr})) { echo "ERROR: Failed to wrote file.\n"; } else { echo "Applying template:"; applyPot($langcode); } } }
function applyPot($langcode) { $langdir = LOCALE_OUTPUT_DIR . '/' . $langcode; $from = $langdir . '/fromlanguagefile.po'; $pot = LOCALE_OUTPUT_DIR . '/wfMsg.pot'; $dest = $langdir . '/messages.po'; // Merge template and generate file to get final .po exec(MSGMERGE_BIN . MSGMERGE_OPTIONS . " {$from} {$pot} -o {$dest} "); // delete no more needed file // unlink($from); } // Generate a template .pot based on source tree echo "Getting 'gettext' default messages from sources:"; generatePot(); echo "done.\n"; $langTool = new languages(); if ($options['lang'] === ALL_LANGUAGES) { $codes = $langTool->getLanguages(); } else { $codes = array($options['lang']); } // Do all languages foreach ($codes as $langcode) { echo "Loading messages for {$langcode}:\n"; if (!generatePo($langcode, $langTool->getMessages($langcode))) { echo "ERROR: Failed to write file.\n"; } else { echo "Applying template:"; applyPot($langcode); } }