2017-03-17 15 views
4

私はUWPアプリケーションを持っています。UWPの言語を変更してもシステムの機能は変更されません言語 - アプリの再起動時のみ

と私はその場でロケールを変更する必要性を持っているので、私は言語の変更のためにこれを持っている:

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = language.FourDigitCode; 
ResourceContext.GetForViewIndependentUse().Reset(); 
ResourceContext.GetForCurrentView(); 

しかし、システムが唯一のアプリケーションのリニューアル後(切り替わりません内容言語問題があります)どうすれば修正できますか?ここで

は一例です:

enter image description here

は今、私はこのコードを実行します。

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "lv-LV"; 
ResourceContext.GetForViewIndependentUse().Reset(); 
ResourceContext.GetForCurrentView(); 

UIがローカライズされたが、システムはまだローカライズされていない残っていますます:

enter image description here

しかし、私は、アプリを再起動すると、すべてがOKです:

enter image description here

任意のアイデア私はそれを修正することができますか?

答えて

2

これは修正されていません。あなたが見たものは設計によるものです。参考備考PrimaryLanguageOverrideプロパティの:あなたはPrimaryLanguageOverrideを設定すると

、これはすぐにLanguagesプロパティに反映されています。ただし、この変更は、アプリのUIに読み込まれたリソースですぐには有効にならないことがあります。アプリケーションがそのような変更に応答するようにするには、デフォルトのリソースコンテキストのQualifierValuesプロパティをリッスンし、リソースをリロードするために必要なアクションを実行します。これらの要件は、アプリケーションで使用されるUIフレームワークによって異なる場合があります。を再起動する必要がある場合があります。

ご使用のシナリオでは、再起動が必要です。私は、あなたがアプリを再起動するように、また、ニュースアプリで使用されているようなアプリを閉じるためのボタンをユーザーに伝えるヒントを追加することをお勧めします。
アプリを終了するには、Application.Exitというメソッドを以下のように呼び出すことができます。

Application.Current.Exit(); 
+0

Jea、しかしそれはクールではないかもしれません。アプリをリロードせずにアプリやシステムの機能をローカライズする別のオプションがありますか? – Cheese

+1

@Cheese AFAIK、シナリオには他に選択肢はありません。再起動が必要です。 –

0

多分、ページの再読み込みはそれを修正できますか?同じページに再度移動してみてください。 以下の例が見つかりましたhere

//like this 
private bool Reload(object param = null) 
{ 
    var type = Frame.CurrentSourcePageType; 
    Frame.Navigate(type, param); 
    Frame.BackStack.Remove(Frame.BackStack.Last()); 
} 

// or like this 
private bool Reload(object param = null) 
{ 
    var frame = Window.Current.Content as Frame; 
    frame.Navigate(frame.CurrentSourcePageType, param); 
    frame.BackStack.Remove(frame .BackStack.Last()); 
} 
関連する問題