0
我一直有问题让翻译工作在我的本地WAMP(v2.5)服务器上。这是一个问题的例子。PHP gettext在本地WAMP服务器上不起作用
putenv("LANG=frc"); //output: 1
setlocale(LC_ALL, "frc"); //output: French_Canada.1252
$domain = 'messages';
bindtextdomain($domain, "locale"); //output: D:\wamp\www\[project folder]\locale
bind_textdomain_codeset($domain, 'UTF-8'); //output: UTF-8
textdomain($domain); //output: messages
echo gettext("Hello"); //output: Hello
这里是文件夹结构:
locale
--> French_Canada.1252
--> LC_MESSAGES
--> messages.po
--> messages.mo
最后PO文件:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2016-02-10 14:01-0500\n"
"PO-Revision-Date: 2016-02-10 14:01-0500\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.2\n"
"X-Poedit-Basepath: ../../..\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SearchPath-0: .\n"
#: test.php:11
msgid "Hello"
msgstr "Bonjour"
这是我已经试过:
1)卸载64位WAMP和在其位置安装32位WAMP。
2)使用不同的区域代码,如fr_CA,fr_FR,fr。 fr是唯一被识别的,但我仍然有同样的问题(即使将文件夹重命名为fr后)
3)将代码集更改为1252和Windows-1252(在php文件和PO文件中)
4)每次更改后重新启动所有服务
仅供参考,gettext的停止后PHP/5.3(见[Gettext的总是会使用系统默认区域设置(http://stackoverflow.com/questions/19569362/gettext-will-always-use-在Windows上正常工作系统默认的语言环境))。无论如何,我建议你将你的文件夹从'French_Canada.1252'重新命名为'fr'。 –
我别无选择,只能使用[php-gettext](https://launchpad.net/php-gettext/) – Falantar