2

私はWindows Phone 8.0アプリケーション(SilverLight)をローカライズしようとしています。ユーザーが選択したときにデフォルトのAppresources.resxファイルを変更したいと思います。ユーザーが設定ページから言語を変更すると、IsolatedStorageSettingsに保存し、保存された言語のAppresourcesファイルをInitializeLanguage()という方法で、app.xaml.csクラスのコンストラクタで呼び出された方法で指定します。どのようにユーザーの言語の選択を保存し、Windowsの電話機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; 
    } 

質問は私の目的を理解するにはあまりにも不器用である場合、私は、私はこの分野で新しいですし、ヘルプや編集の提案のいずれかの種類が行います、申し訳ありません。 App.xaml.csクラスからLocalStorageSettingsの値を取得するための

答えて

2

App.xaml.cs
string value= IsolatedStorageSettings.ApplicationSettings["userData"] as string; 

私は方法InitializeLanguage()

private void InitializeLanguage() 
{ 
    try 
    { 
     if (IsolatedStorageSettings.ApplicationSettings.Contains("selectedLang")) 
     { 
      var changedLang = IsolatedStorageSettings.ApplicationSettings["selectedLang"] as string; 
      if (changedLang != null) ApplyChange(new CultureInfo(changedLang)); 
     }    
    } 
    //rest of the part in this method remained same 
} 
private void ApplyChange(CultureInfo culInfo) 
{ 
    Thread.CurrentThread.CurrentCulture = culInfo; 
    Thread.CurrentThread.CurrentUICulture = culInfo; 
} 

そして、私の設定ページ内のtryブロックの下に次のコードを追加しましたユーザが優先言語を選択したとき:

 public static IsolatedStorageSettings ChangedLanguage = IsolatedStorageSettings.ApplicationSettings; 
     private void ChangeLanguageCombo_OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      var languageComboBox = ChangeLanguageCombo.SelectedItem as LanguageComboBox; 

      if (languageComboBox != null) 
      { 
       if (!ChangedLanguage.Contains("selectedLang")) 
       { 
        ChangedLanguage.Add("selectedLang", languageComboBox.Code.ToString()); 
       } 
       else 
       { 
        ChangedLanguage["selectedLang"] = languageComboBox.Code.ToString(); 
       } 
       ChangedLanguage.Save(); 
       MessageBox.Show("Restart"); 
      } 

     } 

アプリを再起動した後、デフォルトのAppresourcesファイルは、新しい言語のAppresourcesファイルで、IsolatedStorageSettingsに保存され、App.xaml.csページを起動するアプリケーションでは、InitializeLanguage()メソッドが呼び出されます。
これは、ユーザーが設定ページから自分のアプリの言語を変更したときに、デフォルトのAppresourcesファイルをどのように変更できるかを示したものです。

関連する問題