* Using the appropriate prefix for parameter (wg means global).
[lhc/web/wiklou.git] / maintenance / language / checkLanguage.inc
1 <?php
2 /**
3 * Check a language.
4 *
5 * @todo Stop with globals.
6 * @param $languages The languages object.
7 * @param $code The language code.
8 * @return Number of errors found.
9 */
10 function checkLanguage( $languages, $code ) {
11 global $wgRequiredMessagesNumber, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks;
12
13 # Get messages
14 $messages = $languages->getMessages( $code );
15 $messagesNumber = count( $messages['translated'] );
16
17 # Skip the checks if specified
18 if ( $wgDisplayLevel == 0 ) {
19 return;
20 }
21
22 // Initialize counts
23 $untranslatedMessagesNumber = $duplicateMessagesNumber = $obsoleteMessagesNumber
24 = $messagesWithoutVariablesNumber = $messagesWithoutPluralNumber = $emptyMessagesNumber
25 = $messagesWithWhitespaceNumber = $nonXHTMLMessagesNumber = $messagesWithWrongCharsNumber
26 = 0;
27
28 # Untranslated messages
29 if ( in_array( 'untranslated', $wgChecks ) ) {
30 $untranslatedMessages = $languages->getUntranslatedMessages( $code );
31 $untranslatedMessagesNumber = count( $untranslatedMessages );
32 $languages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $wgRequiredMessagesNumber are not translated to $code, but exist in en:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
33 }
34
35 # Duplicate messages
36 if ( in_array( 'duplicate', $wgChecks ) ) {
37 $duplicateMessages = $languages->getDuplicateMessages( $code );
38 $duplicateMessagesNumber = count( $duplicateMessages );
39 $languages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $messagesNumber are translated the same in en and $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
40 }
41
42 # Obsolete messages
43 if ( in_array( 'obsolete', $wgChecks ) ) {
44 $obsoleteMessages = $messages['obsolete'];
45 $obsoleteMessagesNumber = count( $obsoleteMessages );
46 $languages->outputMessagesList( $obsoleteMessages, $code, "\n$obsoleteMessagesNumber messages of $messagesNumber do not exist in en (or are in the ignored list), but still exist in $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
47 }
48
49 # Messages without variables
50 if ( in_array( 'variables', $wgChecks ) ) {
51 $messagesWithoutVariables = $languages->getMessagesWithoutVariables( $code );
52 $messagesWithoutVariablesNumber = count( $messagesWithoutVariables );
53 $languages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
54 }
55
56 # Messages without plural
57 if ( in_array( 'plural', $wgChecks ) ) {
58 $messagesWithoutPlural = $languages->getMessagesWithoutPlural( $code );
59 $messagesWithoutPluralNumber = count( $messagesWithoutPlural );
60 $languages->outputMessagesList( $messagesWithoutPlural, $code, "\n$messagesWithoutPluralNumber messages of $messagesNumber in $code don't use {{plural}} while en uses it:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
61 }
62
63 # Empty messages
64 if ( in_array( 'empty', $wgChecks ) ) {
65 $emptyMessages = $languages->getEmptyMessages( $code );
66 $emptyMessagesNumber = count( $emptyMessages );
67 $languages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $messagesNumber in $code are empty or -:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
68 }
69
70 # Messages with whitespace
71 if ( in_array( 'whitespace', $wgChecks ) ) {
72 $messagesWithWhitespace = $languages->getMessagesWithWhitespace( $code );
73 $messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
74 $languages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $messagesNumber in $code have a trailing whitespace:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
75 }
76
77 # Non-XHTML messages
78 if ( in_array( 'xhtml', $wgChecks ) ) {
79 $nonXHTMLMessages = $languages->getNonXHTMLMessages( $code );
80 $nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
81 $languages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $messagesNumber in $code are not well-formed XHTML:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
82 }
83
84 # Messages with wrong characters
85 if ( in_array( 'chars', $wgChecks ) ) {
86 $messagesWithWrongChars = $languages->getMessagesWithWrongChars( $code );
87 $messagesWithWrongCharsNumber = count( $messagesWithWrongChars );
88 $languages->outputMessagesList( $messagesWithWrongChars, $code, "\n$messagesWithWrongCharsNumber messages of $messagesNumber in $code include hidden chars which should not be used in the messages:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
89 }
90
91 return ($untranslatedMessagesNumber + $duplicateMessagesNumber + $obsoleteMessagesNumber + $messagesWithoutVariablesNumber + $messagesWithoutPluralNumber + $emptyMessagesNumber + $messagesWithWhitespaceNumber + $nonXHTMLMessagesNumber + $messagesWithWrongCharsNumber);
92 }
93 ?>