* @author Antoine Musso * * Output is posted from time to time on: * https://www.mediawiki.org/wiki/Localisation_statistics */ $optionsWithArgs = [ 'output' ]; $optionsWithoutArgs = [ 'help' ]; require_once __DIR__ . '/../commandLine.inc'; require_once 'languages.inc'; require_once __DIR__ . '/StatOutputs.php'; if ( isset( $options['help'] ) ) { showUsage(); } # Default output is WikiText if ( !isset( $options['output'] ) ) { $options['output'] = 'wiki'; } /** Print a usage message */ function showUsage() { print <<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 = $languages->getGeneralMessages(); $wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] ); foreach ( $languages->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 = $languages->getFallback( $code ); $messages = $languages->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 = $languages->getMessagesWithMismatchVariables( $code ); $emptyMessages = $languages->getEmptyMessages( $code ); $messagesWithWhitespace = $languages->getMessagesWithWhitespace( $code ); $nonXHTMLMessages = $languages->getNonXHTMLMessages( $code ); $messagesWithWrongChars = $languages->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 ); $output->element( "$problematicMessagesNumber/$messagesNumber" ); $output->element( $problematicMessagesPercent ); $output->blockend(); } # Footer $output->footer();