我阅读了很多有关本地化和PHP gettext()
的教程和文章,以及关于Stack Overflow的一系列问题,但我无法弄清楚这一点。看来我做的一切都很正确,但没有任何作用。
我希望使用德语(de_DE)本地化将hello
转换为HALLO
。
PHP版本:7.1.6
服务器:Apache
文件夹结构:
localize
/locale
| /de_DE
| /LC_MESSAGES
| messages.mo
| messages.po
index.php
messages.po:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2017-09-21 15:30+0300\n"
"PO-Revision-Date: 2017-09-21 15:30+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\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"
"X-Poedit-SearchPath-0: .\n"
#: index.php:15
msgid "hello"
msgstr "HALLO"
的index.php:
<?php
$locale = 'de_DE';
$domain = 'messages';
putenv("LC_ALL=$locale");
echo 'LC_ALL: ' . LC_ALL . '<br>';
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo "Preferred locale for German is '$loc_de'<br>";
echo 'Text domain bound: ' . bindtextdomain($domain, "./locale") . '<br>';
echo 'Text domain set: ' . textdomain($domain) . '<br>';
echo '<h1>' . gettext('hello') . '</h1>';
index.php输出:
LC_ALL: 0
Preferred locale for German is 'de'
Text domain bound: C:\xampp\htdocs\localize\locale
Text domain set: messages
hello
de
是首选的区域设置后,我尝试将整个$locale
设置为de
。LANG
代替LC_ALL
。这些都没有任何区别。
我做错了什么?