MediaWiki REL1_34
checkDupeMessages.php
Go to the documentation of this file.
1<?php
24$optionsWithArgs = [ 'lang', 'clang', 'mode' ];
25require_once __DIR__ . '/../commandLine.inc';
26$messagesDir = __DIR__ . '/../../languages/messages/';
27$runTest = false;
28$run = false;
29$runMode = 'text';
30
31// Check parameters
32if ( isset( $options['lang'] ) && isset( $options['clang'] ) ) {
33 if ( !isset( $options['mode'] ) ) {
34 $runMode = 'text';
35 } else {
36 if ( !strcmp( $options['mode'], 'wiki' ) ) {
37 $runMode = 'wiki';
38 } elseif ( !strcmp( $options['mode'], 'php' ) ) {
39 $runMode = 'php';
40 } elseif ( !strcmp( $options['mode'], 'raw' ) ) {
41 $runMode = 'raw';
42 } else {
43 }
44 }
45 $runTest = true;
46} else {
47 echo <<<TEXT
48Run this script to print out the duplicates against a message array.
49Parameters:
50 * lang: Language code to be checked.
51 * clang: Language code to be compared.
52Options:
53 * mode: Output format, can be either:
54 * text: Text output on the console (default)
55 * wiki: Wiki format, with * at beginning of each line
56 * php: Output text as PHP syntax in an array named \$dupeMessages
57 * raw: Raw output for duplicates
58TEXT;
59}
60
61// Check file exists
62if ( $runTest ) {
63 $langCode = $options['lang'];
64 $langCodeC = $options['clang'];
65 $langCodeF = ucfirst( strtolower( preg_replace( '/-/', '_', $langCode ) ) );
66 $langCodeFC = ucfirst( strtolower( preg_replace( '/-/', '_', $langCodeC ) ) );
67 $messagesFile = $messagesDir . 'Messages' . $langCodeF . '.php';
68 $messagesFileC = $messagesDir . 'Messages' . $langCodeFC . '.php';
69 if ( file_exists( $messagesFile ) && file_exists( $messagesFileC ) ) {
70 $run = true;
71 } else {
72 echo "Messages file(s) could not be found.\nMake sure both files are exists.\n";
73 }
74}
75
76// Run to check the dupes
77if ( $run ) {
78 if ( !strcmp( $runMode, 'wiki' ) ) {
79 $runMode = 'wiki';
80 } elseif ( !strcmp( $runMode, 'raw' ) ) {
81 $runMode = 'raw';
82 }
83 include $messagesFile;
84 $messageExist = isset( $messages );
85 if ( $messageExist ) {
86 $wgMessages[$langCode] = $messages;
87 }
88 include $messagesFileC;
89 $messageCExist = isset( $messages );
90 if ( $messageCExist ) {
91 $wgMessages[$langCodeC] = $messages;
92 }
93 $count = 0;
94
95 if ( ( $messageExist ) && ( $messageCExist ) ) {
96 if ( !strcmp( $runMode, 'php' ) ) {
97 print "<?php\n";
98 print '$dupeMessages = [' . "\n";
99 }
100 foreach ( $wgMessages[$langCodeC] as $key => $value ) {
101 foreach ( $wgMessages[$langCode] as $ckey => $cvalue ) {
102 if ( !strcmp( $key, $ckey ) ) {
103 if ( ( !strcmp( $key, $ckey ) ) && ( !strcmp( $value, $cvalue ) ) ) {
104 if ( !strcmp( $runMode, 'raw' ) ) {
105 print "$key\n";
106 } elseif ( !strcmp( $runMode, 'php' ) ) {
107 print "'$key' => '',\n";
108 } elseif ( !strcmp( $runMode, 'wiki' ) ) {
109 $uKey = ucfirst( $key );
110 print "* MediaWiki:$uKey/$langCode\n";
111 } else {
112 print "* $key\n";
113 }
114 $count++;
115 }
116 }
117 }
118 }
119 if ( !strcmp( $runMode, 'php' ) ) {
120 print "];\n";
121 }
122 if ( !strcmp( $runMode, 'text' ) ) {
123 if ( $count == 1 ) {
124 echo "\nThere are $count duplicated message in $langCode, against to $langCodeC.\n";
125 } else {
126 echo "\nThere are $count duplicated messages in $langCode, against to $langCodeC.\n";
127 }
128 }
129 } else {
130 if ( !$messageExist ) {
131 echo "There are no messages defined in $langCode.\n";
132 }
133 if ( !$messageCExist ) {
134 echo "There are no messages defined in $langCodeC.\n";
135 }
136 }
137}
$optionsWithArgs
Internationalisation code.
Definition Language.php:37
while(( $__line=Maintenance::readconsole()) !==false) print
Definition eval.php:64