http://www.mediawiki.org/wiki/Special:Code/MediaWiki/72989

Revision: 72989
Author:   nikerabbit
Date:     2010-09-14 16:32:44 +0000 (Tue, 14 Sep 2010)

Log Message:
-----------
Refactor to reduce code duplication (not yet in this commit) and fix printf 
check pattern

Modified Paths:
--------------
    trunk/extensions/Translate/MessageChecks.php

Modified: trunk/extensions/Translate/MessageChecks.php
===================================================================
--- trunk/extensions/Translate/MessageChecks.php        2010-09-14 16:17:54 UTC 
(rev 72988)
+++ trunk/extensions/Translate/MessageChecks.php        2010-09-14 16:32:44 UTC 
(rev 72989)
@@ -260,40 +260,7 @@
         * @param $warnings \array Array where warnings are appended to.
         */
        protected function printfCheck( $messages, $code, &$warnings ) {
-               foreach ( $messages as $message ) {
-                       $key = $message->key();
-                       $definition = $message->definition();
-                       $translation = $message->translation();
-
-                       preg_match_all( '/%(\d+\$)[sduf]/U', $definition, 
$defVars );
-                       preg_match_all( '/%(\d+\$)[sduf]/U', $translation, 
$transVars );
-
-                       // Check for missing variables in the translation
-                       $subcheck = 'missing';
-                       $params = self::compareArrays( $defVars[0], 
$transVars[0] );
-
-                       if ( count( $params ) ) {
-                               $warnings[$key][] = array(
-                                       array( 'printf', $subcheck, $key, $code 
),
-                                       'translate-checks-parameters',
-                                       array( 'PARAMS', $params ),
-                                       array( 'COUNT', count( $params ) ),
-                               );
-                       }
-
-                       // Check for unknown variables in the translatio
-                       $subcheck = 'unknown';
-                       $params = self::compareArrays( $transVars[0], 
$defVars[0] );
-
-                       if ( count( $params ) ) {
-                               $warnings[$key][] = array(
-                                       array( 'printf', $subcheck, $key, $code 
),
-                                       'translate-checks-parameters-unknown',
-                                       array( 'PARAMS', $params ),
-                                       array( 'COUNT', count( $params ) ),
-                               );
-                       }
-               }
+               return $this->parameterCheck( $messages, $code, &$warnings, 
'/%(\d+\$)?[sduf]/U' );
        }
 
        /**
@@ -345,4 +312,50 @@
                        }
                }
        }
+
+       /**
+        * Checks for missing and unknown printf formatting characters in
+        * translations.
+        * @param $messages \mixed Iterable list of TMessage objects.
+        * @param $code \string Language code
+        * @param $warnings \array Array where warnings are appended to.
+        * @param $pattern \string Regular expression for matching variables.
+        */
+       protected function parameterCheck( $messages, $code, &$warnings, 
$pattern ) {
+               foreach ( $messages as $message ) {
+                       $key = $message->key();
+                       $definition = $message->definition();
+                       $translation = $message->translation();
+
+                       preg_match_all( $pattern, $definition, $defVars );
+                       preg_match_all( $pattern, $translation, $transVars );
+
+                       // Check for missing variables in the translation
+                       $subcheck = 'missing';
+                       $params = self::compareArrays( $defVars[0], 
$transVars[0] );
+
+                       if ( count( $params ) ) {
+                               $warnings[$key][] = array(
+                                       array( 'printf', $subcheck, $key, $code 
),
+                                       'translate-checks-parameters',
+                                       array( 'PARAMS', $params ),
+                                       array( 'COUNT', count( $params ) ),
+                               );
+                       }
+
+                       // Check for unknown variables in the translatio
+                       $subcheck = 'unknown';
+                       $params = self::compareArrays( $transVars[0], 
$defVars[0] );
+
+                       if ( count( $params ) ) {
+                               $warnings[$key][] = array(
+                                       array( 'printf', $subcheck, $key, $code 
),
+                                       'translate-checks-parameters-unknown',
+                                       array( 'PARAMS', $params ),
+                                       array( 'COUNT', count( $params ) ),
+                               );
+                       }
+               }
+       }
+
 }



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to