2012-10-03 13 views
6

मैं प्रारूप संदेश उपयोग करने के लिए प्राप्त करने के लिए केवल अंग्रेज़ी महत्व देताअंग्रेज़ी केवल संदेशों

MSDN निर्दिष्ट करता है निम्नलिखित

DWORD WINAPI FormatMessage(
    _In_  DWORD dwFlags, 
    _In_opt_ LPCVOID lpSource, 
    _In_  DWORD dwMessageId, 
    _In_  DWORD dwLanguageId, 
    _Out_  LPTSTR lpBuffer, 
    _In_  DWORD nSize, 
    _In_opt_ va_list *Arguments 
); 

dwLanguageId पैरामीटर के लिए कोशिश कर रहा हूँ प्राप्त करने के लिए FormatMessage C++ का उपयोग कैसे करें,

अनुरोधित संदेश के लिए भाषा पहचानकर्ता। इस पैरामीटर को अनदेखा किया जाता है यदि dwFlags में FORMAT_MESSAGE_FROM_STRING शामिल है।

यदि आप इस पैरामीटर में एक विशिष्ट LANGID पास करते हैं, तो FormatMessage केवल उस LANGID के लिए एक संदेश लौटाएगा। अगर फ़ंक्शन उस LANGID के लिए कोई संदेश नहीं ढूंढ पा रहा है, तो यह ERROR_RESOURCE_LANG_NOT_FOUND को अंतिम-त्रुटि सेट करता है। ,,

  1. भाषा तटस्थ
  2. थ्रेड LangID धागा भी स्थान मूल्य
  3. उपयोगकर्ता डिफ़ॉल्ट LangID के आधार पर उपयोगकर्ता के डिफ़ॉल्ट के आधार पर: आप शून्य में पार कर लेते हैं, FormatMessage निम्न क्रम में LANGIDs के लिए एक संदेश के लिए लग रहा है स्थान मूल्य
  4. सिस्टम डिफ़ॉल्ट LangID, सिस्टम डिफ़ॉल्ट स्थान मूल्य
  5. यूएस अंग्रेज़ी

तो स्वरूप के आधार पर संदेश किसी भी पिछले LANGID के लिए कोई संदेश नहीं ढूंढता है, यह मौजूद कोई भी भाषा संदेश स्ट्रिंग देता है। यदि यह विफल रहता है, तो यह ERROR_RESOURCE_LANG_NOT_FOUND लौटाता है।

क्या इसका मतलब यह होगा कि, यदि पास मूल्य 5 है, तो यह संदेश अंग्रेजी में वापस कर देगा?

क्या आप इसे स्पष्ट कर सकते हैं?

+0

यह वह जगह है जहां मैं सचमुच चाहता हूं कि मैं विशेष रूप से संपादन के लिए एक उत्थान कास्ट कर सकता हूं। अच्छी तरह से किया @RobKennedy! –

+0

ब्याज से, आप सिर्फ अंग्रेजी क्यों चाहते हैं? निश्चित रूप से यदि उपयोगकर्ता उपलब्ध है तो उपयोगकर्ता को अपनी भाषा में पढ़ना चाहिए? – Deanna

+0

यह सच है, लेकिन एप्लिकेशन अंग्रेजी में सभी संदेशों को प्रदर्शित करता है लेकिन सिस्टम संदेश देशी में प्रदर्शित होते हैं ... इसे लगातार –

उत्तर

8

प्रलेखन में संख्या 5 इंगित करता है कि यू.एस. अंग्रेजी पांचवीं भाषा FormatMessage पैरामीटर मान के रूप में शून्य पास करते समय उपयोग करने का प्रयास करेगी, इसके बाद पिछले चार विकल्पों को आजमाया गया है और विफल रहा है। उस फ़ंक्शन पैरामीटर के लिए मान 5 को पास करने के साथ इसका कोई लेना-देना नहीं है।

अंग्रेजी संदेश का अनुरोध करने के लिए, यूएस अंग्रेज़ी के लिए LANGID मान में पास करें, जिसे आप MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) के साथ प्राप्त कर सकते हैं। FormatMessagedocumentation on language identifiers पर दस्तावेज़ लिंक, जो बदले में language identifier constants and strings के पृष्ठ से लिंक करता है।

+0

(देर से टिप्पणी, मुझे पता है ..) क्या आप जानते हैं कि यह अंग्रेजी भाषा त्रुटि संदेश स्थानीयकृत सिस्टम पर उपलब्ध है या नहीं? – peterchen

+0

कोई विचार नहीं, @ पीटर। स्टैक ओवरफ़्लो पर एक प्रश्न पूछें। –

संबंधित मुद्दे