public function execute() { if (!function_exists('memory_get_usage')) { $this->error("You must compile PHP with --enable-memory-limit", true); } $langtool = new languages(); $memlast = $memstart = memory_get_usage(); $this->output("Base memory usage: {$memstart}\n"); foreach ($langtool->getLanguages() as $langcode) { Language::factory($langcode); $memstep = memory_get_usage(); $this->output(sprintf("%12s: %d\n", $langcode, $memstep - $memlast)); $memlast = $memstep; } $memend = memory_get_usage(); $this->output(' Total Usage: ' . ($memend - $memstart) . "\n"); }
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); } } }
TEXT; exit(1); } # Get the language code if (isset($options['lang'])) { $wgCode = $options['lang']; } else { $wgCode = $wgContLang->getCode(); } # Get the duplicate message source if (isset($options['remove-duplicates']) && strcmp($options['remove-duplicates'], '')) { $wgDupeMessageSource = $options['remove-duplicates']; } else { $wgDupeMessageSource = ''; } # Get the options $wgWriteToFile = !isset($options['dry-run']); $wgListUnknownMessages = !isset($options['no-unknown']); $wgRemoveUnknownMessages = isset($options['remove-unknown']); $wgRemoveDuplicateMessages = isset($options['remove-duplicates']); $messagesFolder = isset($options['messages-folder']) ? $options['messages-folder'] : false; # Get language objects $languages = new languages(); # Write all the language if ($wgCode == 'all') { foreach ($languages->getLanguages() as $languageCode) { rebuildLanguage($languages, $languageCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource, $messagesFolder); } } else { rebuildLanguage($languages, $wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource, $messagesFolder); }
$wgLanguages = new languages(); # Header $wgOut->heading(); $wgOut->blockstart(); $wgOut->element('Language', true); $wgOut->element('Code', true); $wgOut->element('Translated', true); $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);
<?php /** * Dumb program that tries to get the memory usage * for each language file. */ /** This is a command line script */ require_once dirname(__FILE__) . '/../commandLine.inc'; require_once dirname(__FILE__) . '/languages.inc'; $langtool = new languages(); if (!function_exists('memory_get_usage')) { wfDie("You must compile PHP with --enable-memory-limit\n"); } $memlast = $memstart = memory_get_usage(); print 'Base memory usage: ' . $memstart . "\n"; foreach ($langtool->getLanguages() as $langcode) { Language::factory($langcode); $memstep = memory_get_usage(); printf("%12s: %d\n", $langcode, $memstep - $memlast); $memlast = $memstep; } $memend = memory_get_usage(); echo ' Total Usage: ' . ($memend - $memstart) . "\n";
TEXT; exit(1); } # Get the language code if (isset($options['lang'])) { $wgCode = $options['lang']; } else { $wgCode = $wgContLang->getCode(); } # Get the duplicate message source if (isset($options['remove-duplicates']) && strcmp($options['remove-duplicates'], '')) { $wgDupeMessageSource = $options['remove-duplicates']; } else { $wgDupeMessageSource = ''; } # Get the options $wgWriteToFile = !isset($options['dry-run']); $wgListUnknownMessages = !isset($options['no-unknown']); $wgRemoveUnknownMessages = isset($options['remove-unknown']); $wgRemoveDuplicateMessages = isset($options['remove-duplicates']); # Get language objects $wgLanguages = new languages(); # Write all the language if ($wgCode == 'all') { foreach ($wgLanguages->getLanguages() as $language) { rebuildLanguage($language, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource); } } else { rebuildLanguage($wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource); }
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); } }