2

리소스 (이미지, 파일 등)를 vala로 처리하는 가장 좋은 방법은 무엇입니까? 리소스 관리 시스템이 있습니까? 그리고 응용 프로그램을 현지화하는 가장 좋은 방법은 무엇입니까? .NET 환경에서 Vala를 만나러 왔는데, 로컬 리 제이션과 리소스 관리는 단지 케이크 조각이지만, 현재 Vala에서는 완전히 사라졌습니다.Vala, 리소스 및 현지화

제안 사항?

감사합니다.

답변

9

GIO 2.32에서 GResource를 소개했습니다. 발라 문서는 http://valadoc.org/#!api=gio-2.0/GLib.Resource에 있고 C는 GResource에 대한 아이디어는 당신이 그때는 아마 갈 사소한 VAPI를 만들 수 있습니다 (귀하의 발라 응용 프로그램에 포함 할 수있는 C 코드를 생성 할 glib-compile-resources를 사용한다는 것입니다 http://developer.gnome.org/gio/stable/gio-GResource.html

에있다 그것으로). 나는 아직 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 히트를 얻는다).