per*_*aum 1 php gettext poedit
我正在使用 gettext 将不同的翻译添加到我的网页中。我刚刚安装了它,我认为它运行良好。我也将 Poedit 用于.po文件。
这是我用于 gettext 测试的代码:
<?php
// 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);
//
// test if gettext extension is installed with php
//
if (!function_exists("gettext"))
{
echo "gettext is not installed\n";
}
else
{
echo "gettext is supported\n";
}
echo '<br>';
echo _("HELLO WORLD");
echo _("TEST TRANSLATION");
?>
Run Code Online (Sandbox Code Playgroud)
该代码返回“支持gettext”,但它没有向我显示翻译,而是向我显示“HELLO WORLD”和“TEST TRANSLATION”。
这是我的 messages.po 文件:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2014-03-22 14:45+0100\n"
"PO-Revision-Date: 2014-03-22 15:23+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\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..."
Run Code Online (Sandbox Code Playgroud)
它在我的“Locale/en_US/LC_MESSAGES”文件夹中,还有一个成功转换的messages.mo文件。(我隐藏了文件的信息,名称,项目等)
我究竟做错了什么?
谢谢!
编辑:我还可以补充一点,我将 Ubuntu 与 PHP、Apache 和所有这些东西一起使用。
我也一直头疼这个。我添加了这个并且它起作用了:
putenv('LANGUAGE=en_US');
接下来我使用以下内容:
$domain = 'woohoo';
setlocale(LC_ALL, 'en_US.utf8');
putenv('LANGUAGE=en_US');
if( ENV != 'live' ){
// reset caching nocache is a simlink to "."
bindtextdomain($domain, dirname(__FILE__) . '/../locale/nocache');
}
bindtextdomain($domain, dirname(__FILE__) . '/../locale');
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);
Run Code Online (Sandbox Code Playgroud)
此外,在我的设置中,它仅在我将 iso 代码添加到 .po 文件时才开始工作:
msgid ""
msgstr ""
"Language: en_US\n"
Run Code Online (Sandbox Code Playgroud)