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 标志(对于自动工具,您只需将它们添加到您的 *_CFLAGS 变量中)。

之后,大部分工作都在于构建系统集成,并且就像在 C 中一样工作,这应该很容易让您找出您正在使用的任何构建系统(例如,在 Google 搜索“gettext autotools”,得到 161k命中)。

于 2012-05-23T22:13:48.887 回答