MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
ではなく、言語IDにゼロを使用します。その後、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
は以下の 順にLANGIDsのためのメッセージを探します:
- 言語中立
- スレッドLANGID、スレッドのロケール値
- ユーザーのデフォルトのLANGIDに基づいて、ベースユーザーのデフォルトのロケール値で
- システムのデフォルトのロケール値に基づいて、システムのデフォルトのLANGID
- 英語英語
これはテスト用の場合は、特定の言語を自分のコンピュータにインストールすることができます。それ以外の場合は 'MAKELANGID(LANG_NEUTRAL、SUBLANG_DEFAULT)'を使うか、複雑な目標を持っていますか? –
実際には、エラー通知のメカニズムを統一したい、つまりシステムエラーコードを自分のアプリケーションで現在選択されている言語に翻訳したいと考えています。 –