是否可以将system error codes翻译成特定语言?
我只能将MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
传递给FormatMessage
。否则,函数调用将失败并显示15100 (资源加载程序无法找到MUI文件)。
系统错误消息存储在哪里?为什么我不能在不同于系统的区域设置中加载消息?
答案 0 :(得分:2)
MUI基本上代表多语言用户界面。这些是语言包。在Windows中,默认情况下不会获得它们。相反,他们必须安装
以下链接可帮助您进行采购。
https://support.microsoft.com/en-us/help/14236/language-packs
默认情况下,上面的页面显示为Windows 10。有一个下拉选项可供选择其他版本的Windows。
如果您在使用上述链接时遇到问题,请在Google上搜索适用于Windows 10或任何其他版本的MUI语言包。
答案 1 :(得分:2)
对语言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
。 如果传入零,FormatMessage
在下面查找LANGID的消息 顺序:
- 语言中立
- 线程LANGID,基于线程的区域设置值
- 用户默认LANGID,基于用户的默认语言环境值
- 系统默认LANGID,基于系统默认语言环境值
- 美国英语
醇>