* @file
* @author Niklas Laxström
*/
+use MediaWiki\MediaWikiServices;
/**
* The Message class provides methods which fulfil two basic services:
* message keys to try and use the first non-empty message for, or a
* MessageSpecifier to copy from.
* @param array $params Message parameters.
- * @param Language $language [optional] Language to use (defaults to current user language).
+ * @param Language|null $language [optional] Language to use (defaults to current user language).
* @throws InvalidArgumentException
*/
public function __construct( $key, $params = [], Language $language = null ) {
* @since 1.26
*/
public function getTitle() {
- global $wgContLang, $wgForceUIMsgAsContentMsg;
+ global $wgForceUIMsgAsContentMsg;
+ $contLang = MediaWikiServices::getInstance()->getContentLanguage();
$title = $this->key;
if (
- !$this->language->equals( $wgContLang )
+ !$this->language->equals( $contLang )
&& in_array( $this->key, (array)$wgForceUIMsgAsContentMsg )
) {
$code = $this->language->getCode();
$title .= '/' . $code;
}
- return Title::makeTitle( NS_MEDIAWIKI, $wgContLang->ucfirst( strtr( $title, ' ', '_' ) ) );
+ return Title::makeTitle(
+ NS_MEDIAWIKI, $contLang->ucfirst( strtr( $title, ' ', '_' ) ) );
}
/**
* @throws MWException
*/
public function inLanguage( $lang ) {
+ $previousLanguage = $this->language;
+
if ( $lang instanceof Language ) {
$this->language = $lang;
} elseif ( is_string( $lang ) ) {
. "passed a String or Language object; $type given"
);
}
- $this->message = null;
+
+ if ( $this->language !== $previousLanguage ) {
+ // The language has changed. Clear the message cache.
+ $this->message = null;
+ }
$this->interface = false;
return $this;
}
return $this;
}
- global $wgContLang;
- $this->inLanguage( $wgContLang );
+ $this->inLanguage( MediaWikiServices::getInstance()->getContentLanguage() );
return $this;
}
* the last time (this is for B/C and should be avoided).
*
* @return string HTML
+ * @suppress SecurityCheck-DoubleEscaped phan false positive
*/
public function toString( $format = null ) {
if ( $format === null ) {
public static function listParam( array $list, $type = 'text' ) {
if ( !isset( self::$listTypeMap[$type] ) ) {
throw new InvalidArgumentException(
- "Invalid type '$type'. Known types are: " . join( ', ', array_keys( self::$listTypeMap ) )
+ "Invalid type '$type'. Known types are: " . implode( ', ', array_keys( self::$listTypeMap ) )
);
}
return [ 'list' => $list, 'type' => $type ];
*
* @return string
*/
- protected function replaceParameters( $message, $type = 'before', $format ) {
+ protected function replaceParameters( $message, $type, $format ) {
// A temporary marker for $1 parameters that is only valid
// in non-attribute contexts. However if the entire message is escaped
// then we don't want to use it because it will be mangled in all contexts