1

我们在 PHP 应用程序中使用 gettext 进行翻译。它是这样初始化的:

<?php
setlocale(LC_MESSAGES, $locale);
putenv("LANG=$locale");
putenv("LANGUAGE=$locale");

bindtextdomain($domain, $pathToLocales);
textdomain($domain);

这工作正常,但它也翻译来自操作系统的错误消息。以 DNS 解析失败为例,而不是Name or service not known我们Der Name oder der Dienst ist nicht bekannt在德国站点的错误日志中看到。

我已经给出了一个测试用例。该脚本将翻译一个字符串,然后引发No such file or directory错误。我不想翻译这个错误。

有什么方法可以在不更改操作系统错误消息的情况下配置 gettext 语言环境?我们不想将 gettext 更改为其他一些翻译机制(数组、xliff 等)。我们不关心 Windows 和 mod_php,但该解决方案必须适用于 php-fpm 5.4 和 cli。

4

1 回答 1

-1

您正在使用LC_MESSAGES“用于系统响应(如果 PHP 是使用 libintl 编译 PHP 时可用)”的含义,例如,我会尝试忽略此选项setlocale(LC_ALL ^ LC_MESSAGES, $locale)

http://www.php.net/manual/en/function.setlocale.php

于 2013-06-18T13:18:54.827 回答