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加载程序)