(bug 9176) Add --plural parameter to checkLanguage.php
authorRotem Liss <rotem@users.mediawiki.org>
Tue, 6 Mar 2007 14:03:48 +0000 (14:03 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Tue, 6 Mar 2007 14:03:48 +0000 (14:03 +0000)
maintenance/language/checkLanguage.inc
maintenance/language/checkLanguage.php
maintenance/language/languages.inc

index bb61754..1bc24b8 100644 (file)
@@ -45,6 +45,13 @@ function checkLanguage( $wgLanguages, $code ) {
                $wgLanguages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
        }
 
+       # Messages without plural
+       if ( in_array( 'plural', $wgChecks ) ) {
+               $messagesWithoutPlural = $wgLanguages->getMessagesWithoutPlural( $code );
+               $messagesWithoutPluralNumber = count( $messagesWithoutPlural );
+               $wgLanguages->outputMessagesList( $messagesWithoutPlural, $code, "\n$messagesWithoutPluralNumber messages of $messagesNumber in $code don't use {{plural}} while en uses it:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
+       }
+
        # Empty messages
        if ( in_array( 'empty', $wgChecks ) ) {
                $emptyMessages = $wgLanguages->getEmptyMessages( $code );
index 9d09f5a..4ce811c 100644 (file)
@@ -22,6 +22,7 @@ Parameters:
        * whitelist: Make only the following checks (form: code,code).
        * blacklist: Don't make the following checks (form: code,code).
        * duplicate: Additionally check for messages which are translated the same to English (default off).
+       * plural: Additionally check for messages that don't use plural while English does (default off).
        * noexif: Don't check for EXIF messages (a bit hard and boring to translate), if you know that they are currently not translated and want to focus on other problems (default off).
 Check codes (ideally, all of them should result 0; all the checks are executed by default):
        * untranslated: Messages which are required to translate, but are not translated.
@@ -67,10 +68,13 @@ if ( isset( $options['whitelist'] ) ) {
        $wgChecks = array_diff( $wgChecks, explode( ',', $options['blacklist'] ) );
 }
 
-# Add duplicate option if specified
+# Add duplicate and plural options if specified
 if ( isset( $options['duplicate'] ) ) {
        $wgChecks[] = 'duplicate';
 }
+if ( isset( $options['plural'] ) ) {
+       $wgChecks[] = 'plural';
+}
 
 # Should check for EXIF?
 $wgCheckEXIF = !isset( $options['noexif'] );
index 303ea9b..a10cae9 100644 (file)
@@ -246,6 +246,25 @@ class languages {
                return $messagesWithoutVariables;
        }
 
+       /**
+        * Get the messages which do not use plural.
+        *
+        * @param $code The langauge code.
+        *
+        * @return The messages which do not use plural in this language.
+        */
+       public function getMessagesWithoutPlural( $code ) {
+               $this->loadGeneralMessages();
+               $this->loadMessages( $code );
+               $messagesWithoutPlural = array();
+               foreach ( $this->mMessages[$code]['translated'] as $key => $value ) {
+                       if ( stripos( $this->mGeneralMessages['translatable'][$key], '{{plural:' ) !== false && stripos( $value, '{{plural:' ) === false ) {
+                               $messagesWithoutPlural[$key] = $value;
+                       }
+               }
+               return $messagesWithoutPlural;
+       }
+
        /**
         * Get the empty messages.
         *