ユーザー インターフェイス言語管理
多言語ユーザー インターフェイス (MUI) を使用すると、アプリケーションで 2 つの方法でユーザー インターフェイス言語を管理できます。 アプリケーションでは、オペレーティング システムの言語設定に既定で設定することで、言語管理に簡単なアプローチを使用できます。 または、ユーザーが選択できる独自の言語をアプリケーションでサポートすることもできます。 MUI API を使用すると、オペレーティング システムでサポートされ、リソース ローダーによって管理されている言語と言語リストにアプリケーションから直接アクセスすることもできます。 このトピックの残りの部分では、システムでサポートされる言語と言語フォールバック メカニズムを定義します。
オペレーティング システムによって管理される言語
システムの既定の UI 言語/インストール言語
システムの既定の UI 言語は、Windows のセットアップに使用されるローカライズされたバージョンの言語です。 ユーザーが別の言語を選択した場合を除き、すべてのメニュー、ダイアログ ボックス、エラー メッセージ、およびヘルプ ファイルは、この言語で表されます。
Windows Vista 以降では、システムの既定の UI 言語は "インストール言語" と呼ばれ、より限定的な役割を果たします。 ほとんどの目的で、システム優先 UI 言語に置き換えられます。 ただし、特定のコンテキストでは、常に完全にサポートされていることが知られている 1 つのインストール言語を使用すると便利です。
Note
PAINT、メモ帳、ワードパッド、メニュー オプションなどの Windows アプリケーションは、MUI 展開後もシステムの既定の UI 言語で表示されます。
システムの既定の UI 言語を設定するための MUI 関数はありません。 この言語を取得するために、アプリケーションは GetSystemDefaultUILanguage を呼び出すことができます。
システム UI 言語
オペレーティング システムは、システム UI 言語をユーザー インターフェイス言語として定義します。これは、コントロール パネルの地域と言語のオプション部分の [詳細設定] タブで管理者が設定できます。 現在のユーザーが特定の言語設定を行っていない場合、またはアクティブなアカウントがログインしていない場合、オペレーティング システムはこの言語を使用します。 言語は、コンピューターに複数のユーザー インターフェイス言語がインストールされている場合にのみ変更できます。
Note
言語の変更の影響を確認するには、すべてのユーザーとサービスのオペレーティング システムを再起動する必要があります。
システム UI 言語を設定するための MUI 関数はありません。 この値を取得するには、Windows Vista 以降を対象とするアプリケーションで GetSystemPreferredUILanguages を呼び出し、システム優先 UI 言語の一覧で最初の言語を取得できます。 Windows Vista より前のオペレーティング システムを対象とするアプリケーションでは GetSystemPreferredUILanguages を使用できないため、システム UI 言語が常にシステムの既定の UI 言語と同じであるという前提に基づく必要があります。
ユーザー UI 言語
ユーザー UI 言語は、メニュー、ダイアログ ボックス、ヘルプ ファイルなどに使用されるユーザー インターフェイス言語を決定します。 現在のユーザーは、コントロール パネルの地域と言語のオプションの部分の [言語] タブで設定できます。 この言語は、コンピューターに複数のユーザー インターフェイス言語がインストールされている場合にのみ変更できます。 ユーザーはログオフしてから、再度ログオンして効果を確認する必要があることに注意してください。 たとえば、多国籍企業は、すべての子会社に Windows を展開したいと考えています。 会社は、場所に関係なく、すべてのクライアントに英語バージョンの Windows をインストールするグローバル インストール ジョブを作成します。 同時に、コンピューターがメンバーになっている組織単位に応じて、特定の言語モジュールがインストールされます。 ユーザーが新しくインストールされたオペレーティング システムに初めてログオンすると、Windows はローカライズされたバージョンとして表示されます。
Windows Vista 以降では、ユーザー UI 言語は、ユーザーが優先する UI 言語の一覧の最初の言語です。 特定のリソースがこの言語で使用できない場合は、フォールバック言語を使用できることに注意してください。
Windows Vista 以前のオペレーティング システムでは、ユーザー UI 言語は通常、システムの既定の UI 言語と同じです。 ただし、Windows MUI の場合、2 つの言語が異なる場合があります。
ユーザー UI 言語を取得するために、アプリケーションは GetUserDefaultUILanguage または GetUserPreferredUILanguages を呼び出すことができます。 ユーザー UI 言語を設定する機能がないため、アプリケーションはユーザー UI 言語を変更できません。
オペレーティング システムによって管理される言語リスト
システム優先 UI 言語の一覧
リソース ローダーは、システム優先 UI 言語の一覧を保持します。 この一覧には、メニューやダイアログ、メッセージ、INF ファイル、ヘルプ ファイルなど、オペレーティング システムが独自のリソースに適した言語が含まれています。 リストは、システムの既定の UI 言語とシステム UI 言語とそのフォールバックで構成されています。 アプリケーションは、 GetSystemPreferredUILanguages を呼び出すことによって、システム優先 UI 言語を取得できます。
ユーザー優先 UI 言語リスト
リソース ローダーは、ユーザーが優先する言語を含むユーザー優先 UI 言語リストを使用します。 リソース ローダーは、特定のアプリケーション スレッドに対して、この一覧の言語に一致するリソースを使用します (使用可能な場合)。 これらの言語は、システム環境設定よりも優先されます。 ユーザーが優先する UI 言語を取得するには、アプリケーションで GetUserPreferredUILanguages を呼び出すことができます。
優先 UI 言語の一覧を処理する
Windows Vista 以降では、リソース ローダーは、MUI アプリケーションの実行中のプロセスによって設定された最大 5 つの有効な言語で構成されるプロセス優先 UI 言語リストを保持します。 言語は、 SetProcessPreferredUILanguages を呼び出してアプリケーションによって設定できます。 アプリケーションは、 GetProcessPreferredUILanguages を呼び出すことによって言語を取得できます。
スレッド優先 UI 言語の一覧
Windows Vista 以降では、リソース ローダーは、MUI アプリケーションの実行中のプロセスでスレッドによって設定された最大 5 つの有効な言語で構成されるスレッド優先 UI 言語リストを使用します。 これらの言語は、アプリケーション のユーザー インターフェイス言語をカスタマイズし、オペレーティング システムの言語と異なるようにするために使用されます。 スレッド優先 UI 言語の一覧は、ユーザーが優先する UI 言語、システム優先 UI 言語、およびシステムの既定の UI 言語に基づいています。
スレッド優先 UI 言語を設定するには、アプリケーションで SetThreadPreferredUILanguages を呼び出す必要があります。 これらの言語を取得するために、アプリケーションは GetThreadPreferredUILanguages を呼び出します。
ニュートラル言語表現
ニュートラル言語は、地域やロケールを含まない言語として単独で表されます。 たとえば、英語 (カナダ) 言語の中立的な表現である en-CA は、"en" として表されます。 ニュートラル言語はリージョンまたはロケールの側面に関連付けられていない場合でも、リソース セットに関連付けることができます。 通常、ニュートラル言語リソースは、言語の最も一般的なリージョンでの使用に基づいています。
図として、MUI アプリケーションでは、de-DE として表されるドイツ語 (スイス) と de-CH として表されるドイツ語 (オーストリア) 用のドイツ語リソースをローカライズし、ドイツ語 (ドイツ) のリソースの完全なセットをビルドするとします。 リソース ファイル全体を考慮して、このアプリケーションの決定を行う必要があります。 アプリケーションが de-DE リソースをニュートラル言語リソースとして複製する場合は、リソース ローダーにフォールバック言語を提供する必要があります。 ローダーが de-CH または de-AT 用の特定の言語固有のリソース ファイルを見つけられない場合は、言語に依存しない "de" リソースにフォールバックします。 これらのリソースは、考えられる他の唯一のフォールバックである英語 (米国) など、まったく異なる言語のリソースよりも適している可能性が最も高いです。
もう 1 つの例として、アプリケーションがベリーズ用にローカライズされない場合があります。 ただし、en-BZ として表される英語 (ベリーズ) の言語設定をサポートすると、アプリケーションは "en" リソースにフォールバックできます。
リソース ローダーでの言語フォールバック
Windows Vista 以降では、リソース ローダーによって使用される事前に順序付けされたフォールバック言語リストにユーザー インターフェイスの言語設定が配置されます。 一覧を作成するために、オペレーティング システムは次の順序で複数の言語を組み合わせています。
スレッド ユーザー インターフェイス言語とその中立的な形式で構成されるスレッド優先 UI 言語。 たとえば、フランス語 (フランス) の fr-FR と、スペイン語 (スペイン) の場合はニュートラルフォーム "fr" と es-ES、ニュートラルフォームは "es" です。
プロセス ユーザー インターフェイス言語とその中立的な形式で構成される、優先 UI 言語を処理します。 たとえば、ドイツ語 (ドイツ) とその中立形式 "de" の de-DE です。
ユーザー UI 言語とそのニュートラル フォーム。 例として、日本語 (日本) の ja-JP とその中立形式 "ja" があります。
システム UI 言語とその中立的な形式。 例として、イタリア語 (イタリア) の it-IT とその中立的な形式 "it" があります。
Note
この言語は、ユーザー UI 言語が設定されていない場合にのみフォールバック リストに含まれます。
システムの既定の UI 言語とそのニュートラル フォーム。 例として、スペイン語 (スペイン) の es-ES とそのニュートラル形式 "es" があります。
マージされたフォールバック リストを次に示します。 es-ES や es などの言語の重複は解消されることに注意してください。 この例ではユーザー UI 言語を ja-JP に設定しているため、システム UI 言語はマージされたフォールバック リストには表示されません。
fr-FR、fr、es-ES、es、de-DE、de、ja-JP、ja
MUI アプリケーションのリソースを読み込むとき、リソース ローダーは、現在実行中のアプリケーション スレッドのスレッド優先 UI 言語の一覧に一致するファイルの 1 つを選択しようとします。 選択した言語とマージされたフォールバック リスト内の最初の言語固有リソースの間で直接一致するものがリソース ローダーで見つからない場合は、許容可能なフォールバックが見つかるまで、リスト内の後続の言語がチェックされます。
リソース ローダーで必要なファイルが見つからない場合は、"保証された適切な" フォールバック言語を使用する必要があります。 MUI リソース テクノロジの場合、リソース ローダーは、指定されたリソース構成データからフォールバック言語を決定します。 詳細については、「 MUI リソース管理」を参照してください。
関連トピック