PHP アプリケーションでは、翻訳に gettext を使用しています。次のように初期化されます。
<?php
setlocale(LC_MESSAGES, $locale);
putenv("LANG=$locale");
putenv("LANGUAGE=$locale");
bindtextdomain($domain, $pathToLocales);
textdomain($domain);
これは正常に機能しますが、OS からのエラー メッセージも変換します。ドイツのサイトのエラー ログにName or service not known表示される代わりに、DNS 解決の失敗を例に挙げます。Der Name oder der Dienst ist nicht bekannt
私はテストケースを要約しました。スクリプトは文字列を変換し、エラーを引き起こしNo such file or directoryます。このエラーを翻訳したくありません。
オペレーティング システムからのエラー メッセージを変更せずに gettext ロケールを構成する方法はありますか? gettext を他の変換メカニズム (配列、xliff など) に変更したくありません。Windows と mod_php は気にしませんが、ソリューションは php-fpm 5.4 と cli で機能する必要があります。