Пример #1
0
 /**
  * Load a localization for the current language from a directory.
  *
  * @param string $dir
  *            Directory path.
  * @param bool $extend
  *            Whether to extend the existing localization object
  *            (true) or replace it (false).
  * @return bool True if language file found, false otherwise.
  */
 public static function loadFrom($dir, $extend = true)
 {
     $file = $dir . '/' . self::$language . '.';
     if (isset(self::$cache)) {
         $cached = self::$cache->getItem($file);
         if ($cached->isHit()) {
             $value = $cached->get();
             if (is_array($value)) {
                 $localization = new Locale($value);
                 self::load($localization, $extend);
                 return true;
             } else {
                 self::$cache->deleteItems(array($file));
             }
         }
     }
     if (file_exists($file . 'pot')) {
         return true;
     } elseif (file_exists($file . 'mo')) {
         $localization = Locale::readMo($file . 'mo');
     } elseif (file_exists($file . 'po')) {
         $localization = Locale::readPo($file . 'po');
     } else {
         return false;
     }
     if (isset(self::$cache)) {
         // self::$cache->set($file, $localization->getMessages(), 3600);
         $item = self::$cache->getItem($file);
         $item->set($localization->getMessages());
         $item->expiresAfter(3600);
         self::$cache->save($item);
     }
     self::load($localization, $extend);
     return true;
 }
Пример #2
0
 public function testReadMo()
 {
     $l = Locale::readMo('tests/_data/I18n/da.mo');
     $this->assertEquals('juni', $l->get('June'));
     $this->assertEquals('d/m/Y', $l->shortDate);
     $this->assertTrue(isset($l->shortTime));
     $this->assertEquals('Der er 0 brugere', $l->nget('There are %1 users', 'There is %1 user', 0));
     $this->assertEquals('Der er 1 bruger', $l->nget('There are %1 users', 'There is %1 user', 1));
     $this->assertEquals('Der er 2 brugere', $l->nget('There are %1 users', 'There is %1 user', 2));
     // big endian file:
     $l = Locale::readMo('tests/_data/I18n/da.be.mo');
     $this->assertEquals('juni', $l->get('June'));
     $this->assertEquals('d/m/Y', $l->shortDate);
     $this->assertTrue(isset($l->shortTime));
     $this->assertEquals('Der er 0 brugere', $l->nget('There are %1 users', 'There is %1 user', 0));
     $this->assertEquals('Der er 1 bruger', $l->nget('There are %1 users', 'There is %1 user', 1));
     $this->assertEquals('Der er 2 brugere', $l->nget('There are %1 users', 'There is %1 user', 2));
     // not a MO file:
     $this->assertThrows('Jivoo\\I18n\\LocaleException', function () {
         $l = Locale::readMo('tests/_data/I18n/da.po');
     });
     // not a MO file:
     // TODO: why does this not work?
     //     $this->assertThrows('Jivoo\I18n\LocaleException', function() {
     //       $l = Locale::readMo('tests/_data/I18n/notafile');
     //     });
 }