$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}");
    $wgOut->element("{$code}");
    $wgOut->element("{$requiredMessagesNumber}/{$wgRequiredMessagesNumber}");
    $wgOut->element($requiredMessagesPercent);
    $wgOut->element("{$obsoleteMessagesNumber}/{$messagesNumber}");
    $wgOut->element($obsoleteMessagesPercent);
    $wgOut->element("{$problematicMessagesNumber}/{$messagesNumber}");
    $wgOut->element($problematicMessagesPercent);