3 * Print out duplicates in message array
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * http://www.gnu.org/copyleft/gpl.html
21 * @ingroup MaintenanceLanguage
24 $optionsWithArgs = [ 'lang', 'clang', 'mode' ];
25 require_once __DIR__
. '/../commandLine.inc';
26 $messagesDir = __DIR__
. '/../../languages/messages/';
32 if ( isset( $options['lang'] ) && isset( $options['clang'] ) ) {
33 if ( !isset( $options['mode'] ) ) {
36 if ( !strcmp( $options['mode'], 'wiki' ) ) {
38 } elseif ( !strcmp( $options['mode'], 'php' ) ) {
40 } elseif ( !strcmp( $options['mode'], 'raw' ) ) {
48 Run this script to print out the duplicates against a message array.
50 * lang: Language code to be checked.
51 * clang: Language code to be compared.
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
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 ) ) {
72 echo "Messages file(s) could not be found.\nMake sure both files are exists.\n";
76 // Run to check the dupes
78 if ( !strcmp( $runMode, 'wiki' ) ) {
80 } elseif ( !strcmp( $runMode, 'raw' ) ) {
83 include $messagesFile;
84 $messageExist = isset( $messages );
85 if ( $messageExist ) {
86 $wgMessages[$langCode] = $messages;
88 include $messagesFileC;
89 $messageCExist = isset( $messages );
90 if ( $messageCExist ) {
91 $wgMessages[$langCodeC] = $messages;
95 if ( ( $messageExist ) && ( $messageCExist ) ) {
97 if ( !strcmp( $runMode, 'php' ) ) {
99 print '$dupeMessages = array(' . "\n";
101 foreach ( $wgMessages[$langCodeC] as $key => $value ) {
102 foreach ( $wgMessages[$langCode] as $ckey => $cvalue ) {
103 if ( !strcmp( $key, $ckey ) ) {
104 if ( ( !strcmp( $key, $ckey ) ) && ( !strcmp( $value, $cvalue ) ) ) {
105 if ( !strcmp( $runMode, 'raw' ) ) {
107 } elseif ( !strcmp( $runMode, 'php' ) ) {
108 print "'$key' => '',\n";
109 } elseif ( !strcmp( $runMode, 'wiki' ) ) {
110 $uKey = ucfirst( $key );
111 print "* MediaWiki:$uKey/$langCode\n";
120 if ( !strcmp( $runMode, 'php' ) ) {
123 if ( !strcmp( $runMode, 'text' ) ) {
125 echo "\nThere are $count duplicated message in $langCode, against to $langCodeC.\n";
127 echo "\nThere are $count duplicated messages in $langCode, against to $langCodeC.\n";
131 if ( !$messageExist ) {
132 echo "There are no messages defined in $langCode.\n";
134 if ( !$messageCExist ) {
135 echo "There are no messages defined in $langCodeC.\n";