Make msg method of DerivativeContext work properly.
authorBrian Wolff <bawolff+wn@gmail.com>
Mon, 12 Aug 2013 18:29:29 +0000 (15:29 -0300)
committerIAlex <codereview@emsenhuber.ch>
Sun, 18 Aug 2013 09:20:38 +0000 (09:20 +0000)
Previously, the msg method was not taking into account any
changes to the context, and was just using the original context.

For example, if you had a DerivativeContext object, where the
original context had a language of en, and then you did
$derivContext->setLanguage( 'fr' );, $derivContext->msg( 'foo' )
was still outputting stuff in english instead of french.

Change-Id: I4a87e0e2664e77bf79a80c873db384e0c3f607e7

includes/context/DerivativeContext.php

index eda56a7..d4caf05 100644 (file)
@@ -281,4 +281,20 @@ class DerivativeContext extends ContextSource {
                        return $this->getContext()->getSkin();
                }
        }
+
+       /**
+        * Get a message using the current context.
+        *
+        * This can't just inherit from ContextSource, since then
+        * it would set only the original context, and not take
+        * into account any changes.
+        *
+        * @param String Message name
+        * @param Variable number of message arguments
+        * @return Message
+        */
+       public function msg() {
+               $args = func_get_args();
+               return call_user_func_array( 'wfMessage', $args )->setContext( $this );
+       }
 }