summaryrefslogtreecommitdiff
path: root/maintenance/language/checkDupeMessages.php
blob: 81eafccf8b4e1d5f202717ac8d83d23873b7cadd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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";
	}	
}