我們在我們的PHP應用程序中使用gettext進行翻譯。它被初始化爲這樣:設置獨立於系統區域設置的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。
LC_MESSAGES是gettext所必需的。如果您從位掩碼中刪除該內容,則翻譯不起作用。我想要的是一個不同的LC_MESSAGES gettext和PHP過程,如果這是不可能的,我希望有一個解決方案來重置bindtextdomain()&co後的系統LC_MESSAGES。沒有重置gettext到系統默認值。 – Peter