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