Vala,资源和本地化

Mar*_*cak 3 resources localization internationalization embedded-resource vala

在vala中处理资源(如图像,文件......)的最佳方法是什么?有资源管理系统吗?什么是本地化应用程序的最佳方式?我从.NET环境来到Vala,本地化和资源管理只是小菜一碟,但我现在完全迷失在Vala中.

有什么建议?

谢谢.

nem*_*equ 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标志(对于autotools,您只需将它们添加到*_CFLAGS变量中).

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