ApplicationLanguages 類別提供開發者取得目前裝置所支援的語系,並可以透過程式動態指定 App 要使用什麼語系,以下將介紹 ApplicationLanguages 類別的相關屬性。
public static IReadOnlyList<string> ManifestLanguages { get; }
可以取得 App 目前支援的語系。
public static IReadOnlyList<string> Languages { get; }
取得目前裝置支援的語系列表,並按照使用者設定的優先順序排列,此列表會排除掉 App 所不支援的語系;假設某一台電腦上安裝的 A、B、C 三種語系,但開發者僅設定 App 支援 B、C、D 語系,呼叫 ApplicationLanguages.Languages 時將只會列出 B、C 語系 (取兩者的交集)。
public static string PrimaryLanguageOverride { get; set; }
指定 ApplicationLanguages.PrimaryLanguageOverride 可以動態指定 App 要使用的語系,預設為空字串。當指定了要使用的語系後,並不會立即更改畫面上已呈現出的字串語系 (在 build 16299 後可呼叫 CoreApplication.RequestRestartAsync 讓 App 立即重新開啟,以便確保 App 使用指定的語系)
範例
/// <summary>
/// 套用支援語言列表中的最後一個語言
/// </summary>
/// <returns></returns>
private async Task ApplyLastLanguage()
{
// 支援的語言列表
var languageList = Windows.Globalization.ApplicationLanguages.Languages.ToList();
// 套用支援語言列表中的最後一項
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = languageList.Last();
if (Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
// 若支援重開 App 功能,則立即重開 App
await Windows.ApplicationModel.Core.CoreApplication.RequestRestartAsync(string.Empty);
}
else
{
// 若不支援重開 App 功能,則關閉 App
Windows.UI.Xaml.Application.Current.Exit();
}
}
參考資料
讓 App 支援多國語系
https://docs.microsoft.com/windows/uwp/app-resources/localize-strings-ui-manifest
https://docs.microsoft.com/windows/uwp/app-resources/localize-strings-ui-manifest
ApplicationLanguages 類別的說明文件
https://docs.microsoft.com/uwp/api/windows.globalization.applicationlanguages
https://docs.microsoft.com/uwp/api/windows.globalization.applicationlanguages
呼叫 CoreApplication.RequestRestartAsync 讓 App 立即重新開啟
https://docs.microsoft.com/uwp/api/windows.applicationmodel.core.coreapplication#Windows_ApplicationModel_Core_CoreApplication_RequestRestartAsync_
https://docs.microsoft.com/uwp/api/windows.applicationmodel.core.coreapplication#Windows_ApplicationModel_Core_CoreApplication_RequestRestartAsync_