2

在vala中處理資源(如圖像,文件等)的最佳方式是什麼?有沒有資源管理系統?什麼是本地化應用程序的最佳方式?我從.NET環境來到Vala,本地化和資源管理只是小菜一碟,但現在我完全失去了Vala。Vala,資源和本地化

有什麼建議嗎?

謝謝。

回答

9

GIO 2.32引入GResource。瓦拉文檔在http://valadoc.org/#!api=gio-2.0/GLib.Resource和C爲http://developer.gnome.org/gio/stable/gio-GResource.html

爲GResource的想法是,你用glib-compile-resources創建的C代碼,然後將其包含在您的應用程序瓦拉(你可能會想創建一個普通的VAPI去用它)。我還沒有意識到Vala中的任何例子(glib 2.32剛剛發佈),但它應該是非常簡單的。

傳統上,Linux上的軟件僅將資源保存在XDG目錄中的單獨文件中。然後根據硬編碼值和/或環境變量確定路徑...... GLib甚至包含使這個變得簡單的函數(它們位於GLib.Environment命名空間中)。

至於i18n/l10n,我知道的大多數軟件都使用gettext。這些函數被綁定在GLib名稱空間(GLib._,GLib.dgettext,GLib.dngette等等)中。唯一真正的複雜情況是,您需要在C級before Vala includes gi18n-lib.h處定義GETTEXT_PACKAGE。如果您直接從valac編譯爲可執行文件,則只需傳遞-X -DGETTEXT_PACKAGE = foo。如果您使用的是構建系統,您需要弄清楚如何在該構建系統中添加C標誌(對於只將它們添加到* _CFLAGS變量中的自動工具)。

之後,大部分工作都在於構建系統集成,並且與C中的工作方式一樣,對於您正在使用的任何構建系統應該很容易找到(在Google中搜索「gettext autotools」例如,獲得161k點擊)。