我们在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
。
我有gisted a test case。该脚本将转换字符串,然后引发No such file or directory
错误。我不想要翻译这个错误。
是否有任何方法可以配置gettext语言环境而无需更改操作系统的错误消息?我们不想将gettext更改为其他一些转换机制(数组,xliff,你可以命名)。我们不关心Windows和mod_php,但解决方案必须适用于php-fpm 5.4和cli。
答案 0 :(得分:-1)
您正在使用LC_MESSAGES
表示系统响应的意思(如果使用libintl编译PHP,则可用)'我会尝试忽略此选项,例如setlocale(LC_ALL ^ LC_MESSAGES, $locale)
。