Allow checking all the languages in one script.
authorRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 18:35:41 +0000 (18:35 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 18:35:41 +0000 (18:35 +0000)
maintenance/checkLanguage.php
maintenance/lang2po.php
maintenance/langmemusage.php
maintenance/languages.inc
maintenance/transstat.php

index db29941..5ccf0b6 100644 (file)
@@ -9,10 +9,64 @@
 require_once( 'commandLine.inc' );
 require_once( 'languages.inc' );
 
+/**
+ * Check a language.
+ *
+ * @param $code The language code.
+ */
+function checkLanguage( $code ) {
+       global $wgLanguages, $wgHideMessages;
+
+       # Get messages number
+       $englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) );
+       $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) );
+
+       # Untranslated messages
+       $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
+       $untranslatedMessagesNumber = count( $untranslatedMessages );
+       $wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $englishMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages );
+
+       # Duplicate messages
+       $duplicateMessages = $wgLanguages->getDuplicateMessages( $code );
+       $duplicateMessagesNumber = count( $duplicateMessages );
+       $wgLanguages->outputMessagesList( $duplicateMessages, "\n$duplicateMessagesNumber messages of $localMessagesNumber are translated the same in en and $code:", $wgHideMessages );
+
+       # Obsolete messages
+       $obsoleteMessages = $wgLanguages->getObsoleteMessages( $code );
+       $obsoleteMessagesNumber = count( $obsoleteMessages );
+       $wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en, but still exist in $code:", $wgHideMessages );
+
+       # Messages without variables
+       $messagesWithoutVariables = $wgLanguages->getMessagesWithoutVariables( $code );
+       $messagesWithoutVariablesNumber = count( $messagesWithoutVariables );
+       $wgLanguages->outputMessagesList( $messagesWithoutVariables, "\n$messagesWithoutVariablesNumber messages of $localMessagesNumber in $code don't use some variables while en uses them:", $wgHideMessages );
+
+       # Empty messages
+       $emptyMessages = $wgLanguages->getEmptyMessages( $code );
+       $emptyMessagesNumber = count( $emptyMessages );
+       $wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages );
+
+       # Messages with whitespace
+       $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
+       $messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
+       $wgLanguages->outputMessagesList( $messagesWithWhitespace, "\n$messagesWithWhitespaceNumber messages of $localMessagesNumber in $code have a trailing whitespace:", $wgHideMessages );
+
+       # Non-XHTML messages
+       $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
+       $nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
+       $wgLanguages->outputMessagesList( $nonXHTMLMessages, "\n$nonXHTMLMessagesNumber messages of $localMessagesNumber in $code are not well-formed XHTML:", $wgHideMessages );
+
+       # Non-XHTML messages
+       $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code );
+       $messagesWithWrongCharsNumber = count( $messagesWithWrongChars );
+       $wgLanguages->outputMessagesList( $messagesWithWrongChars, "\n$messagesWithWrongCharsNumber messages of $localMessagesNumber in $code include hidden chars which should not be used in the messages:", $wgHideMessages );
+}
+
 # Show help
 if ( isset( $options['help'] ) ) {
        echo "Run this script to check a specific language file.\n";
-       echo "If you don't specify a language code, the script will run on the installation default language.\n";
+       echo "Parameters:\n";
+       echo "\tLanguage code, the installation default language will be used if not specified; can also specify \"all\" to check all the languages.\n";
        echo "Options:\n";
        echo "\thelp: Show help.\n";
        echo "\thide: Only show the numbers of messages with the problem, hide the messages themselves.\n";
@@ -36,48 +90,13 @@ if ( $code == 'en' ) {
 # Get language objects
 $wgLanguages = new languages();
 
-# Get messages number
-$englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) );
-$localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) );
-
-# Untranslated messages
-$untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
-$untranslatedMessagesNumber = count( $untranslatedMessages );
-$wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $englishMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages );
-
-# Duplicate messages
-$duplicateMessages = $wgLanguages->getDuplicateMessages( $code );
-$duplicateMessagesNumber = count( $duplicateMessages );
-$wgLanguages->outputMessagesList( $duplicateMessages, "\n$duplicateMessagesNumber messages of $localMessagesNumber are translated the same in en and $code:", $wgHideMessages );
-
-# Obsolete messages
-$obsoleteMessages = $wgLanguages->getObsoleteMessages( $code );
-$obsoleteMessagesNumber = count( $obsoleteMessages );
-$wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en, but still exist in $code:", $wgHideMessages );
-
-# Messages without variables
-$messagesWithoutVariables = $wgLanguages->getMessagesWithoutVariables( $code );
-$messagesWithoutVariablesNumber = count( $messagesWithoutVariables );
-$wgLanguages->outputMessagesList( $messagesWithoutVariables, "\n$messagesWithoutVariablesNumber messages of $localMessagesNumber in $code don't use some variables while en uses them:", $wgHideMessages );
-
-# Empty messages
-$emptyMessages = $wgLanguages->getEmptyMessages( $code );
-$emptyMessagesNumber = count( $emptyMessages );
-$wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages );
-
-# Messages with whitespace
-$messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
-$messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
-$wgLanguages->outputMessagesList( $messagesWithWhitespace, "\n$messagesWithWhitespaceNumber messages of $localMessagesNumber in $code have a trailing whitespace:", $wgHideMessages );
-
-# Non-XHTML messages
-$nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
-$nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
-$wgLanguages->outputMessagesList( $nonXHTMLMessages, "\n$nonXHTMLMessagesNumber messages of $localMessagesNumber in $code are not well-formed XHTML:", $wgHideMessages );
-
-# Non-XHTML messages
-$messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code );
-$messagesWithWrongCharsNumber = count( $messagesWithWrongChars );
-$wgLanguages->outputMessagesList( $messagesWithWrongChars, "\n$messagesWithWrongCharsNumber messages of $localMessagesNumber in $code include hidden chars which should not be used in the messages:", $wgHideMessages );
+# Check the language
+if ( $code == 'all' ) {
+       foreach ( $wgLanguages->getList() as $language ) {
+               checkLanguage( $language );
+       }
+} else {
+       checkLanguage( $code );
+}
 
 ?>
index af6bcee..cff2a06 100644 (file)
@@ -137,7 +137,7 @@ $langTool = new languages();
 // Do all languages
 foreach ( $langTool->getList() as $langcode) {
        echo "Loading messages for $langcode:\t";
-       require_once( 'languages/Language' . $langcode . '.php' );
+       require_once( Language::getFileName( "$IP/languages/Language", $langcode, ".php" ) );
        $arr = 'wgAllMessages'.$langcode;
        if(!@is_array($$arr)) {
                echo "NONE FOUND\n";
index d45de0e..44a48b7 100644 (file)
@@ -17,8 +17,8 @@ $memlast = $memstart = memory_get_usage();
 
 print 'Base memory usage: '.$memstart."\n";
 
-foreach($langtool->getList() as $langcode) {
-       require_once('languages/Language'.$langcode.'.php');
+foreach ( $langtool->getList() as $langcode ) {
+       require_once( Language::getFileName( "$IP/languages/Language", $langcode, ".php" ) );
        $memstep = memory_get_usage();
        printf( "%12s: %d\n", $langcode, ($memstep- $memlast) );
        $memlast = $memstep;
index 0f7ef75..f6767da 100644 (file)
@@ -52,10 +52,10 @@ class languages {
                $dir = opendir("$IP/languages");
                while ( $file = readdir( $dir ) ) {
                        if ( preg_match( "/Messages([^.]*?)\.php$/", $file, $matches ) ) {
-                               $this->mList[] = $matches[1];
+                               $this->mList[] = str_replace( '_', '-', strtolower( substr( $matches[1], 0, 1 ) ) . substr( $matches[1], 1 ) );
                        }
                }
-               sort($this->mList);
+               sort( $this->mList );
        }
 
        /**
index 2bd7b85..ddcb840 100644 (file)
@@ -143,9 +143,9 @@ $langTool = new languages();
 
 //  Load message and compute stuff
 $msgs = array();
-foreach($langTool->getList() as $langcode) {
+foreach ( $langTool->getList() as $langcode ) {
        // Since they aren't loaded by default..
-       require( 'languages/Messages' . $langcode . '.php' );
+       require( Language::getFileName( "$IP/languages/Messages", $langcode, ".php" ) );
        if( isset( $messages ) ) {
                $msgs[$wgContLang->lcfirst($langcode)] = array(
                        'total' => count( $messages ),