Beispiel #1
0
 /**
  * Test parsing a file with message context on some msgid values.
  *
  * This behavior is not ideal, but more thorough solutions
  * would break compatibility. Perhaps this is something we can
  * reconsider in 4.x
  *
  * @return void
  */
 public function testParseContextOnSomeMessages()
 {
     $parser = new PoFileParser();
     $file = APP . 'Locale' . DS . 'en' . DS . 'context.po';
     $messages = $parser->parse($file);
     I18n::translator('default', 'en_US', function () use($messages) {
         $package = new Package('default');
         $package->setMessages($messages);
         return $package;
     });
     $this->assertTextEquals('En cours', $messages['Pending']);
     $this->assertTextEquals('En resolved', $messages['Resolved']);
 }
Beispiel #2
0
 /**
  * Tests that it is possible to register a generic translators factory for a domain
  * instead of having to create them manually
  *
  * @return void
  */
 public function testFallbackTranslatorWithFactory()
 {
     I18n::translator('default', 'fr_FR', function () {
         $package = new Package('default');
         $package->setMessages(['Dog' => 'Le bark']);
         return $package;
     });
     I18n::config('custom', function ($name, $locale) {
         $this->assertEquals('custom', $name);
         $package = new Package('default');
         $package->setMessages(['Cow' => 'Le moo']);
         return $package;
     });
     $translator = I18n::translator('custom', 'fr_FR');
     $this->assertEquals('Le moo', $translator->translate('Cow'));
     $this->assertEquals('Le bark', $translator->translate('Dog'));
 }
Beispiel #3
0
 /**
  * Loads the translation file and parses it. Returns an instance of a translations
  * package containing the messages loaded from the file.
  *
  * @return \Aura\Intl\Package
  * @throws \RuntimeException if no file parser class could be found for the specified
  * file extension.
  */
 public function __invoke()
 {
     $package = new Package('default');
     $folders = $this->translationsFolders();
     $ext = $this->_extension;
     $file = false;
     $fileName = $this->_name;
     $pos = strpos($fileName, '/');
     if ($pos !== false) {
         $fileName = substr($fileName, $pos + 1);
     }
     foreach ($folders as $folder) {
         $path = $folder . $fileName . ".{$ext}";
         if (is_file($path)) {
             $file = $path;
             break;
         }
     }
     if (!$file) {
         return $package;
     }
     $name = ucfirst($ext);
     $class = App::classname($name, 'I18n\\Parser', 'FileParser');
     if (!$class) {
         throw new RuntimeException(sprintf('Could not find class %s', "{$name}FileParser"));
     }
     $messages = (new $class())->parse($file);
     $package->setMessages($messages);
     return $package;
 }