格式化信息到另一种语言

是否有可能将系统错误代码翻译成特定的语言?

我只能将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的消息:

  1. 语言中立
  2. 线程LANGID,基于线程的语言环境值
  3. 用户默认LANGID,基于用户的默认语言环境值
  4. 系统默认LANGID,基于系统默认的语言环境值
  5. 美国英语