$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); $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); $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace($code); $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages($code); $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars($code); $problematicMessagesNumber = count(array_unique(array_merge($messagesWithMismatchVariables, $emptyMessages, $messagesWithWhitespace, $nonXHTMLMessages, $messagesWithWrongChars))); $problematicMessagesPercent = $output->formatPercent($problematicMessagesNumber, $messagesNumber, true); # Output them $output->blockstart(); $output->element("{$language}"); $output->element("{$code}"); $output->element("{$fallback}"); $output->element("{$requiredMessagesNumber}/{$wgRequiredMessagesNumber}"); $output->element($requiredMessagesPercent); $output->element("{$obsoleteMessagesNumber}/{$messagesNumber}"); $output->element($obsoleteMessagesPercent);