111 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| function lang_load($postfix = null) {
 | |
| 	global $fp_config;
 | |
| 
 | |
| 	$pluginpath = '';
 | |
| 
 | |
| 	// checks if we already loaded this lang file
 | |
| 	$old_lang = &$GLOBALS ['lang'];
 | |
| 
 | |
| 	if (!$old_lang)
 | |
| 		$old_lang = array();
 | |
| 
 | |
| 	if ($postfix) {
 | |
| 
 | |
| 		if (strpos($postfix, 'plugin:') === 0) {
 | |
| 			$pluginpath = substr($postfix, 7);
 | |
| 		}
 | |
| 
 | |
| 		$file = "lang.$postfix.php";
 | |
| 	} else {
 | |
| 
 | |
| 		$postfix = 'default';
 | |
| 		$file = "lang.default.php";
 | |
| 	}
 | |
| 
 | |
| 	$fpath = LANG_DIR . "{$fp_config['locale']['lang']}/$file";
 | |
| 	$fallback = LANG_DIR . LANG_DEFAULT . "/$file";
 | |
| 
 | |
| 	$path = '';
 | |
| 	$plugin = $pluginpath;
 | |
| 
 | |
| 	if ($pluginpath) {
 | |
| 		if (($n = strpos($pluginpath, '/')) !== false) {
 | |
| 			$plugin = substr($plugin, 0, $n - 1);
 | |
| 			$path = substr($plugin, $n + 1);
 | |
| 			$path = str_replace('/', '.', $path);
 | |
| 		}
 | |
| 
 | |
| 		$dir = plugin_getdir($plugin);
 | |
| 
 | |
| 		$fpath = $dir . "lang/lang.{$fp_config['locale']['lang']}{$path}.php";
 | |
| 		$fallback = $dir . "lang/lang." . LANG_DEFAULT . "{$path}.php";
 | |
| 	}
 | |
| 
 | |
| 	if (!file_exists($fpath)) {
 | |
| 		/* if file does not exist, we fall back on English */
 | |
| 		if (!file_exists($fallback)) {
 | |
| 			trigger_error("No suitable language file was found <b>$postfix</b>", E_USER_WARNING);
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		$fpath = $fallback;
 | |
| 	}
 | |
| 
 | |
| 	/* load $lang from file */
 | |
| 
 | |
| 	/*
 | |
| 	 * utf encoded files may output whitespaces known as BOM, we must
 | |
| 	 * capture this chars
 | |
| 	 */
 | |
| 
 | |
| 	ob_start();
 | |
| 
 | |
| 	include_once ($fpath);
 | |
| 
 | |
| 	if (!isset($lang)) {
 | |
| 		return $GLOBALS ['lang'];
 | |
| 	}
 | |
| 
 | |
| 	ob_end_clean();
 | |
| 
 | |
| 	$GLOBALS ['lang'] = array_merge_recursive($lang, $old_lang);
 | |
| 
 | |
| 	return $GLOBALS ['lang'];
 | |
| }
 | |
| 
 | |
| function lang_getconf($id) {
 | |
| 	global $lang;
 | |
| 
 | |
| 	$fpath = LANG_DIR . "$id/lang.conf.php";
 | |
| 	if (file_exists($fpath)) {
 | |
| 		include ($fpath);
 | |
| 		return $langconf;
 | |
| 	} else
 | |
| 		trigger_error("Error loading config for language \"$file\"", E_USER_WARNING);
 | |
| }
 | |
| 
 | |
| class lang_indexer extends fs_filelister {
 | |
| 
 | |
| 	var $_directory = LANG_DIR;
 | |
| 
 | |
| 	function _checkFile($directory, $file) {
 | |
| 		if (is_dir("$directory/$file")) {
 | |
| 			if (!preg_match('![a-z]{2}-[a-z]{2}!', $file))
 | |
| 				return 0;
 | |
| 			$this->_list [$file] = lang_getconf($file);
 | |
| 		}
 | |
| 
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| function lang_list() {
 | |
| 	$obj = new lang_indexer();
 | |
| 	return $obj->getList();
 | |
| }
 | |
| 
 | |
| ?>
 | 
