/**
  * Gets the i18n directories to use globally.
  *
  * @return array An array of i18n directories
  */
 public function getI18NGlobalDirs()
 {
     // if there is a configuration dimension
     if ($this->hasDimension()) {
         $cacheKey = 'sf_i18n_global_dirs';
         // if there is a cache return it
         if ($this->dimension->getCache()->has($cacheKey)) {
             $dirs = $this->dimension->getCache()->get($cacheKey);
         } else {
             $dirs = array();
             // application
             if (is_dir($dir = sfConfig::get('sf_app_dir') . '/i18n')) {
                 array_push($dirs, $dir);
             }
             // plugins
             $pluginDirs = glob(sfConfig::get('sf_plugins_dir') . '/*/i18n');
             if (isset($pluginDirs[0])) {
                 array_push($dirs, $pluginDirs[0]);
             }
             // save cache
             $this->dimension->getCache()->set($cacheKey, $dirs);
         }
     } else {
         $dirs = parent::getI18NGlobalDirs();
     }
     return $dirs;
 }
Ejemplo n.º 2
0
 /**
  * This method is charged to get the cultures currently installed in the application.
  * It parses the mgmt/i18n/ directory and determine which languages are available.
  * @param sfApplicationConfiguration $configuration
  * @return an array of symbols (such as 'en', 'fr', 'de',...) representing the languages currently installed.
  */
 public static function getInstalledCultures(sfApplicationConfiguration $configuration)
 {
     //Get the i18n directories and check if there's any, or it's not empty:
     $i18n_dirs = $configuration->getI18NGlobalDirs();
     if (is_null($i18n_dirs) || empty($i18n_dirs)) {
         self::setError('An error occured while opening the languages folder. Check if the i18n directory exists.');
         return null;
     }
     $installed_cultures = array();
     //Get the first one: apps/mgmt/i18n/
     $i18n_dir = dir($i18n_dirs[0]);
     //Get all of the subdirectories but ignore '.' and '..' directories
     while (false !== ($culture_dir = $i18n_dir->read())) {
         if (is_dir($i18n_dirs[0] . '/' . $culture_dir) && $culture_dir[0] != '.') {
             $installed_cultures[] = $culture_dir;
         }
     }
     return $installed_cultures;
 }
 /**
  * Gets the i18n directories to use globally.
  *
  * @return array An array of i18n directories
  */
 public function getI18NGlobalDirs()
 {
     $dirs = array();
     $dirs = array_merge($dirs, array(sfConfig::get('sf_root_dir') . '/i18n'));
     $dirs = array_merge($dirs, parent::getI18NGlobalDirs());
     return $dirs;
 }