Adding a check for non-XHTML messages (mostly written by Niklas Laxström), and a...
authorRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 17:13:55 +0000 (17:13 +0000)
committerRotem Liss <rotem@users.mediawiki.org>
Sat, 5 Aug 2006 17:13:55 +0000 (17:13 +0000)
maintenance/checkLanguage.php
maintenance/languages.inc

index 7c5a50b..1681ff0 100644 (file)
@@ -70,4 +70,9 @@ $messagesWithWhitespace = $wgLanguages->getMessagesWithWhitespace( $code );
 $messagesWithWhitespaceNumber = count( $messagesWithWhitespace );
 $wgLanguages->outputMessagesList( $messagesWithWhitespace, "\n$messagesWithWhitespaceNumber messages of $localMessagesNumber in $code have a trailing whitespace:", $wgHideMessages );
 
+# Non-XHTML messages
+$nonXHTMLMessages = $wgLanguages->getNonXHTMLMessages( $code );
+$nonXHTMLMessagesNumber = count( $nonXHTMLMessages );
+$wgLanguages->outputMessagesList( $nonXHTMLMessages, "\n$nonXHTMLMessagesNumber messages of $localMessagesNumber in $code are not well-formed XHTML:", $wgHideMessages );
+
 ?>
index f352209..82292ec 100644 (file)
@@ -231,13 +231,39 @@ class languages {
                $messagesWithWhitespace = array();
                foreach ( $this->mMessages[$code] as $key => $value ) {
                        if ( isset( $this->mMessages['en'][$key] ) && $this->mMessages['en'][$key] !== '' &&
-                               $this->mMessages[$code][$key] !== rtrim( $this->mMessages[$code][$key] ) ) {
+                               $value !== rtrim( $value ) ) {
                                $messagesWithWhitespace[$key] = $value;
                        }
                }
                return $messagesWithWhitespace;
        }
 
+       /**
+        * Get the non-XHTML messages.
+        *
+        * @param $code The langauge code.
+        *
+        * @return The non-XHTML messages for this language.
+        */
+       public function getNonXHTMLMessages( $code ) {
+               $this->loadMessages( 'en' );
+               $this->loadMessages( $code );
+               $wrongPhrases = array(
+                       '<hr *\\?>',
+                       '<br *\\?>',
+                       '<hr/>',
+                       '<br/>',
+               );
+               $wrongPhrases = '~(' . implode( '|', $wrongPhrases ) . ')~sDu';
+               $nonXHTMLMessages = array();
+               foreach ( $this->mMessages[$code] as $key => $value ) {
+                       if ( isset( $this->mMessages['en'][$key] ) && preg_match( $wrongPhrases, $value ) ) {
+                               $nonXHTMLMessages[$key] = $value;
+                       }
+               }
+               return $nonXHTMLMessages;
+       }
+
        /**
         * Output a messages list.
         *