128 lines
2.4 KiB
PHP
128 lines
2.4 KiB
PHP
<?php
|
|
|
|
|
|
function lang_load($postfix=null) {
|
|
global $fp_config;
|
|
|
|
$pluginpath='';
|
|
|
|
// checks if we already loaded this lang file
|
|
$vals = explode('.', $postfix); // my.file.name ---> 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 <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'];
|
|
}
|
|
|
|
|
|
//$v = ob_get_contents();
|
|
//ob_end_clean();
|
|
|
|
// if ($v) trigger_error("[lang] <strong>$fpath</strong> 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();
|
|
}
|
|
|
|
|
|
?>
|