diff options
Diffstat (limited to 'www/wiki/maintenance/language/checkDupeMessages.php')
-rw-r--r-- | www/wiki/maintenance/language/checkDupeMessages.php | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/www/wiki/maintenance/language/checkDupeMessages.php b/www/wiki/maintenance/language/checkDupeMessages.php new file mode 100644 index 00000000..92ddc449 --- /dev/null +++ b/www/wiki/maintenance/language/checkDupeMessages.php @@ -0,0 +1,137 @@ +<?php +/** + * Print out duplicates in message array + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup MaintenanceLanguage + */ + +$optionsWithArgs = [ 'lang', 'clang', 'mode' ]; +require_once __DIR__ . '/../commandLine.inc'; +$messagesDir = __DIR__ . '/../../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'; + } elseif ( !strcmp( $options['mode'], 'php' ) ) { + $runMode = 'php'; + } elseif ( !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 an array named \$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'; + } elseif ( !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 = [' . "\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"; + } elseif ( !strcmp( $runMode, 'php' ) ) { + print "'$key' => '',\n"; + } elseif ( !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"; + } + } +} |