尝试使用 gettext 将 php 站点国际化
好的,我有以下 PHP 代码:
<?php
$locale = "es";
//$locale = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
//if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
echo(getenv("LC_ALL"));
echo("<br>");
echo gettext("Hello World!");
?>
我创建了西班牙语 messages.po 和 messages.mo 文件,并将它们存储在上述代码所在目录的子目录中。 该目录的路径是:
locale/es/LC_MESSAGES
根据phpinfo,
,在我所在的Web服务器上启用了gettext(由小橙子托管)。调用该页面显示 getenv 调用返回“es”,但显示的是原始的英文字符串,而不是预期的西班牙文字符串。我也尝试过 _("Hello World!"),也无济于事。
我没有收到任何警告,没有错误,什么也没有。因此,我完全不知道如何排除可能出现故障的地方。
任何指导将不胜感激。
Okay, I have the following PHP code:
<?php
$locale = "es";
//$locale = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
//if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
echo(getenv("LC_ALL"));
echo("<br>");
echo gettext("Hello World!");
?>
I have created Spanish messages.po and messages.mo files and stored them in a subdirectory in the directory where the above code is. The path to said directory is:
locale/es/LC_MESSAGES
according to phpinfo, gettext is enabled on the web server I am on (hosted by A Small Orange).
Calling the page shows the getenv call returns 'es', but the original English string comes out, not the expected Spanish. I have also tried with _("Hello World!"), also to no avail.
I get no warnings, no errors, no nothing. So, I am at a complete loss as to how to even troubleshoot where this may be failing.
Any guidance would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可能是错的,但是,尝试改变
...
I might be wrong but, try changing...
to