我使用gettext本地化这样Gettext的不能得到的setlocale()工作
$lang = $_GET['lang'];
echo $lang;
putenv("LANG=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("messages", realpath("../locale"));
bind_textdomain_codeset("messages", "utf-8");
textdomain("messages");
...
echo _("Welcome!") etc.
我能看到的本地化工作,因为该网站可以看到翻译在斯洛伐克。然而,没有什么mather $ lang变量,该网站只翻译斯洛伐克或根本不翻译。
斯洛伐克语意思是我在'sk'文件夹中的任何.po和.mo文件。我曾尝试在“sk”文件夹中放入不同的语言,它的工作原理和我得到不同的翻译。但我不能让它采取不同的文件夹,如'EN'或'CS'。所有其他文件夹都被忽略。我究竟做错了什么?
P.S. setlocale()返回false,我不知道为什么,但这可能导致麻烦。
你看看的http://www.php.net/manual/en/book.gettext.php中的评论? – iblue 2012-02-08 14:08:26
好吧,我没有看到一个解决方案,我试着重命名文件夹和$ lang变量en_US,我仍然有'sk'翻译。 – 2012-02-08 14:23:17
如果我必须猜测你的标准语言环境是sk,那就是它的用途,因为语言环境变化从未发生过。你指出你的setlocale调用返回false。你通过了什么? '$ lang'的内容是什么? – Dan 2012-02-08 14:33:56