尝试使用 gettext 将 php 站点国际化

发布于 2024-11-09 22:10:31 字数 772 浏览 0 评论 0原文

好的,我有以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

じее 2024-11-16 22:10:31

我可能是错的,但是,尝试改变

putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");

...

putenv("LC_ALL=".$locale);
putenv("LANGUAGE=".$locale);

I might be wrong but, try changing...

putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");

to

putenv("LC_ALL=".$locale);
putenv("LANGUAGE=".$locale);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文