From cfb7887eb1e33f9e0c4ee3b8e9dadc2f87d1937f Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Tue, 6 Mar 2007 14:03:48 +0000 Subject: [PATCH] (bug 9176) Add --plural parameter to checkLanguage.php --- maintenance/language/checkLanguage.inc | 7 +++++++ maintenance/language/checkLanguage.php | 6 +++++- maintenance/language/languages.inc | 19 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc index bb61754041..1bc24b8e30 100644 --- a/maintenance/language/checkLanguage.inc +++ b/maintenance/language/checkLanguage.inc @@ -45,6 +45,13 @@ function checkLanguage( $wgLanguages, $code ) { $wgLanguages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } + # Messages without plural + if ( in_array( 'plural', $wgChecks ) ) { + $messagesWithoutPlural = $wgLanguages->getMessagesWithoutPlural( $code ); + $messagesWithoutPluralNumber = count( $messagesWithoutPlural ); + $wgLanguages->outputMessagesList( $messagesWithoutPlural, $code, "\n$messagesWithoutPluralNumber messages of $messagesNumber in $code don't use {{plural}} while en uses it:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + } + # Empty messages if ( in_array( 'empty', $wgChecks ) ) { $emptyMessages = $wgLanguages->getEmptyMessages( $code ); diff --git a/maintenance/language/checkLanguage.php b/maintenance/language/checkLanguage.php index 9d09f5a1d9..4ce811c5ca 100644 --- a/maintenance/language/checkLanguage.php +++ b/maintenance/language/checkLanguage.php @@ -22,6 +22,7 @@ Parameters: * whitelist: Make only the following checks (form: code,code). * blacklist: Don't make the following checks (form: code,code). * duplicate: Additionally check for messages which are translated the same to English (default off). + * plural: Additionally check for messages that don't use plural while English does (default off). * noexif: Don't check for EXIF messages (a bit hard and boring to translate), if you know that they are currently not translated and want to focus on other problems (default off). Check codes (ideally, all of them should result 0; all the checks are executed by default): * untranslated: Messages which are required to translate, but are not translated. @@ -67,10 +68,13 @@ if ( isset( $options['whitelist'] ) ) { $wgChecks = array_diff( $wgChecks, explode( ',', $options['blacklist'] ) ); } -# Add duplicate option if specified +# Add duplicate and plural options if specified if ( isset( $options['duplicate'] ) ) { $wgChecks[] = 'duplicate'; } +if ( isset( $options['plural'] ) ) { + $wgChecks[] = 'plural'; +} # Should check for EXIF? $wgCheckEXIF = !isset( $options['noexif'] ); diff --git a/maintenance/language/languages.inc b/maintenance/language/languages.inc index 303ea9bd4f..a10cae9e0d 100644 --- a/maintenance/language/languages.inc +++ b/maintenance/language/languages.inc @@ -246,6 +246,25 @@ class languages { return $messagesWithoutVariables; } + /** + * Get the messages which do not use plural. + * + * @param $code The langauge code. + * + * @return The messages which do not use plural in this language. + */ + public function getMessagesWithoutPlural( $code ) { + $this->loadGeneralMessages(); + $this->loadMessages( $code ); + $messagesWithoutPlural = array(); + foreach ( $this->mMessages[$code]['translated'] as $key => $value ) { + if ( stripos( $this->mGeneralMessages['translatable'][$key], '{{plural:' ) !== false && stripos( $value, '{{plural:' ) === false ) { + $messagesWithoutPlural[$key] = $value; + } + } + return $messagesWithoutPlural; + } + /** * Get the empty messages. * -- 2.20.1