Add option to rebuildLanguage.php
authorSiebrand Mazeland <siebrand@users.mediawiki.org>
Sat, 12 Jul 2008 12:23:41 +0000 (12:23 +0000)
committerSiebrand Mazeland <siebrand@users.mediawiki.org>
Sat, 12 Jul 2008 12:23:41 +0000 (12:23 +0000)
* --remove-unknown: Remove unknown messages

maintenance/language/rebuildLanguage.php
maintenance/language/writeMessagesArray.inc

index 505bbd7..91fda3f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Rewrite the messages array in the files languages/messages/MessagesXX.php.
+ * Rewrite the messages array in the files languages/messages/MessagesXx.php.
  *
  * @file
  * @ingroup MaintenanceLanguage
@@ -17,12 +17,13 @@ require_once( 'writeMessagesArray.inc' );
  * @param $code The language code.
  * @param $write Write to the messages file?
  * @param $listUnknown List the unknown messages?
+ * @param $removeUnKnown Remove the unknown messages?
  */
-function rebuildLanguage( $code, $write, $listUnknown ) {
+function rebuildLanguage( $code, $write, $listUnknown, $removeUnknown ) {
        global $wgLanguages;
        $messages = $wgLanguages->getMessages( $code );
        $messages = $messages['all'];
-       MessageWriter::writeMessagesToFile( $messages, $code, $write, $listUnknown );
+       MessageWriter::writeMessagesToFile( $messages, $code, $write, $listUnknown, $removeUnknown );
 }
 
 # Show help
@@ -33,8 +34,9 @@ Parameters:
        * lang: Language code (default: the installation default language). You can also specify "all" to check all the languages.
        * help: Show this help.
 Options:
-       * dry-run: Don't write the array to the file.
-       * no-unknown: Don't list the unknown messages.
+       * dry-run: Do not write the array to the file.
+       * no-unknown: Do not list the unknown messages.
+       * remove-unknown: Remove unknown messages.
 
 END;
        exit();
@@ -50,6 +52,7 @@ if ( isset( $options['lang'] ) ) {
 # Get the options
 $wgWriteToFile = !isset( $options['dry-run'] );
 $wgListUnknownMessages = !isset( $options['no-unknown'] );
+$wgRemoveUnknownMessages = isset( $options['remove-unknown'] );
 
 # Get language objects
 $wgLanguages = new languages();
@@ -57,10 +60,8 @@ $wgLanguages = new languages();
 # Write all the language
 if ( $wgCode == 'all' ) {
        foreach ( $wgLanguages->getLanguages() as $language ) {
-               rebuildLanguage( $language, $wgWriteToFile, $wgListUnknownMessages );
+               rebuildLanguage( $language, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages );
        }
 } else {
-       rebuildLanguage( $wgCode, $wgWriteToFile, $wgListUnknownMessages );
+       rebuildLanguage( $wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages );
 }
-
-
index ac4a3d9..b4dba41 100644 (file)
@@ -27,9 +27,9 @@ class MessageWriter {
         * @param $write Write to the messages file?
         * @param $listUnknown List the unknown messages?
         */
-       public static function writeMessagesToFile( $messages, $code, $write, $listUnknown ) {
+       public static function writeMessagesToFile( $messages, $code, $write, $listUnknown, $removeUnknown ) {
                # Rewrite the messages array
-               $messages = self::writeMessagesArray( $messages, $code == 'en' );
+               $messages = self::writeMessagesArray( $messages, $code == 'en', false, $removeUnknown );
                $messagesText = $messages[0];
                $sortedMessages = $messages[1];
 
@@ -51,7 +51,10 @@ class MessageWriter {
                                }
                        }
                        if( $listUnknown && isset( $sortedMessages['unknown'] ) && !empty( $sortedMessages['unknown'] ) ) {
-                               echo "\nThere are " . count( $sortedMessages['unknown'] ) . " unknown messages, please check them:\n";
+                               if ( $removeUnknown )
+                                       echo "\nThe following " . count( $sortedMessages['unknown'] ) . " unknown messages have been removed:\n";
+                               else
+                                       echo "\nThere are " . count( $sortedMessages['unknown'] ) . " unknown messages, please check them:\n";
                                foreach( $sortedMessages['unknown'] as $key => $value ) {
                                        echo "* " . $key . "\n";
                                }
@@ -69,10 +72,10 @@ class MessageWriter {
         *
         * @return Array of the PHP text and the sorted messages array.
         */
-       public static function writeMessagesArray( $messages, $ignoredComments = false, $prefix = false ) {
+       public static function writeMessagesArray( $messages, $ignoredComments = false, $prefix = false, $removeUnknown = false ) {
                # Load messages
                $dir = $prefix ? $prefix : dirname( __FILE__ );
-               
+
                require( $dir . '/messages.inc' );
                self::$messageStructure = $wgMessageStructure;
                self::$blockComments = $wgBlockComments;
@@ -118,11 +121,12 @@ class MessageWriter {
 
                # Write the unknown messages, alphabetically sorted.
                # Of course, we don't have any comments for them, because the are unknown.
-               ksort( $sortedMessages['unknown'] );
-               $messagesText .= self::writeMessagesBlock( 'Unknown messages', $sortedMessages['unknown'] );
-               $messagesText .= ");
+               if ( !$removeUnknown ) {
+                       ksort( $sortedMessages['unknown'] );
+                       $messagesText .= self::writeMessagesBlock( 'Unknown messages', $sortedMessages['unknown'] );
+               }
+                       $messagesText .= ");
 ";
-
                return array( $messagesText, $sortedMessages );
        }