LocBamlメソッドを使用してWPFアプリケーションをローカライズしています。 .xamlファイルで定義されているUIはすべてうまく動作します。しかし、ローカライズする必要があるコードビハインドで生成されるいくつかの文字列があります。だから私はthisの記事でMicrosoftが推奨するアプローチを取ろうとしました。私は、次のようなXAMLリソースディクショナリファイルを持っている:XAML ResourceDictionaryを使用してWPFコードビヘイビアで文字列をローカライズ
<ResourceDictionary x:Uid="ResourceDictionary_1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<!-- String resource that can be localized -->
<system:String x:Uid="system:String_1" x:Key="localizedMessage">en-US Message</system:String>
</ResourceDictionary>
私は、リソースディクショナリのスペイン語版を含むローカライズresources.dllを生成するために、サードパーティ製のツールを使用します。私は
string localizedMessage = (string)Application.Current.Resources["localizedMessage"];
localizedMessage呼び出すしかし
は、常にDLLのEN-USバージョンで定義された値を返します。私は何かを誤解しているに違いない。文字列のローカライズ版を返すためには何が必要ですか?
アセンブリカルチャを定義しましたか? (中立のままでなければなりません)あなたのスレッドの文化はen-USか、またはローカライズされたものか(後者でなければなりません)? XAMLのリソースを参照するとどうなりますか? ( '') – Vlad
ところで、パラメータ 'x:Uid =" system:String_1 "x:Key =" localizedMessage "はAFAIKと同じでなければなりません。 – Vlad
私のAssemblyInfo.csには、[assembly:NeutralResourcesLanguageAttribute( "en-US"、UltimateResourceFallbackLocation.Satellite)]という名前があります。また、 "x:Uid =" localizedMessage "x:Key =" localizedMessage "リソースをプルするための呼び出しでブレークポイントを設定すると、スレッドの文化と養殖が両方とも "es" –