我正在关注教程here,php正在输出msgid而不是msgstr。这就是我的......
{p>extension=php_gettext.dll
在php.ini
中取消注释(在xampp中已经取消注释)
php_gettext.dll
中的 C:\xampp\php\ext
(已经在xampp中)
目录结构C:\xampp\htdocs\TestI18N\Locale\en_US\LC_MESSAGES
包含messages.po
中已创建的messages.mo
和LC_MESSAGES
个文件。
test-locale.php
中名为C:\xampp\htdocs\TestI18N
的文件,其中包含以下内容
// I18N support information here
$language = "en_US";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);
// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "Locale");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);
echo _("HELLO_WORLD");
我的messages.po
文件
msgid ""
msgstr ""
"Project-Id-Version: TestProject\n"
"POT-Creation-Date: 2017-08-22 23:42+0300\n"
"PO-Revision-Date: 2017-08-22 23:53+0300\n"
"Last-Translator: \n"
"Language-Team: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.3\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en_US\n"
"X-Poedit-SourceCharset: UTF-8\n"
# Test token 1
msgid "HELLO_WORLD"
msgstr "Hello World!"
# Test token 2
msgid "TEST_TRANSLATION"
msgstr "Testing translation..."
输出为HELLO_WORLD
。我究竟做错了什么?谢谢。
答案 0 :(得分:0)
我知道这个问题很旧,但万一可以帮助其他人;我服务器上安装的语言环境是en_US.utf8,而不是en_US。