scanLanguageFolders(); // Set the default Language $this->language = configuration('language', 'SuperSmash'); } // This function will set the specified language public function setLanguage($language) { // Check if the language exists $language = strtolower($language); if(in_array($language, $this->languages['application']) || in_array($language, $this->languages['system'])) { $this->language = $language; return true; } return false; } // This function will load the specified language public function load($file, $language = null) { // Set the language if specified if($language != null) { $this->setLanguage($language); } // Add the extension, and create our tag $language = $this->language; $key = $file .'_'. $language; $file = $file . '.php'; // Make sure we havent loaded this already if(isset($this->supportedLanguages[$key])) { return $this->supportedLanguages[$key]; } // Init our empty variable arrays $vars = array(); $vars2 = array(); // Load the core language file if it exists if(file_exists(SYSTEM . DS . 'editable' . DS . 'languages' . DS . $language . DS . $file)) { $vars = include(SYSTEM . DS . 'editable' . DS . 'languages' . DS . $language . DS . $file); if(!is_array($vars)) { return false; } } // Next we load the application file, allows overriding of the core one if(file_exists(settings::getFilePath() . DS . settings::getApp() . DS . 'languages' . DS . $language . DS . $file)) { $vars2 = include(settings::getFilePath() . DS . settings::getApp() . DS . 'languages' . DS . $language . DS . $file); if(!is_array($vars2)) { return false; } } // Merge if both the app and core had the same filename $vars = array_merge($vars, $vars2); // Without a return, we need to store what we have here. $this->loadedLanguages[] = $file; $this->supportedLanguages[$key] = $vars; // Init the return return (!empty($vars)) ? $vars : false; } // This function gets the specified variable of the configuration array public function get($variable, $file = null) { // Check to see that we loaded something first if(empty($this->supportedLanguages)) { return false; } // Determine our language variable filename if not givin if($file == null) { foreach ($this->loadedLanguages as $key => $value) { $file = $value; // Build the language key (strip the .php extension) $key = preg_replace('/\.php$/','',$file) . '_' . $this->language; // check to see if our var is set... if not, try to load it first if(!isset($this->supportedLanguages[$key])) { $this->load($file); } // Attempt to load the actual language var now if(isset($this->supportedLanguages[$key][$variable])) { return $this->supportedLanguages[$key][$variable]; } } } return false; } // This function will return an array of all the languages that where found in the language folder public function getLanguages($type = null) { if($type == 'system') { return $this->languages['system']; } elseif($type == 'application') { return $this->languages['application']; } return $this->languages; } // This function will scan and find all the installed languages protected function scanLanguageFolders() { // Load the system languages first $path = SYSTEM . DS . 'editable' . DS . 'languages'; $list = opendir( $path ); while($file = readdir($list)) { if($file[0] != "." && is_dir($path . DS . $file)) { $this->languages['system'][] = $file; } } closedir($list); // Finally, Load app languages $path = settings::getFilePath() . DS . settings::getApp() . DS . 'languages'; $list = opendir( $path ); while($file = readdir($list)) { if($file[0] != "." && is_dir($path . DS . $file)) { $this->languages['application'][] = $file; } } closedir($list); } } ?>