Вала, ресурсы и локализация

Как лучше всего обрабатывать ресурсы (например, изображения, файлы и т. Д.) В vala? Есть ли система управления ресурсами? А как лучше локализовать приложение? Я пришел в Vala из среды .NET, где локализация и управление ресурсами - это всего лишь кусок пирога, но теперь я полностью потерялся в Vala.

Какие-либо предложения?

Спасибо.


person Martin Macak    schedule 23.05.2012    source источник


Ответы (1)


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 и т. Д.). Единственная реальная сложность заключается в том, что вам нужно определить GETTEXT_PACKAGE на уровне C до того, как Vala включит gi18n-lib.h. Если вы компилируете исполняемый файл непосредственно из valac, вы можете просто передать -X -DGETTEXT_PACKAGE = foo. Если вы используете систему сборки, вам нужно выяснить, как добавить флаги C в эту систему сборки (для автоинструментов вы просто добавляете их в свои переменные * _CFLAGS).

После этого большая часть работы заключается в интеграции системы сборки и работает так же, как в C, что должно быть легко понять для любой системы сборки, которую вы используете (например, поиск в Google "gettext autotools" дает 161k хиты).

person nemequ    schedule 23.05.2012