LocBAML を使用せずに WPF アプリケーションをローカライズする最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/87184

質問

WPF アプリケーションをローカライズする良い方法はないようです。MSDN は、私の XAML に以下のようなものを散らかしていると考えているようです。 x:Uidの場合は、CSV ファイルを生成してから、(サンプル コードを使用して) 新しいアセンブリを生成することが答えです。さらに悪いことに、このプロセスでは、画像、バイナリ BLOB (PDF ファイルなど)、またはコードに埋め込まれた文字列をローカライズする方法が取り上げられていません。

では、次のようなアプリケーションをローカライズするにはどうすればよいでしょうか。

  1. 複数のアセンブリが含まれています
  2. 画像やその他のバイナリ BLOB が含まれます (例:PDF ドキュメント) をローカライズする必要があります
  3. XAML にない文字列データが含まれています (例: MessageBox.Show("Hello World");)
役に立ちましたか?

解決

ここでは専門家ではありませんが、x:Uids を使用して xaml を「散りばめる」ことは、ローカライズするために必要な文字列テーブルの無意味なコードを Windows フォーム コードに「散りばめる」ことよりも悪いことではありません。

私が理解する限り、WPFアプリは依然として「文字列テーブル、画像などを含むすべてのフレームワークCLRリソース」をサポートしています。つまり、ローカライズされたリソースを持つことができます。

もちろん、この無意味な部分の多くを処理するマークアップ拡張機能を作成した場合は、はるかに簡単になります。 これを行っている人の例をここで見つけることができます。 そして 同様の解決策がもう 1 つあります。

他のヒント

利用可能な記事とコードを見てください。 ここ. 。LocBaml、カスタム マークアップ拡張機能、または添付プロパティを使用して、WPF アプリをローカライズするさまざまな方法について説明します。私の意見では、最良の解決策はマークアップ拡張機能と Resx リソースを使用することです。コードには、それを行うためのローカリゼーション フレームワークが含まれています。

前述のすべてのシナリオをサポートする古い「ResX」ファイルを使用できます。WPF アプリケーションでこれを実現する方法をここで説明します。

WPF アプリケーション フレームワーク (WAF) => ローカリゼーションサンプルを参照

Gnu GetText ユーティリティとサポート アプリケーションを試してください。します C# を生成する ResourceManager と ResourceSets に基づいたクラス、そしてもちろん、アプリケーションの他の部分 (Web ページ、ネイティブ コード、iPhone など) の翻訳を再利用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top