それらは確かに密接に関連していますが、完全に同じではありません。
Ankurによってリンクされたドキュメントによると:
LanguageID
パラメータは言語IDを指定します(Microsoft Win32値と同じ値が使用されますLANGID
)。
LANGID値は、Win32LCID値の一部を形成します。これは、LCIDのドキュメントを調べることで確認できます。
各ロケールには、一意の識別子、言語識別子と並べ替え順序識別子で構成される32ビット値があります。
したがって、2つの値は完全に互換性があるわけではありません。ソート順識別子(LCID値の他の部分)を変更することにより、すべて同じ言語を表す(つまり、同じLANGIDを持つ)複数のLCID値を作成することができます。
2つを同等として扱うことは、ほとんどの場合機能する可能性があります(これは、目視検査の結果を説明します)が、機能しない場合もあります。仮定に頼らず、ドキュメントとの一貫性とコードの堅牢性を確保するために必要な追加の作業を行うことをお勧めします。
Win32 SDKヘッダーは、LCIDとLANGID間の相互変換に役立ついくつかのマクロを提供します。これらをヘッダーで検索して、C#ヘルパー関数に変換できます。ここで興味があるのは次のとおりです。
これらのヘルパー関数の1つを使用すると、LCIDパラメーターを受け入れるNLSAPIの1つを呼び出したときに有効な結果を確実に得ることができます。