my, file, name $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['general']['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['general']['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 $postfix", 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']; } //$v = ob_get_contents(); //ob_end_clean(); // if ($v) trigger_error("[lang] $fpath produced output", E_USER_WARNING); $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")) { $this->_list[$file] = lang_getconf($file); } return 0; } } function lang_list() { $obj =& new lang_indexer(); return $obj->getList(); } ?>