3

valaでリソース(画像、ファイルなど)を処理する最良の方法は何ですか? リソース管理システムはありますか? また、アプリケーションをローカライズする最善の方法は何ですか? 私は、ローカリゼーションとリソース管理が簡単な .NET 環境から Vala に来ましたが、今では Vala で完全に迷っています。

助言がありますか?

ありがとう。

4

1 に答える 1

9

GIO 2.32 で GResource が導入されました。Vala のドキュメントはhttp://valadoc.org/#!api=gio-2.0/GLib.Resourceにあり、C はhttp://developer.gnome.org/gio/stable/gio-GResource.htmlにあります。

GResource のアイデアは、glib-compile-resourcesを使用して C コードを作成し、それを Vala アプリケーションに含めることができるというものです (おそらく、簡単な VAPI を作成して使用することをお勧めします)。私はまだ Vala の例を認識していません (glib 2.32 がリリースされたばかりです) が、かなり単純なはずです。

ただし、伝統的に Linux 上のソフトウェアは、リソースを XDG ディレクトリ内の個別のファイルに保持するだけです。パスは、ハードコードされた値および/または環境変数に基づいて決定されます... GLibには、これを簡単にする関数も含まれています(それらはGLib.Environment名前空間にあります)。

i18n/l10n に関しては、私が知っているほとんどのソフトウェアは gettext を使用しています。関数は GLib 名前空間 (GLib._、GLib.dgettext、GLib.dngettext など) にバインドされています。唯一の複雑な点は、 Vala が gi18n-lib.h をインクルードする前にC レベルで GETTEXT_PACKAGE を定義する必要があることです。valac から直接実行可能ファイルにコンパイルする場合は、-X -DGETTEXT_PACKAGE=foo を渡すだけです。ビルド システムを使用している場合は、そのビルド システム内に C フラグを追加する方法を理解する必要があります (autotool の場合は、*_CFLAGS 変数に追加するだけです)。

その後、ほとんどの作業はビルド システムの統合にあり、C と同じように機能します。使用しているビルド システムが何であれ、簡単に把握できるはずです (たとえば、Google で "gettext autotools" を検索すると、161k が得られます)。ヒット)。

于 2012-05-23T22:13:48.887 に答える