localhost PHP7本地化与gettext()无法正常工作

时间:2017-09-21 12:42:25

标签: php apache localization gettext po

我阅读了很多有关本地化和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

我尝试了什么

  • 我使用Poedit多次将messages.po编译成messages.mo。
  • 我多次重启我的Apache服务器。
  • 看到de是首选的区域设置后,我尝试将整个$locale设置为de
  • 我尝试使用LANG代替LC_ALL

这些都没有任何区别。

我做错了什么?

0 个答案:

没有答案