Windows では、リソース コンパイラと WinAPI ロード関数を使用して、文字列やその他のリソースをローカライズできます。FindResource () とLoadString () のような特殊な派生物は、ユーザーの現在のロケールに従って言語固有のリソースを自動的にロードします。FindResourceEx () を使用すると、取得するリソースの言語バージョンを手動で指定することもできます。
プログラムでこれを有効にするには、最初にプログラムを変更してリソース ファイル (.rc) 内の文字列をコンパイルし、リテラル文字列を使用する代わりに LoadString() を使用して実行時に文字列をフェッチする必要があります。次に、リソース ファイル内で、 LANGUAGE修飾子を使用して、使用するSTRINGTABLEの複数の言語バージョンをセットアップします。多言語リソースは、MSDNの複数言語リソースで説明されている検索順序に基づいて読み込まれます。
注: 単一の実行可能ファイルが必要な理由がない場合、またはアプリ内でユーザーが選択した言語を使用するようなことをしている場合は、各言語を個別の dll でコンパイルし、それらを動的にロードするよりも制御しやすく、混乱を少なくすることができます。大きな単一のリソース ファイルがあり、ロケールを動的に切り替えようとしています。
以下は、複数言語の StringTable リソース ファイル (つまり、strings.rc) の例です。
#define IDS_HELLOSTR 361
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
BEGIN
IDS_HELLO, "Hello!"
END
STRINGTABLE
LANG_FRENCH, SUBLANG_NEUTRAL
BEGIN
IDS_HELLO, "Bonjour!"
END