我正在尝试为我的网站添加多语言支持,例如:
Language.php
:
class lang {
private $lang = null;
function __construct($lang) {
global $module;
$module['lang'] = true;
$this->lang = parse_ini_file("includes/languages/{$lang}.ini");
}
public function xlate($str) {
$arg_count = func_num_args();
if ($arg_count > 1) {
$params = func_get_args();
// strip first arg
array_shift($params);
} else {
$params = array();
}
$out_str = isset($this->lang[$str]) ? $this->lang[$str] : null;
if (!$out_str) {
throw new exception("Lang String Not Found: $str");
$this->lang = parse_ini_file("includes/languages/en_gb.ini");
}
return vsprintf($out_str, $params);
}
}
然后我将我的语言变量存储在ini文件中:
en_gb.ini
:
Support = Support
Quick Menu = Quick Menu
HOME_MAIN_TITLE = You will Get Paid
然后我就像使用它一样:
echo $lang->xlate("Support");
echo $lang->xlate("Quick Menu");
echo $lang->xlate("HOME_MAIN_TITLE");
哪个有效。但是,每当我在语言中传递'
字符时,它都不起作用:
HOME_MAIN_TITLE = You'll Get Paid
它将文本回显到'
字符:
You
然后停止。
我该如何解决这个问题?
答案 0 :(得分:0)
通常,.ini
文件中的所有字符串都应包含在"double quotes"
中。这将解决问题。
我建议您看一下通用和社区批准的内容。像https://github.com/symfony/translation(里面有.ini
加载器)