From 186eb4ba30360f73b0a9f6c7f0d6867e04528658 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Sat, 2 Feb 2008 20:33:25 +0000 Subject: [PATCH] * (bug 12880) wfLoadExtensionMessages does not use $fallback from MessagesXx.php --- RELEASE-NOTES | 1 + includes/MessageCache.php | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 4be799d2dc..920aa24317 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -353,6 +353,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * Fix for Special:Export so it doesn't ignore the page named '0' * Don't display rollback link if the user doesn't have all required permissions * The comment of a time-limited protection now contains the date in the default format +* (bug 12880) wfLoadExtensionMessages does not use $fallback from MessagesXx.php == Parser changes in 1.12 == diff --git a/includes/MessageCache.php b/includes/MessageCache.php index 2f40897b04..743bd7f18b 100644 --- a/includes/MessageCache.php +++ b/includes/MessageCache.php @@ -637,7 +637,8 @@ class MessageCache { } /** - * Get the extension messages for a specific language + * Get the extension messages for a specific language. Only English, interface + * and content language are guaranteed to be loaded. * * @param string $lang The messages language, English by default */ @@ -692,11 +693,27 @@ class MessageCache { * Load messages from a given file */ function loadMessagesFile( $filename ) { + global $wgLang, $wgContLang; $messages = $magicWords = false; require( $filename ); - if ( $messages !== false ) { - $this->addMessagesByLang( $messages ); + /* + * Load only languages that are usually used, and merge all fallbacks, + * except English. + */ + $langs = array_unique( array( 'en', $wgContLang->getCode(), $wgLang->getCode() ) ); + foreach( $langs as $code ) { + $fbcode = $code; + $mergedMessages = array(); + do { + if ( isset($messages[$fbcode]) ) { + $mergedMessages += $messages[$fbcode]; + } + $fbcode = Language::getFallbackfor( $fbcode ); + } while( $fbcode && $fbcode !== 'en' ); + + if ( !empty($mergedMessages) ) + $this->addMessages( $mergedMessages, $code ); } if ( $magicWords !== false ) { -- 2.20.1