Example #1
0
 /**
  * Finds language files (*.lng.php) in a directory. 
  * @param string $dir Directory path.
  * @return \Jivoo\Core\I18n\Locale[] Array of localizations indexed by their
  * language code.
  */
 public function findLanguages($dir)
 {
     $files = scandir($dir);
     $languages = array();
     if ($files !== false) {
         foreach ($files as $file) {
             $ex = explode('.', $file);
             if (count($ex) == 2) {
                 $tag = $ex[0];
                 if ($ex[1] == 'po' or $ex[1] == 'pot') {
                     $locale = Locale::readPo($dir . '/' . $file);
                 } else {
                     if ($ex[1] == 'mo') {
                         $locale = Locale::readMo($dir . '/' . $file);
                     } else {
                         continue;
                     }
                 }
                 if (!isset($languages[$tag])) {
                     $languages[$tag] = array('locale' => $locale, 'po' => false, 'mo' => false, 'pot' => false);
                 }
                 $languages[$tag][$ex[1]] = true;
             }
         }
     }
     return $languages;
 }
Example #2
0
 public function testReadPo()
 {
     $l = Locale::readPo('tests/_data/Core/I18n/da.po');
     $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));
 }
Example #3
0
File: I18n.php Project: jivoo/jivoo
 /**
  * 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;
     } else {
         if (file_exists($file . 'mo')) {
             $localization = Locale::readMo($file . 'mo');
         } else {
             if (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;
 }