如何使用PHP的po / pot文件?
我在一个文件夹中有.po和.mo文件,其地址是/ locale / nld_nld / LC_MESSAGES /。这两个文件的名称都是消息。我一直在尝试使用以下代码:
try.php:
<?php
require_once("Localization.php");
echo _("Hello World!");
?>
Localization.php在这里:
<?php
$locale = "nld_nld";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
try.php和Localization文件都在同一目录中。另外,我使用xampp
。我也实施了phpinfo();
。在表格中,在“GetText支持”前面,提到了启用。 messages.po和messages.mo文件是我使用poEdit创建的有效文件。我是一个Windows用户。但是,当我打开try.php时,它只是回显了Hello World! (不是它的翻译字符串。另外,我已经将.po文件100%翻译了(根据poEdit
)。但是,我还没有得到结果。对此有点帮助将不胜感激。
提前致谢!
没有找到相关结果
已邀请:
3 个回复
镀建啼
要使上述代码生效,我的.mo文件位于/full/path/here/application/locale/es_ES.utf8文件夹中。 也许我之前使用的以下代码可能会帮助您进一步排除故障:
炬卤遁蝎变
赣借
的返回值,它会告诉您本地路径是否确实是您希望翻译文件生效的路径。然后检查这些文件的文件访问权限(如果它们(以及直到root的目录)可由www-user访问)。它位于./locale/LC_MESSAGES/nld_nld/中的某处
应该是最后一种方法(在实际的gettext转换之前)。 bindtextdomain和textdomain的domain参数应该是相同的域名(它不在您的答案中)并且等于mo文件基本名称。 确保您的php文件都不使用其他textdomain,尤其是当您使用“require_once”时。 顺便说一下,您所拥有的代码在请求中查找区域设置标识符(没有过滤器)并使用nld_nld作为默认的故障恢复,我会在其中放置一种普通语言(主要网站语言,如“en”)。