PHP - MultiLanguage支持

时间:2015-12-06 16:07:40

标签: php ini

我正在尝试为我的网站添加多语言支持,例如:

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

然后停止。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

通常,.ini文件中的所有字符串都应包含在"double quotes"中。这将解决问题。

我建议您看一下通用和社区批准的内容。像https://github.com/symfony/translation(里面有.ini加载器)