From 7325269e39940ef554b10f2e816b84b413cb9474 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Sun, 6 Aug 2006 19:22:52 +0000 Subject: [PATCH] * Remove a redundant function: LanguageSr::getVariantname. * 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 | 3 - maintenance/checkLanguage.php | 116 +++++++++++++++++++++++----------- maintenance/languages.inc | 8 ++- 3 files changed, 84 insertions(+), 43 deletions(-) diff --git a/languages/LanguageSr.php b/languages/LanguageSr.php index 035259a1f8..4258322bfb 100644 --- a/languages/LanguageSr.php +++ b/languages/LanguageSr.php @@ -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" ); - } } ?> diff --git a/maintenance/checkLanguage.php b/maintenance/checkLanguage.php index 663550dd01..0929dcb4fc 100644 --- a/maintenance/checkLanguage.php +++ b/maintenance/checkLanguage.php @@ -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 ); } ?> diff --git a/maintenance/languages.inc b/maintenance/languages.inc index 4f2031ca85..26d851bf86 100644 --- a/maintenance/languages.inc +++ b/maintenance/languages.inc @@ -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"; + } } } } -- 2.20.1