* Remove a redundant function: LanguageSr::getVariantname.
authorRotem Liss <rotem@users.mediawiki.org>
Sun, 6 Aug 2006 19:22:52 +0000 (19:22 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Sun, 6 Aug 2006 19:22:52 +0000 (19:22 +0000)
* In the script checkLanguage.php:
** Allow hiding the values of messages, and showing only the keys.
** Allow whitelist and blacklist of checks.
** Several minor fixes.

languages/LanguageSr.php
maintenance/checkLanguage.php
maintenance/languages.inc

index 035259a..4258322 100644 (file)
@@ -212,8 +212,5 @@ class LanguageSr extends LanguageSr_ec {
                $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $marker, $flags);
                $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
        }
-       function getVariantname( $code ) {
-               return wfMsg( "variantname-$code" );
-       }
 }
 ?>
index 663550d..0929dcb 100644 (file)
@@ -15,88 +15,128 @@ require_once( 'languages.inc' );
  * @param $code The language code.
  */
 function checkLanguage( $code ) {
-       global $wgLanguages, $wgHideMessages;
+       global $wgLanguages, $wgChecks, $wgHideMessages, $wgHideMessagesValues;
 
        # Get messages number
        $translatableMessagesNumber = count( $wgLanguages->getTranslatableMessages() );
        $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) );
 
        # Untranslated messages
-       $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
-       $untranslatedMessagesNumber = count( $untranslatedMessages );
-       $wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $translatableMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages );
+       if ( in_array( 'untranslated', $wgChecks ) ) {
+               $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
+               $untranslatedMessagesNumber = count( $untranslatedMessages );
+               $wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $translatableMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
        # 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 );
+       if ( in_array( 'duplicate', $wgChecks ) ) {
+               $duplicateMessages = $wgLanguages->getDuplicateMessages( $code );
+               $duplicateMessagesNumber = count( $duplicateMessages );
+               $wgLanguages->outputMessagesList( $duplicateMessages, "\n$duplicateMessagesNumber messages of $localMessagesNumber are translated the same in en and $code:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
        # Obsolete messages
-       $obsoleteMessages = $wgLanguages->getObsoleteMessages( $code );
-       $obsoleteMessagesNumber = count( $obsoleteMessages );
-       $wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en (or are in the ignored list), but still exist in $code:", $wgHideMessages );
+       if ( in_array( 'obsolete', $wgChecks ) ) {
+               $obsoleteMessages = $wgLanguages->getObsoleteMessages( $code );
+               $obsoleteMessagesNumber = count( $obsoleteMessages );
+               $wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en (or are in the ignored list), but still exist in $code:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
        # 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 );
+       if ( in_array( 'variables', $wgChecks ) ) {
+               $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, $wgHideMessagesValues );
+       }
 
        # Empty messages
-       $emptyMessages = $wgLanguages->getEmptyMessages( $code );
-       $emptyMessagesNumber = count( $emptyMessages );
-       $wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages );
+       if ( in_array( 'empty', $wgChecks ) ) {
+               $emptyMessages = $wgLanguages->getEmptyMessages( $code );
+               $emptyMessagesNumber = count( $emptyMessages );
+               $wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
        # 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 );
+       if ( in_array( 'whitespace', $wgChecks ) ) {
+               $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
+               $messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
+               $wgLanguages->outputMessagesList( $messagesWithWhitespace, "\n$messagesWithWhitespaceNumber messages of $localMessagesNumber in $code have a trailing whitespace:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
        # 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 );
+       if ( in_array( 'xhtml', $wgChecks ) ) {
+               $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
+               $nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
+               $wgLanguages->outputMessagesList( $nonXHTMLMessages, "\n$nonXHTMLMessagesNumber messages of $localMessagesNumber in $code are not well-formed XHTML:", $wgHideMessages, $wgHideMessagesValues );
+       }
 
-       # 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 );
+       # Messages with wrong characters
+       if ( in_array( 'chars', $wgChecks ) ) {
+               $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, $wgHideMessagesValues );
+       }
 }
 
 # Show help
 if ( isset( $options['help'] ) ) {
        echo "Run this script to check a specific language file.\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";
+       echo "\t* lang: Language code, the installation default language will be used if not specified; can also specify \"all\" to check all the languages.\n";
+       echo "\t* help: Show help.\n";
+       echo "\t* hide: Only show the numbers of messages with the problem, hide the messages themselves.\n";
+       echo "\t* hidev: Only show the keys of messages with the problem, hide the values of messages.\n";
+       echo "\t* whitelist: Make only the following checks (form: code,code).\n";
+       echo "\t* blacklist: Don't make the following checks (form: code,code).\n";
+       echo "Check codes (ideally, should be zero):\n";
+       echo "\t* untranslated: Messages which are translatable, but not translated.";
+       echo "\t* duplicate: Messages which are translated the same to English.";
+       echo "\t* obsolete: Messages which are untranslatable, but translated.";
+       echo "\t* variables: Messages without variables which should be used.";
+       echo "\t* empty: Empty messages.";
+       echo "\t* whitespace: Messages which have trailing whitespace.";
+       echo "\t* xhtml: Messages which are not well-formed XHTML.";
+       echo "\t* chars: Messages with hidden characters.";
        exit();
 }
-$wgHideMessages = isset( $options['hide'] );
 
 # Get the language code
-if ( isset( $args[0] ) ) {
-       $code = $args[0];
+if ( isset( $options['lang'] ) ) {
+       $wgCode = $options['lang'];
 } else {
-       $code = $wgLang->getCode();
+       $wgCode = $wgLang->getCode();
 }
 
 # Can't check English
-if ( $code == 'en' ) {
+if ( $wgCode == 'en' ) {
        echo "Current selected language is English, which cannot be checked.\n";
        exit();
 }
 
+# Get the options of hiding things
+$wgHideMessages = isset( $options['hide'] );
+$wgHideMessagesValues = isset( $options['hidev'] );
+
+# Get the checks to do
+$wgChecks = array( 'untranslated', 'duplicate', 'obsolete', 'variables', 'empty', 'whitespace', 'xhtml', 'chars' );
+if ( isset( $options['whitelist'] ) ) {
+       $wgChecks = explode( ',', $options['whitelist'] );
+} elseif ( isset( $options['blacklist'] ) ) {
+       $wgChecks = array_diff( $wgChecks, explode( ',', $options['blacklist'] ) );
+}
+
 # Get language objects
 $wgLanguages = new languages();
 
 # Check the language
-if ( $code == 'all' ) {
+if ( $wgCode == 'all' ) {
        foreach ( $wgLanguages->getList() as $language ) {
-               checkLanguage( $language );
+               if ( $language != 'en' && $language != 'enRTL' ) {
+                       checkLanguage( $language );
+               }
        }
 } else {
-       checkLanguage( $code );
+       checkLanguage( $wgCode );
 }
 
 ?>
index 4f2031c..26d851b 100644 (file)
@@ -337,7 +337,7 @@ class languages {
         * @param $text The text to show before the list (optional).
         * @param $hideMessages Hide the real messages if specified.
         */
-       public function outputMessagesList( $messages, $text = '', $hideMessages = false ) {
+       public function outputMessagesList( $messages, $text = '', $hideMessages = false, $hidevalues = false ) {
                if ( count( $messages ) > 0 ) {
                        if ( $text ) {
                                echo "$text\n";
@@ -346,7 +346,11 @@ class languages {
                                echo "[messages are hidden]\n";
                        } else {
                                foreach ( $messages as $key => $value ) {
-                                       echo "* '$key':         $value\n";
+                                       if ( $hidevalues ) {
+                                               echo "* '$key'\n";
+                                       } else {
+                                               echo "* '$key':         '$value'\n";
+                                       }
                                }
                        }
                }