From 7f65deb866b79c44c69e91500418e77b5ee87f55 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Sat, 5 Aug 2006 17:00:40 +0000 Subject: [PATCH] =?utf8?q?*=20Adding=20checks=20for=20empty=20messages=20a?= =?utf8?q?nd=20messages=20with=20trailing=20whitespace=20(mostly=20written?= =?utf8?q?=20by=20Niklas=20Laxstr=C3=B6m).=20*=20Adding=20help=20for=20the?= =?utf8?q?=20script.=20*=20Adding=20option=20to=20hide=20the=20lists=20of?= =?utf8?q?=20messages.=20*=20Several=20minor=20fixes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- maintenance/checkLanguage.php | 32 ++++++++++++++---- maintenance/languages.inc | 61 ++++++++++++++++++++++++++++++----- 2 files changed, 79 insertions(+), 14 deletions(-) diff --git a/maintenance/checkLanguage.php b/maintenance/checkLanguage.php index f5c656c98f..7c5a50bccb 100644 --- a/maintenance/checkLanguage.php +++ b/maintenance/checkLanguage.php @@ -1,7 +1,6 @@ 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:" ); +$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:" ); +$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:" ); +$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:" ); +$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 ); ?> diff --git a/maintenance/languages.inc b/maintenance/languages.inc index 80d4243f0a..f35220934e 100644 --- a/maintenance/languages.inc +++ b/maintenance/languages.inc @@ -174,19 +174,19 @@ class languages { * * @param $code The langauge code. * - * @return The obsolete messages for this language. + * @return The messages which do not use some variables in this language. */ public function getMessagesWithoutVariables( $code ) { $this->loadMessages( 'en' ); $this->loadMessages( $code ); $variables = array( '\$1', '\$2', '\$3', '\$4', '\$5', '\$6', '\$7', '\$8', '\$9' ); $messagesWithoutVariables = array(); - foreach ( $this->mMessages['en'] as $key => $value ) { - if ( isset( $this->mMessages[$code][$key] ) ) { + foreach ( $this->mMessages[$code] as $key => $value ) { + if ( isset( $this->mMessages['en'][$key] ) ) { $missing = array(); foreach ( $variables as $var ) { - if ( preg_match( "/$var/sU", $value ) && - !preg_match( "/$var/sU", $this->mMessages[$code][$key] ) ) { + if ( preg_match( "/$var/sU", $this->mMessages['en'][$key] ) && + !preg_match( "/$var/sU", $value ) ) { $missing[] = str_replace( '\$', '$', $var ); } } @@ -198,19 +198,64 @@ class languages { return $messagesWithoutVariables; } + /** + * Get the empty messages. + * + * @param $code The langauge code. + * + * @return The empty messages for this language. + */ + public function getEmptyMessages( $code ) { + $this->loadMessages( 'en' ); + $this->loadMessages( $code ); + $emptyMessages = array(); + foreach ( $this->mMessages[$code] as $key => $value ) { + if ( isset( $this->mMessages['en'][$key] ) && + ( $this->mMessages[$code][$key] === '' || $this->mMessages[$code][$key] === '-' ) ) { + $emptyMessages[$key] = $value; + } + } + return $emptyMessages; + } + + /** + * Get the messages with trailing whitespace. + * + * @param $code The langauge code. + * + * @return The messages with trailing whitespace in this language. + */ + public function getMessagesWithWhitespace( $code ) { + $this->loadMessages( 'en' ); + $this->loadMessages( $code ); + $messagesWithWhitespace = array(); + foreach ( $this->mMessages[$code] as $key => $value ) { + if ( isset( $this->mMessages['en'][$key] ) && $this->mMessages['en'][$key] !== '' && + $this->mMessages[$code][$key] !== rtrim( $this->mMessages[$code][$key] ) ) { + $messagesWithWhitespace[$key] = $value; + } + } + return $messagesWithWhitespace; + } + /** * Output a messages list. * * @param $messages The messages list. * @param $text The text to show before the list (optional). + * @param $hideMessages Hide the real messages if specified. */ - public function outputMessagesList( $messages, $text = '' ) { + public function outputMessagesList( $messages, $text = '', $hideMessages = false ) { if ( count( $messages ) > 0 ) { if ( $text ) { echo "$text\n"; } - foreach ( $messages as $key => $value ) { - echo "* '$key': $value\n"; + if ( $hideMessages ) { + echo "[messages are hidden]\n"; + } else { + foreach ( $messages as $key => $value ) { + echo "* '$key': $value\n"; + } } } } -- 2.20.1