我想本地化我的Windows Phone 8.0应用程序(SilverLight)。我想在用户选择时更改默认的Appresources.resx
文件。当用户从设置页面更改语言时,我想通过IsolatedStorageSettings将其保存,然后在我的构造函数app.xaml.cs
类中调用InitializeLanguage()
方法中指示保存语言的Appresources
文件。如何保存用户的语言选择并更改windows phone 8中的整体应用程序语言?
我了解了理论过程,但我无法进一步如何处理。
以下是用于更好地理解我的问题的代码片段。
private void InitializeLanguage()
{
try
{
RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
RootFrame.FlowDirection = flow;
}
catch
{
if (Debugger.IsAttached)
{
Debugger.Break();
}
throw;
}
}
背后,我开始改变了测试目的的文本框,其改变在运行时TextBox
语言的语言这样的设置页面代码。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
ChangeLanguageCombo.Items.Add(new LanguageComboBox
{
Name = "English",
Code = "en-US"
});
ChangeLanguageCombo.Items.Add(new LanguageComboBox
{
Name = "Bangla",
Code = "bn"
});
}
public static IsolatedStorageSettings ChangedLanguage = IsolatedStorageSettings.ApplicationSettings;
private void ChangeLanguageCombo_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var languageComboBox = ChangeLanguageCombo.SelectedItem as LanguageComboBox;
ApplyChange(new CultureInfo(languageComboBox.Code.ToString()));
//now I want to save the user choice to the `IsolatedStorageSettings ChangedLanguage` and restart the app to take place the changes.
MessageBox.Show("Restart");
//after restart I want to indicate the Appresources file to the new selected one,(in InitializeLang() method) RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage); in this line
}
}
private void ApplyChange(CultureInfo culInfo)
{
Thread.CurrentThread.CurrentCulture = culInfo;
Thread.CurrentThread.CurrentUICulture = culInfo;
textBlockHello.Text = AppResources.Salutation;
}
我很抱歉,如果这个问题是太笨拙明白我的目的,我在这个领域,任何形式的帮助或编辑的建议将做新的。