Adding a check if the local messages uses all the variables specified in the English...
authorRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 16:16:43 +0000 (16:16 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 16:16:43 +0000 (16:16 +0000)
maintenance/checkLanguage.php
maintenance/languages.inc

index 0ec7771..f5c656c 100644 (file)
@@ -30,10 +30,6 @@ $wgLanguages = new languages();
 $englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) );
 $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) );
 
-# Show numbers of defined messages
-echo "There are $englishMessagesNumber messages in en.\n";
-echo "There are $localMessagesNumber messages in $code.\n";
-
 # Untranslated messages
 $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
 $untranslatedMessagesNumber = count( $untranslatedMessages );
@@ -49,4 +45,9 @@ $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:" );
 
+# 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:" );
+
 ?>
index 35d0f8f..80d4243 100644 (file)
@@ -169,6 +169,35 @@ class languages {
                return $obsoleteMessages;
        }
 
+       /**
+        * Get the messages which do not use some variables.
+        *
+        * @param $code The langauge code.
+        *
+        * @return The obsolete messages for this language.
+        */
+       public function getMessagesWithoutVariables( $code ) {
+               $this->loadMessages( 'en' );
+               $this->loadMessages( $code );
+               $variables = array( '\$1', '\$2', '\$3', '\$4', '\$5', '\$6', '\$7', '\$8', '\$9' );
+               $messagesWithoutVariables = array();
+               foreach ( $this->mMessages['en'] as $key => $value ) {
+                       if ( isset( $this->mMessages[$code][$key] ) ) {
+                               $missing = array();
+                               foreach ( $variables as $var ) {
+                                       if ( preg_match( "/$var/sU", $value ) &&
+                                               !preg_match( "/$var/sU", $this->mMessages[$code][$key] ) ) {
+                                               $missing[] = str_replace( '\$', '$', $var );
+                                       }
+                               }
+                               if ( count( $missing ) > 0 ) {
+                                       $messagesWithoutVariables[$key] = implode( ', ', $missing );
+                               }
+                       }
+               }
+               return $messagesWithoutVariables;
+       }
+
        /**
         * Output a messages list.
         *
@@ -180,8 +209,8 @@ class languages {
                        if ( $text ) {
                                echo "$text\n";
                        }
-                       foreach ( array_keys( $messages ) as $key ) {
-                               echo "* $key\n";
+                       foreach ( $messages as $key => $value ) {
+                               echo "* '$key':         $value\n";
                        }
                }
        }