Ich versuche meine Windows Phone 8.0 App (SilverLight) zu lokalisieren. Ich möchte die Standard Appresources.resx
Datei nach Benutzerwahl ändern. Wenn der Benutzer die Sprache von der Einstellungsseite ändert, möchte ich ihn in IsolatedStorageSettings speichern und dann die Appresources
Datei der gespeicherten Sprache in der InitializeLanguage()
-Methode angeben, die in meinem Konstruktor der Klasse app.xaml.cs
aufgerufen wurde.Wie speichere ich die Sprachauswahl des Benutzers und ändere die gesamte App-Sprache in Windows Phone 8?
Ich lernte den theoretischen Prozess, aber ich bin nicht in der Lage, weiter zu gehen.
Im Folgenden sind die Code-Schnipsel zum besseren Verständnis meines Problems.
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;
}
}
Und die Einstellungsseite Code hinter dem ich zunächst die Sprache eines Textfeldes zu Testzwecken geändert, die die Sprache der TextBox
in der Laufzeit ändern.
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;
}
Es tut mir leid, wenn die Frage zu plump ist mein Ziel, zu verstehen, ich bin neu in diesem Bereich und jede Art von Hilfe oder bearbeiten Vorschlag tun wird.