You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
72 lines
1.7 KiB
17 years ago
|
<?php
|
||
|
/* See license terms in /dokeos_license.txt */
|
||
|
/**
|
||
|
* Library for language translation from Dokeos language files to XML for videoconference
|
||
|
* @uses main_api.lib.php for api_get_path()
|
||
|
*/
|
||
|
/**
|
||
|
* This function reads a Dokeos language file and transforms it into XML,
|
||
|
* then returns the XML string to the caller.
|
||
|
*/
|
||
|
function get_language_file_as_xml($language='english')
|
||
|
{
|
||
|
$path = api_get_path(SYS_LANG_PATH).$language.'/';
|
||
|
if(!is_dir($path) or !is_readable($path))
|
||
|
{
|
||
|
if($language != 'english')
|
||
|
{
|
||
|
return get_language_file_as_xml('english');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return '';
|
||
|
}
|
||
|
}
|
||
|
//error_log('Analysing path '.$path);
|
||
|
$file = $path.'videoconf.inc.php';
|
||
|
if(!is_file($file) or !is_readable($file))
|
||
|
{
|
||
|
if($language != 'english')
|
||
|
{
|
||
|
return get_language_file_as_xml('english');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return '';
|
||
|
}
|
||
|
}
|
||
|
$convert = true;
|
||
|
if(substr($language,-7,7) == 'unicode')
|
||
|
{//do not convert if the language ends with 'unicode', which means it's in UTF-8
|
||
|
$convert=false;
|
||
|
}
|
||
|
$list = file($file);
|
||
|
$xml = '';
|
||
|
foreach ( $list as $line )
|
||
|
{
|
||
|
if(substr($line,0,1)=='$')
|
||
|
{
|
||
|
$items = array();
|
||
|
$match = preg_match('/^\$([^\s]*)\s*=\s*"(.*)";$/',$line,$items);
|
||
|
if($match)
|
||
|
{
|
||
|
//todo: The following conversion should only happen for old language files (encoded in ISO-8859-1).
|
||
|
if($convert)
|
||
|
{
|
||
|
$string = mb_convert_encoding($items[2],'UTF-8','ISO-8859-1');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$string = $items[2];
|
||
|
}
|
||
|
$xml .= '<labelfield><labelid>'.$items[1].'</labelid><labelvalue>'.$string.'</labelvalue></labelfield>'."\n";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if(empty($xml) && $language!='english')
|
||
|
{
|
||
|
return get_language_file_as_xml('english');
|
||
|
}
|
||
|
return $xml;
|
||
|
}
|
||
|
?>
|