在过去的几天里,我一直在与php,gettext和我的,不久后,新的网站从丹麦语翻译成英语。
我的目录中的.po和.mo文件设置如下:
/locale/en_US/LC_MESSAGES/
根据本教程:使用gettext本地化PHP网站添加了以下内容:
$locale = "en_US";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");
我在我的页面上添加了五个实体:
echo _('Overskrift 1')
但是,当我在服务器上查看页面时,一个启用PHP5.4和gettext支持的Debian框将不会被翻译。
我不知道我做错了什么。我肯定是很小的东西,但我就是看不见。也许你们有指点?
我的.po文件:
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: POEditor.com\n"
"Project-Id-Version: Portfolio\n"
"Language: en\n"
#:
msgid "Overskrift 1"
msgstr "Headline 1"
#:
msgid "Overskrift 2"
msgstr "Headline 2"
#:
msgid "Overskrift 3"
msgstr "Headline 3"
#:
msgid "Overskrift 4"
msgstr "Headline 4"
#:
msgid "Overskrift 5"
msgstr "Headline 5"
发布于 2013-12-10 17:10:38
最典型的问题是您的系统没有安装要设置的区域设置。gettext已深入集成到系统的地区系统中。您使用setlocale
设置的地区实际上需要安装和/或别名为您要给它的名称。例如,在大多数系统中,没有区域设置ja_JP
,而是区域设置ja_JP.UTF8
和/或ja_JP.eucJP
。在这种情况下,您需要setlocale(LC_ALL, 'ja_JP.UTF8')
,只有ja
或ja_JP
是做不到的。
若要检查安装了哪些区域设置,请在命令行上运行locale -a
。如果您正在寻找的地区不在那里,您需要安装它。在Ubuntu和类似的系统上,这就像运行sudo locale-gen ja_JP.UTF8
一样容易。
替代解决方案
一些罕见的地区可能不容易找到,因此您可能无法安装您想要的。在这种情况下,您可以找到最近的区域设置。例如,如果在您的应用程序所在的服务器上没有ku_IQ
,但存在ku_TR
,则可以使用后者。确保将目录重命名为实际设置的区域设置。您的文本仍将被正常翻译,但您的区域格式,如日期,时间和数字将无法正确显示。你得接受这个事实。
https://stackoverflow.com/questions/20482575
复制相似问题