From: Rotem Liss Date: Sat, 5 Aug 2006 16:16:43 +0000 (+0000) Subject: Adding a check if the local messages uses all the variables specified in the English... X-Git-Tag: 1.31.0-rc.0~56062 X-Git-Url: http://git.cyclocoop.org//%27%40script%40/%27?a=commitdiff_plain;h=e12e39eb6270c840a22e1200d6a69ca893593c46;p=lhc%2Fweb%2Fwiklou.git Adding a check if the local messages uses all the variables specified in the English message, mostly written by Niklas Laxström. --- diff --git a/maintenance/checkLanguage.php b/maintenance/checkLanguage.php index 0ec7771e77..f5c656c98f 100644 --- a/maintenance/checkLanguage.php +++ b/maintenance/checkLanguage.php @@ -30,10 +30,6 @@ $wgLanguages = new languages(); $englishMessagesNumber = count( $wgLanguages->getMessagesFor( 'en' ) ); $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) ); -# Show numbers of defined messages -echo "There are $englishMessagesNumber messages in en.\n"; -echo "There are $localMessagesNumber messages in $code.\n"; - # Untranslated messages $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code ); $untranslatedMessagesNumber = count( $untranslatedMessages ); @@ -49,4 +45,9 @@ $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:" ); +# 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:" ); + ?> diff --git a/maintenance/languages.inc b/maintenance/languages.inc index 35d0f8fe2e..80d4243f0a 100644 --- a/maintenance/languages.inc +++ b/maintenance/languages.inc @@ -169,6 +169,35 @@ class languages { return $obsoleteMessages; } + /** + * Get the messages which do not use some variables. + * + * @param $code The langauge code. + * + * @return The obsolete messages for 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] ) ) { + $missing = array(); + foreach ( $variables as $var ) { + if ( preg_match( "/$var/sU", $value ) && + !preg_match( "/$var/sU", $this->mMessages[$code][$key] ) ) { + $missing[] = str_replace( '\$', '$', $var ); + } + } + if ( count( $missing ) > 0 ) { + $messagesWithoutVariables[$key] = implode( ', ', $missing ); + } + } + } + return $messagesWithoutVariables; + } + /** * Output a messages list. * @@ -180,8 +209,8 @@ class languages { if ( $text ) { echo "$text\n"; } - foreach ( array_keys( $messages ) as $key ) { - echo "* $key\n"; + foreach ( $messages as $key => $value ) { + echo "* '$key': $value\n"; } } }