3

私はWPFプロジェクトにいます。GNU gettext ライブラリを使用したい。しかし、彼らはすでに i18n 用に *.xaml と *.resx を使用していました。

*.xaml で

Text="{cmn:Locale ResourceName=MessageSymbol}"

メッセージ シンボルは *.xaml で使用されます。また、シンボルは各ロケール *.resx (例: Resources.en-US.resx) で定義されます。

しかし、この方法は私が思うほど効率的ではありません。多くの *.resx を手動で処理する必要があります。また、翻訳者は *.resx 形式を理解できません。次に、Visual Studio を持っていません。GNU gettext ではすべてのプロセスが自動化されています。だからこそ、GNU gettext を使いたいのです。

レイアウト設計に *.xaml を使うことを諦めきれません。

xamlでGNU gettextを使用するにはどうすればよいですか?

4

2 に答える 2

3

同様のケース (Silverlight でした) では、Vernacular を使用して成功しました: https://github.com/rdio/vernacular

それ自体は GNU gettextではありませんが、同じファイル形式と作業方法を使用します。つまり、翻訳者はツールを使用して.poファイルを入力および出力できます。

いくつかの例を示すために、次のように表示されC#ます。

Console.WriteLine (Catalog.GetString ("Hello, World");

多くの上書きがあります: 複数形、性別、および追加の翻訳者のコメント: https://github.com/rdio/vernacular/blob/master/Vernacular.Catalog/Vernacular/Catalog.cs

xaml では、次のようになります。

<TextBlock i18n:Catalog.Message="Hello, World!" />

Catalog.Messageこの場合、アタッチされた DependencyProperty であるため、多くのコントロール (すべての ContentControl とその他) に適用されます。

アセンブリから翻訳を抽出するために使用されるツール (抽出がソース コードで行われる gettext とは対照的に) と xaml は .po を出力します。同じツールで .resx との間で変換することもできるため、変換するファイルは 1 つ (.po) だけになります。

注: 私は時々このプロジェクトに貢献しているので、私の見解は偏っている可能性があります。

于 2013-09-03T07:44:16.093 に答える