* 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 ) {
* @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;
}
* 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 ) {
*
* @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