/**
     * Tests MessageBundleParser->parse() on error xml string.
     */
    public function testParseOnError()
    {
        $xml = '<?xml version="1.0" encoding="UTF-8" ?>
<doc>
  <msg name="name1">Message 1</msg>
  <msg name="name2">Message 2</msg>
  <msg name="name3">Message 3</msg>
  <msg name="name4">Message 4</msg>';
        $this->setExpectedException('Exception');
        $this->MessageBundle = $this->MessageBundleParser->parse($xml);
    }
    /**
     * Tests MessageBundleParser->parse()
     */
    public function testParse()
    {
        $xml = '<?xml version="1.0" encoding="UTF-8" ?>
<doc>
	<msg name="name1">Message 1</msg>
	<msg name="name2">Message 2</msg>
	<msg name="name3">Message 3</msg>
	<msg name="name4">Message 4</msg>
</doc>';
        $this->MessageBundle = $this->MessageBundleParser->parse($xml);
        $this->assertTrue($this->MessageBundle instanceof MessageBundle);
    }
示例#3
0
 private function getBundle($localeSpec, $context)
 {
     if ($localeSpec != null) {
         $uri = $localeSpec->getURI();
         if ($uri != null) {
             $fetcher = $context->getHttpFetcher();
             $response = $fetcher->fetch(new RemoteContentRequest($uri), $context);
             $parser = new MessageBundleParser();
             $bundle = $parser->parse($response->getResponseContent());
             return $bundle;
         }
     }
     return null;
 }
    /**
     * Tests MessageBundleParser->parse()
     */
    public function testParse()
    {
        $xml = '<?xml version="1.0" encoding="UTF-8" ?>
<doc>
	<msg name="name1">Message 1</msg>
	<msg name="name2">Message 2</msg>
	<msg name="name3">Message 3</msg>
	<msg name="name4">Message 4</msg>
</doc>';
        $this->MessageBundle = $this->MessageBundleParser->parse($xml);
        $this->assertEquals('Message 1', $this->MessageBundle['name1']);
        $this->assertEquals('Message 2', $this->MessageBundle['name2']);
        $this->assertEquals('Message 3', $this->MessageBundle['name3']);
        $this->assertEquals('Message 4', $this->MessageBundle['name4']);
    }
 private function getBundle(LocaleSpec $localeSpec = null, $context)
 {
     if ($localeSpec != null) {
         $uri = $localeSpec->getURI();
         if ($uri != null) {
             $fetcher = $context->getHttpFetcher();
             $response = $fetcher->fetch(new RemoteContentRequest($uri), $context);
             $parser = new MessageBundleParser();
             $bundle = $parser->parse($response->getResponseContent());
             return $bundle;
         } else {
             $messages = array();
             foreach ($localeSpec->getLocaleMessageBundles() as $messageBundle) {
                 $messages[$messageBundle->getName()] = $messageBundle->getDesc();
             }
             return new MessageBundle($messages);
         }
     }
     return null;
 }
示例#6
0
 private function processLocale($locale)
 {
     $attributes = $locale->attributes();
     $messageAttr = isset($attributes['messages']) ? trim($attributes['messages']) : '';
     $languageAttr = isset($attributes['lang']) ? trim($attributes['lang']) : 'all';
     $countryAttr = isset($attributes['country']) ? trim($attributes['country']) : 'all';
     $rtlAttr = isset($attributes['language_direction']) ? trim($attributes['language_direction']) : '';
     $rightToLeft = $rtlAttr == 'rtl';
     $localeMessageBundles = array();
     if ($messageAttr == '') {
         $parser = new MessageBundleParser();
         $localeMessageBundles = $parser->getMessages($locale);
     }
     $locale = new LocaleSpec();
     $locale->rightToLeft = $rightToLeft;
     $locale->url = $messageAttr;
     $locale->localeMessageBundles = $localeMessageBundles;
     $locale->locale = new Locale($languageAttr, $countryAttr);
     return $locale;
 }
示例#7
0
 private function getMessagesArrayForSpecs($context, array $specs)
 {
     $requestArray = array();
     $contextArray = array();
     $messagesArray = array();
     foreach ($specs as $spec) {
         if ($spec == null) {
             continue;
         }
         $uri = $spec->getURI();
         if ($uri == null) {
             if ($spec->getLocaleMessageBundles() != null) {
                 $messagesArray[] = $spec->getLocaleMessageBundles();
             } else {
                 $messagesArray[] = array();
             }
             continue;
         }
         $parsedUri = parse_url($uri);
         if (empty($parsedUri['host'])) {
             // relative path's in the locale spec uri
             $gadgetUrl = $context->getUrl();
             $gadgetUrl = substr($gadgetUrl, 0, strrpos($gadgetUrl, '/') + 1);
             $uri = $gadgetUrl . $uri;
         }
         $requestArray[] = new RemoteContentRequest($uri);
         $contextArray[] = $context;
         $messagesArray[] = null;
     }
     if (count($messagesArray) == 0) {
         return array();
     }
     $fetcher = $context->getHttpFetcher();
     $responseArray = $fetcher->multiFetch($requestArray, $contextArray);
     $parser = new MessageBundleParser();
     for ($i = 0, $j = 0; $i < count($messagesArray); ++$i) {
         if ($messagesArray[$i] == null) {
             $messagesArray[$i] = $parser->parse($responseArray[$j]->getResponseContent());
             ++$j;
         }
     }
     return $messagesArray;
 }