From 687473048024444e79bdbedd7f129e28c2dcaa89 Mon Sep 17 00:00:00 2001 From: Rotem Liss Date: Fri, 22 Sep 2006 12:18:03 +0000 Subject: [PATCH] Rewriting the language scripts, to introduce the concept of optional messages: messages which can be translated, and can be ommited, without problems. Including linkprefix and imgmultigotopost in the optional messages list (more will be included in the future), and adding the EXIF messages to this list if requested, instead of filtering them out from all the messages; also, fixes of typos, minor bugs and code style. --- maintenance/checkLanguage.php | 83 +++--- maintenance/lang2po.php | 2 +- maintenance/langmemusage.php | 2 +- maintenance/languages.inc | 538 ++++++++++++++++++++++++---------- maintenance/transstat.php | 31 +- 5 files changed, 455 insertions(+), 201 deletions(-) diff --git a/maintenance/checkLanguage.php b/maintenance/checkLanguage.php index f7c5c4fd43..8e489b7be6 100644 --- a/maintenance/checkLanguage.php +++ b/maintenance/checkLanguage.php @@ -15,11 +15,11 @@ require_once( 'languages.inc' ); * @param $code The language code. */ function checkLanguage( $code ) { - global $wgLanguages, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks; + global $wgLanguages, $wgGeneralMessages, $wgRequiredMessagesNumber, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks; - # Get messages number - $translatableMessagesNumber = count( $wgLanguages->getTranslatableMessages() ); - $localMessagesNumber = count( $wgLanguages->getMessagesFor( $code ) ); + # Get messages + $messages = $wgLanguages->getMessages( $code ); + $messagesNumber = count( $messages['translated'] ); # Skip the checks if specified if ( $wgDisplayLevel == 0 ) { @@ -30,85 +30,88 @@ function checkLanguage( $code ) { if ( in_array( 'untranslated', $wgChecks ) ) { $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code ); $untranslatedMessagesNumber = count( $untranslatedMessages ); - $wgLanguages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $translatableMessagesNumber are not translated to $code, but exist in en:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $wgRequiredMessagesNumber are not translated to $code, but exist in en:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Duplicate messages if ( in_array( 'duplicate', $wgChecks ) ) { $duplicateMessages = $wgLanguages->getDuplicateMessages( $code ); $duplicateMessagesNumber = count( $duplicateMessages ); - $wgLanguages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $localMessagesNumber are translated the same in en and $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $messagesNumber are translated the same in en and $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Obsolete messages if ( in_array( 'obsolete', $wgChecks ) ) { - $obsoleteMessages = $wgLanguages->getObsoleteMessages( $code ); + $obsoleteMessages = $messages['obsolete']; $obsoleteMessagesNumber = count( $obsoleteMessages ); - $wgLanguages->outputMessagesList( $obsoleteMessages, $code, "\n$obsoleteMessagesNumber messages of $localMessagesNumber are not exist in en (or are in the ignored list), but still exist in $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $obsoleteMessages, $code, "\n$obsoleteMessagesNumber messages of $messagesNumber are not exist in en (or are in the ignored list), but still exist in $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Messages without variables if ( in_array( 'variables', $wgChecks ) ) { $messagesWithoutVariables = $wgLanguages->getMessagesWithoutVariables( $code ); $messagesWithoutVariablesNumber = count( $messagesWithoutVariables ); - $wgLanguages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $localMessagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Empty messages if ( in_array( 'empty', $wgChecks ) ) { $emptyMessages = $wgLanguages->getEmptyMessages( $code ); $emptyMessagesNumber = count( $emptyMessages ); - $wgLanguages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $localMessagesNumber in $code are empty or -:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $messagesNumber in $code are empty or -:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Messages with whitespace if ( in_array( 'whitespace', $wgChecks ) ) { $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code ); $messagesWithWhitespaceNumber = count( $messagesWithWhitespace ); - $wgLanguages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $localMessagesNumber in $code have a trailing whitespace:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $messagesNumber in $code have a trailing whitespace:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Non-XHTML messages if ( in_array( 'xhtml', $wgChecks ) ) { $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code ); $nonXHTMLMessagesNumber = count( $nonXHTMLMessages ); - $wgLanguages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $localMessagesNumber in $code are not well-formed XHTML:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $messagesNumber in $code are not well-formed XHTML:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } # Messages with wrong characters if ( in_array( 'chars', $wgChecks ) ) { $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code ); $messagesWithWrongCharsNumber = count( $messagesWithWrongChars ); - $wgLanguages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $localMessagesNumber in $code include hidden chars which should not be used in the messages:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); + $wgLanguages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $messagesNumber in $code include hidden chars which should not be used in the messages:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage ); } } # Show help if ( isset( $options['help'] ) ) { - echo "Run this script to check a specific language file.\n"; - echo "Parameters:\n"; - echo "\t* lang: Language code (default: the installation default language). You can also specify \"all\" to check all the languages.\n"; - echo "\t* help: Show help.\n"; - echo "\t* level: Show the following level (default: 2).\n"; - echo "\t* links: Link the message values (default off).\n"; - echo "\t* wikilang: For the links, what is the content language of the wiki to display the output in (default en).\n"; - echo "\t* whitelist: Make only the following checks (form: code,code).\n"; - echo "\t* blacklist: Don't make the following checks (form: code,code).\n"; - echo "\t* duplicate: Additionally check for messages which are translated the same to English (default off).\n"; - echo "\t* noexif: Don't check for EXIF messages (a bit hard and boring to translate), if you know that they are not translated and want to focus on other problems (default off).\n"; - echo "Check codes (ideally, should be zero; all the checks are executed by default):\n"; - echo "\t* untranslated: Messages which are translatable, but not translated.\n"; - echo "\t* obsolete: Messages which are untranslatable, but translated.\n"; - echo "\t* variables: Messages without variables which should be used.\n"; - echo "\t* empty: Empty messages.\n"; - echo "\t* whitespace: Messages which have trailing whitespace.\n"; - echo "\t* xhtml: Messages which are not well-formed XHTML.\n"; - echo "\t* chars: Messages with hidden characters.\n"; - echo "Display levels (default: 2):\n"; - echo "\t* 0: Skip the checks (useful for checking syntax).\n"; - echo "\t* 1: Show only the stub headers and number of wrong messages, without list of messages.\n"; - echo "\t* 2: Show only the headers and the message keys, without the message values.\n"; - echo "\t* 3: Show both the headers and the complete messages, with both keys and values.\n"; + echo <<