【发布时间】:2012-05-29 18:11:35
【问题描述】:
在 vala 中处理资源(如图像、文件等)的最佳方式是什么?有资源管理系统吗?本地化应用程序的最佳方式是什么?我从 .NET 环境来到 Vala,本地化和资源管理只是小菜一碟,但我现在完全迷失在 Vala 中。
有什么建议吗?
谢谢。
【问题讨论】:
标签: localization resources internationalization embedded-resource vala
在 vala 中处理资源(如图像、文件等)的最佳方式是什么?有资源管理系统吗?本地化应用程序的最佳方式是什么?我从 .NET 环境来到 Vala,本地化和资源管理只是小菜一碟,但我现在完全迷失在 Vala 中。
有什么建议吗?
谢谢。
【问题讨论】:
标签: localization resources internationalization embedded-resource vala
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 等)。唯一真正复杂的是您需要在 C 级别 before Vala includes gi18n-lib.h 定义 GETTEXT_PACKAGE。如果您直接从 valac 编译为可执行文件,您只需传递 -X -DGETTEXT_PACKAGE=foo。如果您使用的是构建系统,您需要弄清楚如何在该构建系统中添加 C 标志(对于自动工具,您只需将它们添加到您的 *_CFLAGS 变量中)。
之后,大部分工作都集中在构建系统集成中,并且就像在 C 中一样工作,这应该很容易让您找出您正在使用的构建系统(例如在 Google 中搜索“gettext autotools” ,获得 161k 次点击)。
【讨论】: