导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何从 Windows Phone 8 的 Direct3D 应用中确定用户首选的 UI 语言

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

 

本主题介绍如何从 纯本机 应用确定首选的 UI 语言。Windows Phone 用户可以为他们的手机选择显示语言,并且应用可以根据用户在手机设置中所选的语言,选择是否提供本地化内容。有关受支持的语言的列表,请参见 Windows Phone 的区域性和语言支持

许多在托管的应用 中可用的本地化功能(包括本地化资源文件),在 Windows Phone Direct3D 应用 中并不受支持。您可以使用 GetUserPreferredUILanguages 函数查询用户首选的 UI 语言。这将以语言标识符格式,或者以语言名称格式(尽管语言名称格式是公认的最佳编程做法)返回手机的当前 UI 语言。您的应用可以使用返回的值,为不同的语言加载不同的资产集合。

下面的代码示例演示 GetUserPreferredUILanguages 的用法。您的应用将调用该函数两次。第一次调用返回包含所返回语言名称或 ID 所需缓冲区的大小(数字)。该函数也会返回设备上首选语言的数目,但在 Windows Phone 上,此值将始终为 1。如果第一次调用成功,则分配大小正确的缓冲区并将其传入该函数的第二次调用。然后,您可以根据返回的值决定要加载的资产。


	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 常量用作第一个参数,以指示应该以名称格式返回语言。使用 MUI_LANGUAGE_ID 获取语言标识符格式。

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft