我希望以前沒有問過,我在MSDN或這裏找不到一個簡單的解決方案。C#Windows Phone 8.1語言選擇
windows phone 8.1應用程序部署在多種語言中。 爲此,我使用Strings\en-US\Ressources.resw
中的默認語言(英語),並安裝了Multilingual App Toolkit,並在其中添加了所有其他語言。
要更改語言,我有以下代碼:
private void changeLang(string cul)
{
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul;
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
if (Frame != null)
Frame.Navigate(typeof(MainPage));
}
可以通過
changeLang("en-US");
被稱爲之後,我不得不重新啓動應用程序(不能使它工作沒有重新啓動)。
問題是我的實現。我創建了一個名爲Settings
的頁面,我希望爲用戶提供更改語言的可能性。
現在我想爲用戶提供一個ComboBox
所有我翻譯的語言。默認情況下,所選的ComboBoxItem
應顯示應用程序的當前語言(不是系統語言,因爲用戶可能已經更改了語言)。
在這裏我解決了這個問題,我希望這對其他人也是有用的。
首先,我們創建一個新的struct
:
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
然後在我們添加以下代碼的形式在OnNavigate
部分:
settings_language_cb.Items.Add(new ComboboxItem { Text = "Deutsch", Value = "de-DE" });
settings_language_cb.Items.Add(new ComboboxItem { Text = "English", Value = "en-US" });
var curLangItem = settings_language_cb.Items.SingleOrDefault(x => (x as ComboboxItem).Value.ToString() == CultureInfo.CurrentCulture.Name);
settings_language_cb.SelectedItem = curLangItem;
settings_language_cb.PlaceholderText = (curLangItem as ComboboxItem).Text;
而這一切。
https://gist.github.com/artem-zinnatullin/8062647這可能會幫助您在不重新啓動應用程序的情況下更改語言。它在我的Windows Phone 8應用程序中爲我工作。 – 2017-03-13 10:48:40