MediaWiki  1.34.0
checkDupeMessages.php
Go to the documentation of this file.
1 <?php
24 $optionsWithArgs = [ 'lang', 'clang', 'mode' ];
25 require_once __DIR__ . '/../commandLine.inc';
26 $messagesDir = __DIR__ . '/../../languages/messages/';
27 $runTest = false;
28 $run = false;
29 $runMode = 'text';
30 
31 // Check parameters
32 if ( 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
48 Run this script to print out the duplicates against a message array.
49 Parameters:
50  * lang: Language code to be checked.
51  * clang: Language code to be compared.
52 Options:
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
58 TEXT;
59 }
60 
61 // Check file exists
62 if ( $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
77 if ( $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
$optionsWithArgs
Definition: checkDupeMessages.php:24
$messagesDir
$messagesDir
Definition: checkDupeMessages.php:26
$runMode
$runMode
Definition: checkDupeMessages.php:29
$run
$run
Definition: checkDupeMessages.php:28
$runTest
$runTest
Definition: checkDupeMessages.php:27
Language
Internationalisation code.
Definition: Language.php:37