是否有可能将系统错误代码翻译成特定的语言?
我只能将MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
传递给FormatMessage
。 否则,函数调用失败,15100 (资源加载器找不到MUI文件) 。
系统错误信息存储在哪里? 为什么我不能在与系统不同的语言环境中加载消息?
基本上MUI代表多语言用户界面。 这些是语言包。 在Windows中,默认情况下不会得到它们。 相反,他们必须安装
以下链接可以帮助您了解采购。
https://support.microsoft.com/en-us/help/14236/language-packs
默认情况下,上述页面显示为Windows 10。 有一个下拉选项来选择其他版本的Windows。
如果您在上面的链接中遇到困难,请在Google中搜索适用于Windows 10或任何其他版本的MUI语言包。
语言ID使用零,而不是MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
。 然后FormatMessage
将根据线程的语言ID挑选资源,或者使用GetUserDefaultLangID
。
FormatMessage文档:
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
:如果您在此参数中传递特定的LANGID,则
FormatMessage
将仅返回该LANGID的消息。 如果函数找不到该LANGID的消息,则将Last-Error设置为ERROR_RESOURCE_LANG_NOT_FOUND
。 如果传入零 ,FormatMessage
按以下顺序查找LANGID的消息:
- 语言中立
- 线程LANGID,基于线程的语言环境值
- 用户默认LANGID,基于用户的默认语言环境值
- 系统默认LANGID,基于系统默认的语言环境值
- 美国英语