我们在 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。