Win7 पर स्थानीयकृत UI होने पर, error_code::message()
एक गैर-अंग्रेज़ी संदेश देता है। जहां तक मैं देख रहा हूँ (बूस्ट 1.54 में, system_error_category
के लिए), उपरोक्त समारोह निम्नलिखित WinAPI कॉल करने पर निर्भर करता:बढ़ावा कैसे प्राप्त करें :: system :: error_code :: संदेश अंग्रेजी में?
DWORD retval = ::FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
ev,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPSTR) &lpMsgBuf,
0,
NULL
);
कैसे ऊपर FormatMessage
एक अंग्रेजी संदेश वापस जाने के लिए प्राप्त करने के लिए? मैंने लोकेल को std
फ़ंक्शंस और SetThreadLocale
के साथ सेट करने का प्रयास किया - इससे मदद नहीं मिली।
अद्यतन: बस एक स्पष्टीकरण: अनिवार्य रूप से, मेरे सवाल यह है कि "ओवरराइड" प्रोग्राम के रूप में user default language और क्यों किया जाना स्थानीय सेटिंग के लिए पर्याप्त नहीं है।
जैसा कि मैंने बताया है, यह मेरा कोड नहीं है, लेकिन बूस्ट। सिस्टम जो 'FormatMessage' कहता है। –
ठीक है, तो अपना खुद का फ़ंक्शन लिखें। यह कठिन नहीं है। –
पैचिंग बूस्ट एक विकल्प है, लेकिन मैं एक और अधिक साफ समाधान पसंद करूंगा। दरअसल, सवाल यह है कि क्या (LANG_NEUTRAL, SUBLANG_DEFAULT), यानी "उपयोगकर्ता डिफ़ॉल्ट भाषा" (http://msdn.microsoft.com/en-us/library/windows/desktop/dd373908(v=vs.85 ओवरराइड करना संभव है या नहीं)) .aspx)। थ्रेड लोकेल या ग्लोबल लोकेल को प्रभावित नहीं करना चाहिए? –