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"); }
# Header $output->heading(); $output->blockstart(); $output->element('Language', true); $output->element('Code', true); $output->element('Fallback', true); $output->element('Translated', true); $output->element('%', true); $output->element('Obsolete', true); $output->element('%', true); $output->element('Problematic', true); $output->element('%', true); $output->blockend(); $wgGeneralMessages = $wgLanguages->getGeneralMessages(); $wgRequiredMessagesNumber = count($wgGeneralMessages['required']); foreach ($wgLanguages->getLanguages() as $code) { # Don't check English, RTL English or dummy language codes if ($code == 'en' || $code == 'enRTL' || is_array($wgDummyLanguageCodes) && isset($wgDummyLanguageCodes[$code])) { continue; } # Calculate the numbers $language = Language::fetchLanguageName($code); $fallback = $wgLanguages->getFallback($code); $messages = $wgLanguages->getMessages($code); $messagesNumber = count($messages['translated']); $requiredMessagesNumber = count($messages['required']); $requiredMessagesPercent = $output->formatPercent($requiredMessagesNumber, $wgRequiredMessagesNumber); $obsoleteMessagesNumber = count($messages['obsolete']); $obsoleteMessagesPercent = $output->formatPercent($obsoleteMessagesNumber, $messagesNumber, true); $messagesWithMismatchVariables = $wgLanguages->getMessagesWithMismatchVariables($code); $emptyMessages = $wgLanguages->getEmptyMessages($code);
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); }