是否可以将系统错误代码翻译成特定语言?
我只能MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
传给FormatMessage
. 否则,函数调用失败并返回 15100 (The resource loader failed to find MUI file)。
系统错误消息存储在哪里?为什么我不能在不同于系统的语言环境中加载消息?
是否可以将系统错误代码翻译成特定语言?
我只能MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
传给FormatMessage
. 否则,函数调用失败并返回 15100 (The resource loader failed to find MUI file)。
系统错误消息存储在哪里?为什么我不能在不同于系统的语言环境中加载消息?
基本上 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
.
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
。如果传入 zero,FormatMessage
则按以下顺序查找 LANGID 消息:
- 语言中立
- 线程 LANGID,基于线程的语言环境值
- 用户默认 LANGID,基于用户的默认语言环境值
- 系统默认 LANGID,基于系统默认语言环境值
- 美国英语