1

システム エラー コードを特定の言語に翻訳することはできますか?

にしか渡せませMAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)FormatMessage。それ以外の場合、関数呼び出しは 15100 (リソース ローダーが MUI ファイルを見つけられませんでした) で失敗します

システム エラー メッセージはどこに保存されますか? システムのロケールとは異なるロケールでメッセージをロードできないのはなぜですか?

4

2 に答える 2

2

ではなく、言語 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ます。zero を渡すと、次の順序で FormatMessageLANGID のメッセージが検索されます。

  1. 中立的な言語
  2. スレッドのロケール値に基づくスレッド LANGID
  3. ユーザーのデフォルトのロケール値に基づく、ユーザーのデフォルト LANGID
  4. システムのデフォルト ロケール値に基づく、システムのデフォルト LANGID
  5. アメリカ英語
于 2016-10-27T16:12:09.037 に答える