summaryrefslogtreecommitdiff
path: root/maintenance/language/checkDupeMessages.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/language/checkDupeMessages.php')
-rw-r--r--maintenance/language/checkDupeMessages.php118
1 files changed, 118 insertions, 0 deletions
diff --git a/maintenance/language/checkDupeMessages.php b/maintenance/language/checkDupeMessages.php
new file mode 100644
index 00000000..81eafccf
--- /dev/null
+++ b/maintenance/language/checkDupeMessages.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * @todo document
+ * @file
+ * @ingroup MaintenanceLanguage
+ */
+
+require_once( dirname(__FILE__).'/../commandLine.inc' );
+$messagesDir = dirname(__FILE__).'/../../languages/messages/';
+$runTest = false;
+$run = false;
+$runMode = 'text';
+
+// Check parameters
+if ( isset( $options['lang'] ) && isset( $options['clang'] )) {
+ if (!isset( $options['mode'] )) {
+ $runMode = 'text';
+ } else {
+ if (!strcmp($options['mode'],'wiki')) {
+ $runMode = 'wiki';
+ } else if (!strcmp($options['mode'],'php')) {
+ $runMode = 'php';
+ } else if (!strcmp($options['mode'],'raw')) {
+ $runMode = 'raw';
+ } else {
+ }
+ }
+ $runTest = true;
+} else {
+ echo <<<TEXT
+Run this script to print out the duplicates against a message array.
+Parameters:
+ * lang: Language code to be checked.
+ * clang: Language code to be compared.
+Options:
+ * mode: Output format, can be either:
+ * text: Text output on the console (default)
+ * wiki: Wiki format, with * at beginning of each line
+ * php: Output text as PHP syntax in a array $dupeMessages
+ * raw: Raw output for duplicates
+TEXT;
+}
+
+// Check file exists
+if ( $runTest ) {
+ $langCode = $options['lang'];
+ $langCodeC = $options['clang'];
+ $langCodeF = ucfirst(strtolower(preg_replace('/-/','_',$langCode)));
+ $langCodeFC = ucfirst(strtolower(preg_replace('/-/','_',$langCodeC)));
+ $messagesFile = $messagesDir.'Messages'.$langCodeF.'.php';
+ $messagesFileC = $messagesDir.'Messages'.$langCodeFC.'.php';
+ if (file_exists($messagesFile) && file_exists($messagesFileC)) {
+ $run = true;
+ }
+ else {
+ echo "Messages file(s) could not be found.\nMake sure both files are exists.\n";
+ }
+}
+
+// Run to check the dupes
+if ( $run ) {
+ if (!strcmp($runMode,'wiki')) {
+ $runMode = 'wiki';
+ } else if (!strcmp($runMode,'raw')) {
+ $runMode = 'raw';
+ }
+ include( $messagesFile );
+ $messageExist = isset($messages);
+ if ($messageExist)
+ $wgMessages[$langCode] = $messages;
+ include( $messagesFileC );
+ $messageCExist = isset($messages);
+ if ($messageCExist)
+ $wgMessages[$langCodeC] = $messages;
+ $count = 0;
+
+ if (($messageExist) && ($messageCExist)) {
+
+ if (!strcmp($runMode,'php')) {
+ print("<?php\n");
+ print('$dupeMessages = array('."\n");
+ }
+ foreach ($wgMessages[$langCodeC] as $key => $value) {
+ foreach ($wgMessages[$langCode] as $ckey => $cvalue) {
+ if (!strcmp($key,$ckey)) {
+ if ((!strcmp($key,$ckey)) && (!strcmp($value,$cvalue))) {
+ if (!strcmp($runMode,'raw')) {
+ print("$key\n");
+ } else if (!strcmp($runMode,'php')) {
+ print("'$key' => '',\n");
+ } else if (!strcmp($runMode,'wiki')) {
+ $uKey = ucfirst($key);
+ print("* MediaWiki:$uKey/$langCode\n");
+ } else {
+ print("* $key\n");
+ }
+ $count++;
+ }
+ }
+ }
+ }
+ if (!strcmp($runMode,'php')) {
+ print(");\n");
+ }
+ if (!strcmp($runMode,'text')) {
+ if ($count == 1) {
+ echo "\nThere are $count duplicated message in $langCode, against to $langCodeC.\n";
+ } else {
+ echo "\nThere are $count duplicated messages in $langCode, against to $langCodeC.\n";
+ }
+ }
+ } else {
+ if (!$messageExist)
+ echo "There are no messages defined in $langCode.\n";
+ if (!$messageCExist)
+ echo "There are no messages defined in $langCodeC.\n";
+ }
+}