이전에 요청하지 않았 으면하기를 바랍니다. MSDN 또는 여기에서 쉬운 해결책을 찾을 수 없습니다.C# Windows Phone 8.1 언어 선택
windows phone 8.1 응용 프로그램은 두 개 이상의 언어로 배포됩니다. 이렇게하려면 Strings\en-US\Ressources.resw
에서 기본 언어 (영어)를 사용하고 거기에 모든 언어가 추가 된 Multilingual App Toolkit이 설치되어 있어야합니다.
changeLang("en-US");
호출 할 수
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));
}
이 (가없이 작동하지 수를 다시 시작).
문제는 제 구현입니다. 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 전화 8 애플 리케이션에서 나를 위해 일했다. –