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.
95 lines
2.3 KiB
95 lines
2.3 KiB
<?php
|
|
/* See license terms in /license.txt */
|
|
/**
|
|
* Library for language translation from Chamilo language files to XML for videoconference
|
|
* @uses main_api.lib.php for api_get_path()
|
|
*/
|
|
/**
|
|
* This function reads a Chamilo 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 = api_convert_encoding($items[2],'UTF-8','ISO-8859-1');
|
|
}
|
|
else
|
|
{
|
|
$string = $items[2];
|
|
}
|
|
$xml .= '<labelfield><labelid>'.$items[1].'</labelid><labelvalue>'.stripslashes($string).'</labelvalue></labelfield>'."\n";
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
//---------
|
|
$non_utf8_encoding = api_get_non_utf8_encoding($language);
|
|
$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) {
|
|
$string = $items[2];
|
|
if (!api_is_valid_utf8($string)) {
|
|
$string = api_html_entity_decode(api_utf8_encode($string, $non_utf8_encoding), ENT_QUOTES, 'UTF-8');
|
|
}
|
|
$xml .= '<labelfield><labelid>'.$items[1].'</labelid><labelvalue>'.stripslashes($string).'</labelvalue></labelfield>'."\n";
|
|
}
|
|
}
|
|
}
|
|
//---------
|
|
|
|
if(empty($xml) && $language!='english')
|
|
{
|
|
return get_language_file_as_xml('english');
|
|
}
|
|
return $xml;
|
|
}
|
|
?>
|
|
|