From 59a1a11e60a0421d7743b8155a8b042b3b10285b Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Tue, 28 Aug 2007 02:37:44 +0000 Subject: [PATCH] Using (optional) parameters instead of globals in checkLanguage.inc. --- maintenance/language/checkExtensioni18n.php | 10 --- maintenance/language/checkLanguage.inc | 80 ++++++++++++--------- maintenance/language/checkLanguage.php | 38 +++------- 3 files changed, 56 insertions(+), 72 deletions(-) diff --git a/maintenance/language/checkExtensioni18n.php b/maintenance/language/checkExtensioni18n.php index 8535ff628b..eff25a5d31 100644 --- a/maintenance/language/checkExtensioni18n.php +++ b/maintenance/language/checkExtensioni18n.php @@ -36,10 +36,6 @@ // Filename for the extension i18n files database: define( 'EXT_I18N_DB', 'i18n.db' ); -// Global parameters for checkLanguage.inc -$wgDisplayLevel = 2; -$wgChecks = array( 'untranslated', 'obsolete', 'variables', 'empty', 'whitespace', 'xhtml', 'chars' ); - $optionsWithArgs = array( 'extdir', 'lang' ); require_once( dirname(__FILE__).'/../commandLine.inc' ); @@ -143,14 +139,8 @@ class extensionLanguages extends languages { * @param $filter Optional, restrict check to a given language code (default; null) */ function checkExtensionLanguage( $filename, $arrayname, $filter = null ) { - global $wgGeneralMessages, $wgRequiredMessagesNumber; - $extLanguages = new extensionLanguages($filename, $arrayname); - // Stuff needed by the checkLanguage routine (globals) - $wgGeneralMessages = $extLanguages->getGeneralMessages(); - $wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] ); - $langs = $extLanguages->getLanguages(); if( !$langs ) { print "ERROR> \$$arrayname array does not exist.\n"; diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc index 6a9fcb8919..468db5500f 100644 --- a/maintenance/language/checkLanguage.inc +++ b/maintenance/language/checkLanguage.inc @@ -2,92 +2,108 @@ /** * Check a language. * - * @todo Stop with globals. * @param $languages The languages object. - * @param $code The language code. + * @param $code The language code (default content language of the wiki running the script on). + * @param: $links Show wiki links to messages (default false)? + * @param: $wikiLanguage Language of the wiki to show the output in, if showing links (default en). + * @param: $checks Checks to do (default all except for duplicates and plural). * @return Number of errors found. */ -function checkLanguage( $languages, $code ) { - global $wgRequiredMessagesNumber, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks; - +function checkLanguage( $languages, $code = null, $displayLevel = 2, $links = false, $wikiLanguage = 'en', $checks = null ) { # Get messages $messages = $languages->getMessages( $code ); $messagesNumber = count( $messages['translated'] ); - # Skip the checks if specified - if ( $wgDisplayLevel == 0 ) { + # Skip the checks if told so + if ( $displayLevel == 0 ) { return; } - // Initialize counts - $untranslatedMessagesNumber = $duplicateMessagesNumber = $obsoleteMessagesNumber - = $messagesWithoutVariablesNumber = $messagesWithoutPluralNumber = $emptyMessagesNumber - = $messagesWithWhitespaceNumber = $nonXHTMLMessagesNumber = $messagesWithWrongCharsNumber - = 0; + # Initialize counts + $problems = 0; + + # Set default language code and checks + if ( !$code ) { + global $wgContLang; + $code = $wgContLang->getCode(); + } + if ( !$checks ) { + $checks = array( 'untranslated', 'obsolete', 'variables', 'empty', 'whitespace', 'xhtml', 'chars' ); + } # Untranslated messages - if ( in_array( 'untranslated', $wgChecks ) ) { + if ( in_array( 'untranslated', $checks ) ) { + $generalMessages = $languages->getGeneralMessages(); + $requiredMessagesNumber = count( $generalMessages['required'] ); $untranslatedMessages = $languages->getUntranslatedMessages( $code ); $untranslatedMessagesNumber = count( $untranslatedMessages ); - $languages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $wgRequiredMessagesNumber are not translated to $code, but exist in en:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $requiredMessagesNumber are not translated to $code, but exist in en:", $displayLevel, $links, $wikiLanguage ); + $problems += $untranslatedMessagesNumber; } # Duplicate messages - if ( in_array( 'duplicate', $wgChecks ) ) { + if ( in_array( 'duplicate', $checks ) ) { $duplicateMessages = $languages->getDuplicateMessages( $code ); $duplicateMessagesNumber = count( $duplicateMessages ); - $languages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $messagesNumber are translated the same in en and $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $messagesNumber are translated the same in en and $code:", $displayLevel, $links, $wikiLanguage ); + $problems += $duplicateMessagesNumber; } # Obsolete messages - if ( in_array( 'obsolete', $wgChecks ) ) { + if ( in_array( 'obsolete', $checks ) ) { $obsoleteMessages = $messages['obsolete']; $obsoleteMessagesNumber = count( $obsoleteMessages ); - $languages->outputMessagesList( $obsoleteMessages, $code, "\n$obsoleteMessagesNumber messages of $messagesNumber do not exist in en (or are in the ignored list), but still exist in $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $obsoleteMessages, $code, "\n$obsoleteMessagesNumber messages of $messagesNumber do not exist in en (or are in the ignored list), but still exist in $code:", $displayLevel, $links, $wikiLanguage ); + $problems += $obsoleteMessagesNumber; } # Messages without variables - if ( in_array( 'variables', $wgChecks ) ) { + if ( in_array( 'variables', $checks ) ) { $messagesWithoutVariables = $languages->getMessagesWithoutVariables( $code ); $messagesWithoutVariablesNumber = count( $messagesWithoutVariables ); - $languages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $displayLevel, $links, $wikiLanguage ); + $problems += $messagesWithoutVariablesNumber; } # Messages without plural - if ( in_array( 'plural', $wgChecks ) ) { + if ( in_array( 'plural', $checks ) ) { $messagesWithoutPlural = $languages->getMessagesWithoutPlural( $code ); $messagesWithoutPluralNumber = count( $messagesWithoutPlural ); - $languages->outputMessagesList( $messagesWithoutPlural, $code, "\n$messagesWithoutPluralNumber messages of $messagesNumber in $code don't use {{plural}} while en uses it:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $messagesWithoutPlural, $code, "\n$messagesWithoutPluralNumber messages of $messagesNumber in $code don't use {{plural}} while en uses it:", $displayLevel, $links, $wikiLanguage ); + $problems += $messagesWithoutPluralNumber; } # Empty messages - if ( in_array( 'empty', $wgChecks ) ) { + if ( in_array( 'empty', $checks ) ) { $emptyMessages = $languages->getEmptyMessages( $code ); $emptyMessagesNumber = count( $emptyMessages ); - $languages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $messagesNumber in $code are empty or -:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $messagesNumber in $code are empty or -:", $displayLevel, $links, $wikiLanguage ); + $problems += $emptyMessagesNumber; } # Messages with whitespace - if ( in_array( 'whitespace', $wgChecks ) ) { + if ( in_array( 'whitespace', $checks ) ) { $messagesWithWhitespace = $languages->getMessagesWithWhitespace( $code ); $messagesWithWhitespaceNumber = count( $messagesWithWhitespace ); - $languages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $messagesNumber in $code have a trailing whitespace:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $messagesNumber in $code have a trailing whitespace:", $displayLevel, $links, $wikiLanguage ); + $problems += $messagesWithWhitespaceNumber; } # Non-XHTML messages - if ( in_array( 'xhtml', $wgChecks ) ) { + if ( in_array( 'xhtml', $checks ) ) { $nonXHTMLMessages = $languages->getNonXHTMLMessages( $code ); $nonXHTMLMessagesNumber = count( $nonXHTMLMessages ); - $languages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $messagesNumber in $code are not well-formed XHTML:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $messagesNumber in $code are not well-formed XHTML:", $displayLevel, $links, $wikiLanguage ); + $problems += $nonXHTMLMessagesNumber; } # Messages with wrong characters - if ( in_array( 'chars', $wgChecks ) ) { + if ( in_array( 'chars', $checks ) ) { $messagesWithWrongChars = $languages->getMessagesWithWrongChars( $code ); $messagesWithWrongCharsNumber = count( $messagesWithWrongChars ); - $languages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $messagesNumber in $code include hidden chars which should not be used in the messages:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $languages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $messagesNumber in $code include hidden chars which should not be used in the messages:", $displayLevel, $links, $wikiLanguage ); + $problems += $messagesWithWrongCharsNumber; } - return ($untranslatedMessagesNumber + $duplicateMessagesNumber + $obsoleteMessagesNumber + $messagesWithoutVariablesNumber + $messagesWithoutPluralNumber + $emptyMessagesNumber + $messagesWithWhitespaceNumber + $nonXHTMLMessagesNumber + $messagesWithWrongCharsNumber); + return $problems; } -?> diff --git a/maintenance/language/checkLanguage.php b/maintenance/language/checkLanguage.php index a83ae0a65a..42a43c02c1 100644 --- a/maintenance/language/checkLanguage.php +++ b/maintenance/language/checkLanguage.php @@ -42,33 +42,20 @@ ENDS; exit(); } -# Get the language code -if ( isset( $options['lang'] ) ) { - $wgCode = $options['lang']; -} else { - $wgCode = $wgContLang->getCode(); -} - -# Get the display level -if ( isset( $options['level'] ) ) { - $wgDisplayLevel = $options['level']; -} else { - $wgDisplayLevel = 2; -} - -# Get the links options +# Get the parameters +$wgCode = isset( $options['lang'] ) ? $options['lang'] : null; +$wgDisplayLevel = isset( $options['level'] ) ? $options['level'] : 2; $wgLinks = isset( $options['links'] ); $wgWikiLanguage = isset( $options['wikilang'] ) ? $options['wikilang'] : 'en'; +$wgCheckEXIF = !isset( $options['noexif'] ); -# Get the checks to do +# Get the checks $wgChecks = array( 'untranslated', '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'] ) ); } - -# Add duplicate and plural options if specified if ( isset( $options['duplicate'] ) ) { $wgChecks[] = 'duplicate'; } @@ -76,16 +63,9 @@ if ( isset( $options['plural'] ) ) { $wgChecks[] = 'plural'; } -# Should check for EXIF? -$wgCheckEXIF = !isset( $options['noexif'] ); - -# Get language objects +# Get language object $wgLanguages = new languages( $wgCheckEXIF ); -# Get the general messages -$wgGeneralMessages = $wgLanguages->getGeneralMessages(); -$wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] ); - # Check the language if ( $wgCode == 'all' ) { foreach ( $wgLanguages->getLanguages() as $language ) { @@ -94,14 +74,12 @@ if ( $wgCode == 'all' ) { } } } else { - # Can't check English + # Can't check English or English RTL if ( $wgCode == 'en' ) { echo "Current selected language is English, which cannot be checked.\n"; } else if ( $wgCode == 'enRTL' ) { echo "Current selected language is RTL English, which cannot be checked.\n"; } else { - checkLanguage( $wgLanguages, $wgCode ); + checkLanguage( $wgLanguages, $wgCode, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks ); } } - - -- 2.20.1