/**
  * Callback for 'message' filter.
  *
  * <code>
  * {{ 'my-message-key'|message }}
  * {{ 'my-message-key'|message( 'foo', 'bar' ) }}
  * {{ 'my-message-key'|message( [ 'foo', 'bar' ] ) }}
  * {{ 'my-message-key'|message( 'foo', 'bar' )|raw }}
  * </code>
  *
  * @param string $key Message key
  * @param string ... Message params
  * @return string Unescaped message content
  * @see I18nContext::message
  */
 public function messageFilterCallback($key)
 {
     $params = func_get_args();
     array_shift($params);
     if (count($params) == 1 && is_array($params[0])) {
         // Unwrap args array
         $params = $params[0];
     }
     $msg = $this->ctx->message($key, $params);
     return $msg->plain();
 }
 /**
  * @dataProvider langFromHeaderTests
  * @covers ::__construct
  * @covers ::getCurrentLanguage
  * @covers ::parseAcceptLanguage
  * @covers ::setCurrentLanguage
  */
 public function testGetLangFromHeader($header, $expect)
 {
     $_SERVER['HTTP_ACCEPT_LANGUAGE'] = $header;
     $fixture = new I18nContext($this->getMockCache(), 'default');
     $this->assertEquals($expect, $fixture->getCurrentLanguage());
     $this->assertEquals($expect, $_SESSION['uselang']);
 }