X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Flanguage%2FrebuildLanguage.php;h=e9fc0d44909b7f0476b4000dc2488fe1d3b84093;hb=6ee7efcea4eec1ea2338283606633d138ec1dc8c;hp=6775f6d31fb9042f43cba4affc7ed4b657e91fb1;hpb=f743c00247a80ca8669696e4a506b469e407cf5e;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/language/rebuildLanguage.php b/maintenance/language/rebuildLanguage.php index 6775f6d31f..e9fc0d4490 100644 --- a/maintenance/language/rebuildLanguage.php +++ b/maintenance/language/rebuildLanguage.php @@ -1,11 +1,28 @@ getMessages( $code ); +function rebuildLanguage( $languages, $code, $write, $listUnknown, $removeUnknown, $removeDupes, $dupeMsgSource ) { + $messages = $languages->getMessages( $code ); $messages = $messages['all']; + if ( $removeDupes ) { + $messages = removeDupes( $messages, $dupeMsgSource ); + } + MessageWriter::writeMessagesToFile( $messages, $code, $write, $listUnknown, $removeUnknown ); +} - # Rewrite messages array - $messagesText = writeMessagesArray( $messages, $code == 'en' ); - - # Write to the file - if ( $write ) { - $filename = Language::getMessagesFileName( $code ); - $contents = file_get_contents( $filename ); - if ( strpos( $contents, '$messages' ) !== false ) { - $contents = explode( '$messages', $contents ); - if ( $messagesText == '$messages' . $contents[1] ) { - echo "Generated messages in language $code. Same to the current file.\n"; - } else { - $new = $contents[0]; - $new .= $messagesText; - $new .= "\n?>\n"; - file_put_contents( $filename, $new ); - echo "Generated and wrote messages in language $code.\n"; - } +/** + * Remove duplicates from a message array. + * + * @param $oldMsgArray The input message array. + * @param $dupeMsgSource The source file path for duplicates. + * @return $newMsgArray The output message array, with duplicates removed. + */ +function removeDupes( $oldMsgArray, $dupeMsgSource ) { + if ( file_exists( $dupeMsgSource ) ) { + include( $dupeMsgSource ); + if ( !isset( $dupeMessages ) ) { + echo( "There are no duplicated messages in the source file provided." ); + exit( 1 ); } } else { - echo "Generated messages in language $code.\n"; + echo ( "The specified file $dupeMsgSource cannot be found." ); + exit( 1 ); + } + $newMsgArray = $oldMsgArray; + foreach ( $oldMsgArray as $key => $value ) { + if ( array_key_exists( $key, $dupeMessages ) ) { + unset( $newMsgArray[$key] ); + } } + return $newMsgArray; } # Show help if ( isset( $options['help'] ) ) { - echo <<getCode(); } -# Get the write options +# Get the duplicate message source +if ( isset( $options['remove-duplicates'] ) && ( strcmp( $options['remove-duplicates'], '' ) ) ) { + $wgDupeMessageSource = $options['remove-duplicates']; +} else { + $wgDupeMessageSource = ''; +} + +# Get the options $wgWriteToFile = !isset( $options['dry-run'] ); +$wgListUnknownMessages = !isset( $options['no-unknown'] ); +$wgRemoveUnknownMessages = isset( $options['remove-unknown'] ); +$wgRemoveDuplicateMessages = isset( $options['remove-duplicates'] ); # Get language objects -$wgLanguages = new languages(); +$languages = new languages(); # Write all the language if ( $wgCode == 'all' ) { - foreach ( $wgLanguages->getLanguages() as $language ) { - rebuildLanguage( $language, $wgWriteToFile ); + foreach ( $languages->getLanguages() as $languageCode ) { + rebuildLanguage( $languages, $languageCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource ); } } else { - rebuildLanguage( $wgCode, $wgWriteToFile ); + rebuildLanguage( $languages, $wgCode, $wgWriteToFile, $wgListUnknownMessages, $wgRemoveUnknownMessages, $wgRemoveDuplicateMessages, $wgDupeMessageSource ); } - -?>