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

Revision: 69054
Author:   nikerabbit
Date:     2010-07-05 12:51:20 +0000 (Mon, 05 Jul 2010)

Log Message:
-----------
Made a syntax checker for Shapado

Modified Paths:
--------------
    trunk/extensions/Translate/groups/Shapado/Shapado.yml

Added Paths:
-----------
    trunk/extensions/Translate/groups/Shapado/Checker.php

Added: trunk/extensions/Translate/groups/Shapado/Checker.php
===================================================================
--- trunk/extensions/Translate/groups/Shapado/Checker.php                       
        (rev 0)
+++ trunk/extensions/Translate/groups/Shapado/Checker.php       2010-07-05 
12:51:20 UTC (rev 69054)
@@ -0,0 +1,51 @@
+<?php
+ /**
+ * @file
+ * @copyright Copyright © 2009-2010, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+class ShapadoMessageChecker extends MessageChecker {
+
+       /**
+        * Checks for missing and unknown variables in translations.
+        *
+        * @param $messages Iterable list of TMessages.
+        * @param $code Language code of the translations.
+        * @param $warnings Array where warnings are appended to.
+        */
+       protected function ShapadoVariablesCheck( $messages, $code, &$warnings 
) {
+               foreach ( $messages as $message ) {
+                       $key = $message->key();
+                       $definition = $message->definition();
+                       $translation = $message->translation();
+
+                       $varPattern = '%{[a-zA-Z_]+}';
+                       preg_match_all( "/$varPattern/U", $definition, $defVars 
);
+                       preg_match_all( "/$varPattern/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( 'variable', $subcheck, $key, 
$code ),
+                                       'translate-checks-parameters',
+                                       array( 'PARAMS', $params ),
+                                       array( 'COUNT', count( $params ) ),
+                               );
+                       }
+
+                       # Check for unknown variables in the translation
+                       $subcheck = 'unknown';
+                       $params = self::compareArrays( $transVars[0], 
$defVars[0] );
+                       if ( count( $params ) ) {
+                               $warnings[$key][] = array(
+                                       array( 'variable', $subcheck, $key, 
$code ),
+                                       'translate-checks-parameters-unknown',
+                                       array( 'PARAMS', $params ),
+                                       array( 'COUNT', count( $params ) ),
+                               );
+                       }
+               }
+       }
+}
\ No newline at end of file


Property changes on: trunk/extensions/Translate/groups/Shapado/Checker.php
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/extensions/Translate/groups/Shapado/Shapado.yml
===================================================================
--- trunk/extensions/Translate/groups/Shapado/Shapado.yml       2010-07-05 
12:49:36 UTC (rev 69053)
+++ trunk/extensions/Translate/groups/Shapado/Shapado.yml       2010-07-05 
12:51:20 UTC (rev 69054)
@@ -22,6 +22,14 @@
     patterns:
       - "*"
 
+  CHECKER:
+    class: ShapadoMessageChecker
+    checks:
+      - ShapadoVariablesCheck
+
+  AUTOLOAD:
+    ShapadoMessageChecker: Checker.php
+
 ---
 BASIC:
   id: out-shapado-0-all



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

Reply via email to