* The array_name is now used to check for a function existence, it avoids
authorAntoine Musso <hashar@users.mediawiki.org>
Fri, 13 Apr 2007 13:50:23 +0000 (13:50 +0000)
committerAntoine Musso <hashar@users.mediawiki.org>
Fri, 13 Apr 2007 13:50:23 +0000 (13:50 +0000)
  a warning about guessed function.
* Now show the total number of errors found for an extension or print
  " Links OK" if everything looks fine.

maintenance/language/checkExtensioni18n.php
maintenance/language/checkLanguage.inc

index 8ae0d44..7a131a0 100644 (file)
@@ -71,10 +71,17 @@ class extensionLanguages extends languages {
                                 * break with the global statement, so recheck here.
                                 */
                                global ${$this->mExtArrayName};
-                               if( isset( ${$this->mExtArrayName} ) )  {
+                               if( is_array( ${$this->mExtArrayName} ) )  {
                                        $foundarray = ${$this->mExtArrayName};
                                }
 
+                               /* we might have been given a function name, test it too */
+                               if( function_exists( $this->mExtArrayName  ) ) {
+                                       // Load data
+                                       $funcName = $this->mExtArrayName ;
+                                       $foundarray = $funcName();
+                               }
+
                                if(!$foundarray) {
                                        // Provided array could not be found we try to guess it.
 
@@ -150,22 +157,27 @@ function checkExtensionLanguage( $filename, $arrayname, $filter = null ) {
                return false;
        }
 
+       $nErrors = 0;
        if( $filter ) {
-               checkLanguage( $extLanguages, $filter );
+               $nErrors += checkLanguage( $extLanguages, $filter );
        } else {
-               print "Found ". count($langs) . " languages : " . implode(' ', $langs) ."\n";
+               print "Will check ". count($langs) . " languages : " . implode(' ', $langs) .".\n";
                foreach( $langs as $lang ) {
                        if( $lang == 'en' ) {
                                #print "Skipped english language\n";
                                continue;
                        }
 
-                       checkLanguage( $extLanguages, $lang );
+                       $nErrors += checkLanguage( $extLanguages, $lang );
                }
        }
 
+       return $nErrors;
 }
 
+/**
+ * Read the db file, parse it, start the check.
+ */
 function checkExtensionRepository( $extdir, $db ) {
        $fh = fopen( $extdir. '/' . $db, 'r' );
 
@@ -198,7 +210,14 @@ function checkExtensionRepository( $extdir, $db ) {
                $i18n_file = $extdir . '/' . $i18n_file ;
 
                global $myLang;
-               checkExtensionLanguage( $i18n_file, $arrayname, $myLang );
+               $nErrors = checkExtensionLanguage( $i18n_file, $arrayname, $myLang );
+               if($nErrors == 1 ) {
+                       print "\nFound $nErrors error for this extension.\n";
+               } elseif($nErrors) {
+                       print "\nFound $nErrors errors for this extension.\n";
+               } else {
+                       print "Looks OK.\n";
+               }
 
                print "\n";
        }
index 1bc24b8..e859e39 100644 (file)
@@ -4,6 +4,7 @@
  *
  * @todo Stop with globals.
  * @param $code The language code.
+ * @return Number of errors found.
  */
 function checkLanguage( $wgLanguages, $code ) {
        global $wgRequiredMessagesNumber, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks;
@@ -17,6 +18,12 @@ function checkLanguage( $wgLanguages, $code ) {
                return;
        }
 
+       // Initialize counts
+       $untranslatedMessagesNumber = $duplicateMessagesNumber = $obsoleteMessagesNumber
+       = $messagesWithoutVariablesNumber = $messagesWithoutPluralNumber = $emptyMessagesNumber
+       = $messagesWithWhitespaceNumber = $nonXHTMLMessagesNumber = $messagesWithWrongCharsNumber
+       = 0;
+
        # Untranslated messages
        if ( in_array( 'untranslated', $wgChecks ) ) {
                $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
@@ -79,5 +86,7 @@ function checkLanguage( $wgLanguages, $code ) {
                $messagesWithWrongCharsNumber = count( $messagesWithWrongChars );
                $wgLanguages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $messagesNumber in $code include hidden chars which should not be used in the messages:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
        }
+
+       return ($untranslatedMessagesNumber + $duplicateMessagesNumber + $obsoleteMessagesNumber + $messagesWithoutVariablesNumber + $messagesWithoutPluralNumber + $emptyMessagesNumber + $messagesWithWhitespaceNumber + $nonXHTMLMessagesNumber + $messagesWithWrongCharsNumber);
 }
 ?>