From b303422a518804ed9113a6a6e92e955bc059cf32 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Sat, 5 Aug 2006 18:35:41 +0000 Subject: [PATCH] Allow checking all the languages in one script. --- maintenance/checkLanguage.php | 107 ++++++++++++++++++++-------------- maintenance/lang2po.php | 2 +- maintenance/langmemusage.php | 4 +- maintenance/languages.inc | 4 +- maintenance/transstat.php | 4 +- 5 files changed, 70 insertions(+), 51 deletions(-) diff --git a/maintenance/checkLanguage.php b/maintenance/checkLanguage.php index db299419f2..5ccf0b6546 100644 --- a/maintenance/checkLanguage.php +++ b/maintenance/checkLanguage.php @@ -9,10 +9,64 @@ require_once( 'commandLine.inc' ); require_once( 'languages.inc' ); +/** + * Check a language. + * + * @param $code The language code. + */ +function checkLanguage( $code ) { + global $wgLanguages, $wgHideMessages; + + # Get messages number + $englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) ); + $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) ); + + # Untranslated messages + $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code ); + $untranslatedMessagesNumber = count( $untranslatedMessages ); + $wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $englishMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages ); + + # 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 ); + + # Obsolete messages + $obsoleteMessages = $wgLanguages->getObsoleteMessages( $code ); + $obsoleteMessagesNumber = count( $obsoleteMessages ); + $wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en, but still exist in $code:", $wgHideMessages ); + + # 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 ); + + # Empty messages + $emptyMessages = $wgLanguages->getEmptyMessages( $code ); + $emptyMessagesNumber = count( $emptyMessages ); + $wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages ); + + # 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 ); + + # 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 ); + + # 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 ); +} + # Show help if ( isset( $options['help'] ) ) { echo "Run this script to check a specific language file.\n"; - echo "If you don't specify a language code, the script will run on the installation default language.\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"; @@ -36,48 +90,13 @@ if ( $code == 'en' ) { # Get language objects $wgLanguages = new languages(); -# Get messages number -$englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) ); -$localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) ); - -# Untranslated messages -$untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code ); -$untranslatedMessagesNumber = count( $untranslatedMessages ); -$wgLanguages->outputMessagesList( $untranslatedMessages, "\n$untranslatedMessagesNumber messages of $englishMessagesNumber are not translated to $code, but exist in en:", $wgHideMessages ); - -# 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 ); - -# Obsolete messages -$obsoleteMessages = $wgLanguages->getObsoleteMessages( $code ); -$obsoleteMessagesNumber = count( $obsoleteMessages ); -$wgLanguages->outputMessagesList( $obsoleteMessages, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en, but still exist in $code:", $wgHideMessages ); - -# 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 ); - -# Empty messages -$emptyMessages = $wgLanguages->getEmptyMessages( $code ); -$emptyMessagesNumber = count( $emptyMessages ); -$wgLanguages->outputMessagesList( $emptyMessages, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgHideMessages ); - -# 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 ); - -# 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 ); - -# 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 ); +# Check the language +if ( $code == 'all' ) { + foreach ( $wgLanguages->getList() as $language ) { + checkLanguage( $language ); + } +} else { + checkLanguage( $code ); +} ?> diff --git a/maintenance/lang2po.php b/maintenance/lang2po.php index af6bceea4c..cff2a06909 100644 --- a/maintenance/lang2po.php +++ b/maintenance/lang2po.php @@ -137,7 +137,7 @@ $langTool = new languages(); // Do all languages foreach ( $langTool->getList() as $langcode) { echo "Loading messages for $langcode:\t"; - require_once( 'languages/Language' . $langcode . '.php' ); + require_once( Language::getFileName( "$IP/languages/Language", $langcode, ".php" ) ); $arr = 'wgAllMessages'.$langcode; if(!@is_array($$arr)) { echo "NONE FOUND\n"; diff --git a/maintenance/langmemusage.php b/maintenance/langmemusage.php index d45de0e4e6..44a48b7b3a 100644 --- a/maintenance/langmemusage.php +++ b/maintenance/langmemusage.php @@ -17,8 +17,8 @@ $memlast = $memstart = memory_get_usage(); print 'Base memory usage: '.$memstart."\n"; -foreach($langtool->getList() as $langcode) { - require_once('languages/Language'.$langcode.'.php'); +foreach ( $langtool->getList() as $langcode ) { + require_once( Language::getFileName( "$IP/languages/Language", $langcode, ".php" ) ); $memstep = memory_get_usage(); printf( "%12s: %d\n", $langcode, ($memstep- $memlast) ); $memlast = $memstep; diff --git a/maintenance/languages.inc b/maintenance/languages.inc index 0f7ef75713..f6767da058 100644 --- a/maintenance/languages.inc +++ b/maintenance/languages.inc @@ -52,10 +52,10 @@ class languages { $dir = opendir("$IP/languages"); while ( $file = readdir( $dir ) ) { if ( preg_match( "/Messages([^.]*?)\.php$/", $file, $matches ) ) { - $this->mList[] = $matches[1]; + $this->mList[] = str_replace( '_', '-', strtolower( substr( $matches[1], 0, 1 ) ) . substr( $matches[1], 1 ) ); } } - sort($this->mList); + sort( $this->mList ); } /** diff --git a/maintenance/transstat.php b/maintenance/transstat.php index 2bd7b850d5..ddcb8408c8 100644 --- a/maintenance/transstat.php +++ b/maintenance/transstat.php @@ -143,9 +143,9 @@ $langTool = new languages(); // Load message and compute stuff $msgs = array(); -foreach($langTool->getList() as $langcode) { +foreach ( $langTool->getList() as $langcode ) { // Since they aren't loaded by default.. - require( 'languages/Messages' . $langcode . '.php' ); + require( Language::getFileName( "$IP/languages/Messages", $langcode, ".php" ) ); if( isset( $messages ) ) { $msgs[$wgContLang->lcfirst($langcode)] = array( 'total' => count( $messages ), -- 2.20.1