Script to check external i18 messages files such as the ones used by extension.
[lhc/web/wiklou.git] / maintenance / language / checkLanguage.inc
1 <?php
2 /**
3 * Check a language.
4 *
5 * @todo Stop with globals.
6 * @param $code The language code.
7 */
8 function checkLanguage( $wgLanguages, $code ) {
9 global $wgGeneralMessages, $wgRequiredMessagesNumber, $wgDisplayLevel, $wgLinks, $wgWikiLanguage, $wgChecks;
10
11 # Get messages
12 $messages = $wgLanguages->getMessages( $code );
13 $messagesNumber = count( $messages['translated'] );
14
15 # Skip the checks if specified
16 if ( $wgDisplayLevel == 0 ) {
17 return;
18 }
19
20 # Untranslated messages
21 if ( in_array( 'untranslated', $wgChecks ) ) {
22 $untranslatedMessages = $wgLanguages->getUntranslatedMessages( $code );
23 $untranslatedMessagesNumber = count( $untranslatedMessages );
24 $wgLanguages->outputMessagesList( $untranslatedMessages, $code, "\n$untranslatedMessagesNumber messages of $wgRequiredMessagesNumber are not translated to $code, but exist in en:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
25 }
26
27 # Duplicate messages
28 if ( in_array( 'duplicate', $wgChecks ) ) {
29 $duplicateMessages = $wgLanguages->getDuplicateMessages( $code );
30 $duplicateMessagesNumber = count( $duplicateMessages );
31 $wgLanguages->outputMessagesList( $duplicateMessages, $code, "\n$duplicateMessagesNumber messages of $messagesNumber are translated the same in en and $code:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
32 }
33
34 # Obsolete messages
35 if ( in_array( 'obsolete', $wgChecks ) ) {
36 $obsoleteMessages = $messages['obsolete'];
37 $obsoleteMessagesNumber = count( $obsoleteMessages );
38 $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 );
39 }
40
41 # Messages without variables
42 if ( in_array( 'variables', $wgChecks ) ) {
43 $messagesWithoutVariables = $wgLanguages->getMessagesWithoutVariables( $code );
44 $messagesWithoutVariablesNumber = count( $messagesWithoutVariables );
45 $wgLanguages->outputMessagesList( $messagesWithoutVariables, $code, "\n$messagesWithoutVariablesNumber messages of $messagesNumber in $code don't use some variables while en uses them:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
46 }
47
48 # Empty messages
49 if ( in_array( 'empty', $wgChecks ) ) {
50 $emptyMessages = $wgLanguages->getEmptyMessages( $code );
51 $emptyMessagesNumber = count( $emptyMessages );
52 $wgLanguages->outputMessagesList( $emptyMessages, $code, "\n$emptyMessagesNumber messages of $messagesNumber in $code are empty or -:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
53 }
54
55 # Messages with whitespace
56 if ( in_array( 'whitespace', $wgChecks ) ) {
57 $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
58 $messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
59 $wgLanguages->outputMessagesList( $messagesWithWhitespace, $code, "\n$messagesWithWhitespaceNumber messages of $messagesNumber in $code have a trailing whitespace:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
60 }
61
62 # Non-XHTML messages
63 if ( in_array( 'xhtml', $wgChecks ) ) {
64 $nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
65 $nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
66 $wgLanguages->outputMessagesList( $nonXHTMLMessages, $code, "\n$nonXHTMLMessagesNumber messages of $messagesNumber in $code are not well-formed XHTML:", $wgDisplayLevel, $wgLinks, $wgWikiLanguage );
67 }
68
69 # Messages with wrong characters
70 if ( in_array( 'chars', $wgChecks ) ) {
71 $messagesWithWrongChars = $wgLanguages->getMessagesWithWrongChars( $code );
72 $messagesWithWrongCharsNumber = count( $messagesWithWrongChars );
73 $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 );
74 }
75 }
76 ?>