/** * 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; }