2017-07-13 24 views
0

wpfローカリゼーション拡張を使用しようとしています。WPFLocalizationExtensionは最初のコントロール(コードビハインド)を翻訳していません

私たちのボタン/コントロールのIDはすべてコードの背後に保存されています。そのため、私はコードを翻訳して翻訳サービスを作成しています。したがって、完成した翻訳をバインドするだけです。

また、外部グループが翻訳を処理するため、私たちの翻訳は別のプロジェクトに保存されています。私の翻訳方法は以下のように設定されています。

private string Translate(string id) 
{ 
    string uiString; 

    var locExtension = new LocTextExtension 
    { 
     Key = "XXX.UI.Resources", 
     ResourceIdentifierKey = id 
    }; 

    locExtension.ResolveLocalizedValue(out uiString); 
    return uiString ?? id; 
} 

私のページが読み込まれると、ページの最初のボタンが翻訳されていないように見えます。最初のボタンは、変換された値ではなくButtun_BtnTxtとして戻されます。私はどのボタンがリストの最初のものかを交換しようとしました、そして、それは常に失敗する最初のものです。

再試行機能をいくつか入れても、まだ失敗します。 (上記のコードをwhileループに入れ、uistring == nullをチェックし、50000回再試行)

最初のページから離れて移動すると、ほかのすべてのページがうまく読み込まれます。翻訳もうまくいきます。私の人生のために、なぜそれが最初に翻訳されていないのか理解できません。

これまで誰かがこのようなことをしていたのですが、同じ問題がありましたか?


さらに見る必要があります。ロードされたアセンブリをチェックするためのコードが追加されました。最初の実行(失敗した場所)で、これがリソースの唯一のインスタンスです。

最初の試行が失敗した後、アセンブリをもう一度確認した後、以下のエントリも表示されます。

XXX.UI.Resources.resources, Version=0.0.0.0, Culture=de-DE, PublicKeyToken=null 
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=ja-JP, PublicKeyToken=null 
XXX.UI.Resources.resources, Version=0.0.0.0, Culture=zh-Hans, PublicKeyToken=null 

これらの読み込みが遅くなる理由、またはそれが問題の原因となるかどうかは考えられません。しかし、それは私が今考えることができる唯一のものです。

答えて

0

最終的にそれを理解しました。私はまだ私のxamlに次のものを持っている必要があった。

xmlns:lex="http://wpflocalizeextension.codeplex.com" 
lex:LocalizeDictionary.DesignCulture="en" 
lex:ResxLocalizationProvider.DefaultAssembly="XXX.UI.Resources" 
lex:ResxLocalizationProvider.DefaultDictionary="Resources" 

少なくとも1回は、コードなしでローカリゼーションを行っていても、ローカリゼーションは一切行われません。

最初のコントロールを翻訳していなかったのは、まずVMを通過してから、このコードが呼び出されたxamlにヒットしたためです。その後、コードビハインド翻訳が正常に機能しました。

xamlをシェルビューに移動しましたが、すべて正常です。

関連する問題