エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 用の Direct3D アプリからユーザーの優先 UI 言語を決定する方法

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 のみ

このトピックでは、選択されている UI 言語を純粋なネイティブ アプリから判別する方法について説明します。Windows Phone ユーザーは電話の表示言語を選択することができます。ユーザーが電話の設定で選択している言語に基づいて、ローカライズされたコンテンツをアプリで提供することが可能です。サポートされている言語の一覧については、「Windows Phone のカルチャおよび言語サポート」を参照してください。

ローカライズされたリソース ファイルなど、管理されているアプリ で使用可能なローカライズ機能の多くは、Windows Phone Direct3D アプリ ではサポートされません。ユーザーが選択している UI 言語は、GetUserPreferredUILanguages 関数を使用して照会できます。この関数では、電話の現在の UI 言語が言語識別子の形式、または言語名の形式で返されますが、プログラミングのベスト プラクティスとして言語名の形式を使用することを推奨します。アプリで戻り値を使用して、言語ごとに異なる資産セットを読み込むことができます。

GetUserPreferredUILanguages の使用法を次のコード例に示します。アプリはこの関数を 2 回呼び出します。最初の呼び出しでは、返される言語名または ID を格納するために必要なバッファーのサイズが返されます。この関数では、デバイスで選択されている言語の数も返されますが、Windows Phone では、この値は常に 1 です。最初の呼び出しが成功すると、正しいサイズのバッファーが割り当てられ、関数の 2 番目の呼び出しに引き渡されます。その後、戻り値に基づいて、読み込むべき資産を決定できます。


	ULONG numLanguages = 0;
    DWORD cchLanguagesBuffer = 0;
    BOOL hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages, NULL, &cchLanguagesBuffer);

    if (hr) {
          WCHAR* pwszLanguagesBuffer = new WCHAR[cchLanguagesBuffer];
          hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages, pwszLanguagesBuffer, &cchLanguagesBuffer);
          if (hr) {
              if (wcsncmp(pwszLanguagesBuffer, L"en-", 3) == 0) { // any English: en-*
                  MyLoadResources(1);
              } else if (wcscmp(pwszLanguagesBuffer, L"pt-BR") == 0) { // Brazilian dialect of Portuguese
                  MyLoadResources(2);
              }
              delete pwszLanguagesBuffer;
        }
    }


この例では、最初の引数として MUI_LANGUAGE_NAME 定数を使用し、言語を名前形式で返す必要があることを指定しています。言語を ID 形式で取得するには、MUI_LANGUAGE_ID を使用します。

表示:
© 2015 Microsoft