PHP - 多语言支持

PHP - MultiLanguage support

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

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

然后它停止了。

我该如何解决这个问题?

一般来说,.ini 文件中的所有字符串都应该包装到 "double quotes" 中。这将解决问题。

我可以建议你看一些通用的和社区认可的东西。喜欢 https://github.com/symfony/translation(里面有 .ini 加载程序)