From 31c5be42b8de2e441fac6316664e2b52a572d004 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Fri, 20 Feb 2009 20:18:47 +0000 Subject: [PATCH] Language script: Extend variables check to cover also variables which should not be used. --- maintenance/language/checkLanguage.inc | 8 ++++---- maintenance/language/languages.inc | 16 ++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc index 34d4d40e85..52281b575b 100644 --- a/maintenance/language/checkLanguage.inc +++ b/maintenance/language/checkLanguage.inc @@ -110,7 +110,7 @@ class CheckLanguageCLI { 'untranslated' => 'getUntranslatedMessages', 'duplicate' => 'getDuplicateMessages', 'obsolete' => 'getObsoleteMessages', - 'variables' => 'getMessagesWithoutVariables', + 'variables' => 'getMessagesWithMismatchVariables', 'plural' => 'getMessagesWithoutPlural', 'empty' => 'getEmptyMessages', 'whitespace' => 'getMessagesWithWhitespace', @@ -157,7 +157,7 @@ class CheckLanguageCLI { 'untranslated' => '$1 message(s) of $2 are not translated to $3, but exist in en:', 'duplicate' => '$1 message(s) of $2 are translated the same in en and $3:', 'obsolete' => '$1 message(s) of $2 do not exist in en or are in the ignore list, but exist in $3:', - 'variables' => '$1 message(s) of $2 in $3 don\'t use some variables that en uses:', + 'variables' => '$1 message(s) of $2 in $3 don\'t match the variables used in en:', 'plural' => '$1 message(s) of $2 in $3 don\'t use {{plural}} while en uses:', 'empty' => '$1 message(s) of $2 in $3 are empty or -:', 'whitespace' => '$1 message(s) of $2 in $3 have trailing whitespace:', @@ -199,7 +199,7 @@ Check codes (ideally, all of them should result 0; all the checks are executed b * untranslated: Messages which are required to translate, but are not translated. * duplicate: Messages which translation equal to fallback * obsolete: Messages which are untranslatable or do not exist, but are translated. - * variables: Messages without variables which should be used. + * variables: Messages without variables which should be used, or with variables which shouldn't be used. * empty: Empty messages and messages that contain only -. * whitespace: Messages which have trailing whitespace. * xhtml: Messages which are not well-formed XHTML (checks only few common errors). @@ -587,7 +587,7 @@ Check codes (ideally, all of them should result 0; all the checks are executed b * untranslated: Messages which are required to translate, but are not translated. * duplicate: Messages which translation equal to fallback * obsolete: Messages which are untranslatable, but translated. - * variables: Messages without variables which should be used. + * variables: Messages without variables which should be used, or with variables which shouldn't be used. * empty: Empty messages. * whitespace: Messages which have trailing whitespace. * xhtml: Messages which are not well-formed XHTML (checks only few common errors). diff --git a/maintenance/language/languages.inc b/maintenance/language/languages.inc index 61ad287fd6..6159e8449d 100644 --- a/maintenance/language/languages.inc +++ b/maintenance/language/languages.inc @@ -300,17 +300,17 @@ class languages { } /** - * Get the messages which do not use some variables. + * Get the messages whose variables do not match the original ones. * * @param $code The language code. * - * @return The messages which do not use some variables in this language. + * @return The messages whose variables do not match the original ones. */ - public function getMessagesWithoutVariables( $code ) { + public function getMessagesWithMismatchVariables( $code ) { $this->loadGeneralMessages(); $this->loadMessages( $code ); $variables = array( '\$1', '\$2', '\$3', '\$4', '\$5', '\$6', '\$7', '\$8', '\$9' ); - $messagesWithoutVariables = array(); + $mismatchMessages = array(); foreach ( $this->mMessages[$code]['translated'] as $key => $value ) { $missing = false; foreach ( $variables as $var ) { @@ -318,12 +318,16 @@ class languages { !preg_match( "/$var/sU", $value ) ) { $missing = true; } + if ( !preg_match( "/$var/sU", $this->mGeneralMessages['translatable'][$key] ) && + preg_match( "/$var/sU", $value ) ) { + $missing = true; + } } if ( $missing ) { - $messagesWithoutVariables[$key] = $value; + $mismatchMessages[$key] = $value; } } - return $messagesWithoutVariables; + return $mismatchMessages; } /** -- 2.20.1