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