$sidebarKey = wfMemcKey( 'sidebar', $code );
$parserMemc->delete( $sidebarKey );
+ wfRunHooks( "MessageCacheReplace", array( $title, $text ) );
+
wfProfileOut( __METHOD__ );
}
* functionality), or if it is a true boolean then
* use the wikis content language (also as a
* fallback).
- * @param bool $isFullKey Specifies whether $key is a two part key "lang/msg".
+ * @param bool $isFullKey Specifies whether $key is a two part key "msg/lang".
*/
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
global $wgContLanguageCode, $wgContLang;
# Try the MediaWiki namespace
if( !$this->mDisable && $useDB ) {
$title = $wgContLang->ucfirst( $lckey );
- if(!$isFullKey && ($langcode != $wgContLanguageCode) ) {
+ if(!$isFullKey && ( $langcode != $wgContLanguageCode ) ) {
$title .= '/' . $langcode;
}
$message = $this->getMsgFromNamespace( $title, $langcode );
}
+ if( $message === false )
+ wfRunHooks( 'MessageNotInMwNs', array( &$message, $lckey, $langcode, $isFullKey ) );
# Try the extension array
if ( $message === false && isset( $this->mExtensionMessages[$langcode][$lckey] ) ) {
if( $message === false ) {
return '<' . htmlspecialchars($key) . '>';
}
+
+ # Fix whitespace
+ $message = strtr( $message,
+ array(
+ # Fix for trailing whitespace, removed by textarea
+ ' ' => ' ',
+ # Fix for NBSP, converted to space by firefox
+ ' ' => "\xc2\xa0",
+ ) );
+
return $message;
}
return $message;
}
- function transform( $message, $interface = false ) {
+ function transform( $message, $interface = false, $language = null ) {
// Avoid creating parser if nothing to transfrom
if( strpos( $message, '{{' ) === false ) {
return $message;
if ( $this->mParser ) {
$popts = $this->getParserOptions();
$popts->setInterfaceMessage( $interface );
+ $popts->setTargetLanguage( $language );
$message = $this->mParser->transformMsg( $message, $popts );
}
return $message;
* @param string $lang The messages language, English by default
*/
function addMessage( $key, $value, $lang = 'en' ) {
- $this->mExtensionMessages[$lang][$key] = $value;
+ global $wgContLang;
+ # Normalise title-case input
+ $lckey = str_replace( ' ', '_', $wgContLang->lcfirst( $key ) );
+ $this->mExtensionMessages[$lang][$lckey] = $value;
}
/**
# Some extensions will load their messages when you load their class file
wfLoadAllExtensions();
# Others will respond to this hook
- wfRunHooks( 'LoadAllMessages' );
+ wfRunHooks( 'LoadAllMessages', array( $this ) );
# Some register their messages in $wgExtensionMessagesFiles
foreach ( $wgExtensionMessagesFiles as $name => $file ) {
wfLoadExtensionMessages( $name, $lang );
*/
function loadMessagesFile( $filename, $langcode = false ) {
global $wgLang, $wgContLang;
+ wfProfileIn( __METHOD__ );
$messages = $magicWords = false;
require( $filename );
global $wgContLang;
$wgContLang->addMagicWordsByLang( $magicWords );
}
+ wfProfileOut( __METHOD__ );
}
/**
* @param string $langcode Language code to process.
*/
function processMessagesArray( $messages, $langcode ) {
+ wfProfileIn( __METHOD__ );
$fallbackCode = $langcode;
$mergedMessages = array();
do {
if ( !empty($mergedMessages) )
$this->addMessages( $mergedMessages, $langcode );
+ wfProfileOut( __METHOD__ );
}
public function figureMessage( $key ) {