Beispiel #1
0
 /**
  *	Set the locale code
  *
  *	@return boolean
  */
 public function setLocale($locale = 'en_us')
 {
     //	Identify our locale and language
     $language = $locale = strtolower($locale);
     if (strpos($locale, '_') !== false) {
         list($language) = explode('_', $locale);
     }
     //	Test whether we have any language data for this language (any locale)
     if (in_array($language, self::$_validLocaleLanguages)) {
         //	initialise language/locale settings
         self::$_localeFunctions = array();
         self::$_localeArgumentSeparator = ',';
         self::$_localeBoolean = array('TRUE' => 'TRUE', 'FALSE' => 'FALSE', 'NULL' => 'NULL');
         //	Default is English, if user isn't requesting english, then read the necessary data from the locale files
         if ($locale != 'en_us') {
             //	Search for a file with a list of function names for locale
             $functionNamesFile = ROOT . 'PHPExcel/locale/' . str_replace('_', '/', $locale) . '/functions';
             if (!file_exists($functionNamesFile)) {
                 //	If there isn't a locale specific function file, look for a language specific function file
                 $functionNamesFile = ROOT . 'PHPExcel/locale/' . $language . '/functions';
                 if (!file_exists($functionNamesFile)) {
                     return false;
                 }
             }
             //	Retrieve the list of locale or language specific function names
             $localeFunctions = file($functionNamesFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
             foreach ($localeFunctions as $localeFunction) {
                 list($localeFunction) = explode('##', $localeFunction);
                 //	Strip out comments
                 if (strpos($localeFunction, '=') !== false) {
                     list($fName, $lfName) = explode('=', $localeFunction);
                     $fName = trim($fName);
                     $lfName = trim($lfName);
                     if (isset(self::$_PHPExcelFunctions[$fName]) && $lfName != '' && $fName != $lfName) {
                         self::$_localeFunctions[$fName] = $lfName;
                     }
                 }
             }
             //	Default the TRUE and FALSE constants to the locale names of the TRUE() and FALSE() functions
             if (isset(self::$_localeFunctions['TRUE'])) {
                 self::$_localeBoolean['TRUE'] = self::$_localeFunctions['TRUE'];
             }
             if (isset(self::$_localeFunctions['FALSE'])) {
                 self::$_localeBoolean['FALSE'] = self::$_localeFunctions['FALSE'];
             }
             $configFile = ROOT . 'PHPExcel/locale/' . str_replace('_', '/', $locale) . '/config';
             if (!file_exists($configFile)) {
                 $configFile = ROOT . 'PHPExcel/locale/' . $language . '/config';
             }
             if (file_exists($configFile)) {
                 $localeSettings = file($configFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                 foreach ($localeSettings as $localeSetting) {
                     list($localeSetting) = explode('##', $localeSetting);
                     //	Strip out comments
                     if (strpos($localeSetting, '=') !== false) {
                         list($settingName, $settingValue) = explode('=', $localeSetting);
                         $settingName = strtoupper(trim($settingName));
                         switch ($settingName) {
                             case 'ARGUMENTSEPARATOR':
                                 self::$_localeArgumentSeparator = trim($settingValue);
                                 break;
                         }
                     }
                 }
             }
         }
         self::$functionReplaceFromExcel = self::$functionReplaceToExcel = self::$functionReplaceFromLocale = self::$functionReplaceToLocale = NULL;
         self::$_localeLanguage = $locale;
         return true;
     }
     return false;
 }