WPFは、XAMLとRESXの2つのリソース形式を使用します。残念ながら、ほとんどすべてのベストプラクティスとここでのすべての回答は、XAMLのプレーンで単純な文字列を、複雑で保守が難しいRESX文字列への参照に置き換えることを推奨しています。
たとえば、
<TextBlock Text="Hello World"/>
次に、「ベストプラクティス」では、XAML文字列を削除し、RESXに追加して、最後にXAMLを参照に置き換えることをお勧めします。
<TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedString }}"/>
+
<data name="LocalizedString" xml:space="preserve">
<value>Hello World</value>
</data>
やめてください。RESXには、コードで使用されている文字列のみを配置してください。XAMLのすべての文字列はそのままにしておきます。RESXファイルとXAMLファイルの両方をローカライズしました。最後に、ローカライズされたRESXとXAMLを含む衛星アセンブリファイルをコンパイルします。
Visual Studioまたはlocbamlは、RESXのみをローカライズできます。テキストエディタを使用してXAMLを手動でローカライズできますが、これを行うことはお勧めしません。ローカライズされたXAMLは、元のXAMLと同一である必要があります。これは、構造が同じでなければならないことを意味します。元のXAMLとして、すべてのコンポーネント、プロパティ、およびイベントが含まれている必要があります。XAMLをローカライズする唯一の厄介な方法は、ローカリゼーションツールを使用することです。
ローカリゼーションツールを選択するときは注意が必要です。次の2つのことを実行する必要があります。
- XAMLとRESXをローカライズする
- ローカライズされたXAMLとRESXを衛星アセンブリファイルにコンパイルします。
このようなローカリゼーションツールを使用すると、ローカリゼーションがはるかに簡単になるだけでなく、ユーザーコントロールを独自のアセンブリに配置するか、それを使用するすべてのプロジェクトにリンクすることもできます。