flatpress/fp-includes/core/core.language.php
2007-10-30 10:30:07 +00:00

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();
}
?>