21

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

では、次のようなアプリケーションをどのようにローカライズできますか。

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

4 に答える 4

11

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

于 2009-07-02T18:57:30.420 に答える
8

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

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

もちろん、このナンセンスの多くを処理するマークアップ拡張機能を作成すれば、はるかに簡単になります。 ここでこれを行っている人の例を見つけることができます。 に別の同様の解決策がありましhttp://blog.taggersoft.com/2008/07/wpf-application-localization-pattern_29.htmlたが、そのリンクは機能しなくなりました。

于 2008-09-17T20:44:39.240 に答える
0

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

于 2011-02-02T14:09:37.030 に答える
0

上記のすべてのシナリオをサポートする古い「ResX」ファイルを使用できます。WPF アプリケーションでこれを実現する方法については、次の説明を参照してください。

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

于 2009-07-02T18:45:17.200 に答える