X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-init.c;h=9bac95596a4207b85f4f6de9d717916a0e1c5802;hb=2dd348d6fe62d96589c81379bbd01314d6442dc0;hp=34b323cf077a4d8d950484d35daac2083fd519dc;hpb=2d8aad40e1916911b773f1cfdd93c961feabf807;p=evince.git diff --git a/libdocument/ev-init.c b/libdocument/ev-init.c index 34b323cf..9bac9559 100644 --- a/libdocument/ev-init.c +++ b/libdocument/ev-init.c @@ -4,7 +4,7 @@ * * Evince is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * Evince is distributed in the hope that it will be useful, but @@ -14,12 +14,16 @@ * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include +#include +#ifdef G_OS_WIN32 +#include +#endif #include "ev-init.h" #include "ev-backends-manager.h" @@ -28,10 +32,68 @@ static int ev_init_count; +#ifdef G_OS_WIN32 + +static HMODULE evdocument_dll = NULL; +static gchar *locale_dir = NULL; + +#ifdef DLL_EXPORT +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + if (fdwReason == DLL_PROCESS_ATTACH) + evdocument_dll = hinstDLL; + + return TRUE; +} +#endif + +static const gchar * +_ev_win32_get_locale_dir (HMODULE module) +{ + if (locale_dir) + return locale_dir; + + gchar *install_dir = NULL, *utf8_locale_dir; + gchar *retval = NULL; + + if (evdocument_dll != NULL) + install_dir = + g_win32_get_package_installation_directory_of_module (module); + + if (install_dir) { + utf8_locale_dir = g_build_filename (install_dir, + "share", "locale", NULL); + + locale_dir = g_win32_locale_filename_from_utf8 (utf8_locale_dir); + + g_free (install_dir); + g_free (utf8_locale_dir); + } + + if (!locale_dir) + locale_dir = g_strdup (""); +} + +#endif + +const gchar * +ev_get_locale_dir (void) +{ +#ifdef G_OS_WIN32 + return _ev_win32_get_locale_dir (evdocument_dll); +#else + return GNOMELOCALEDIR; +#endif +} + /** * ev_init: * - * Initializes the evince document library. + * Initializes the evince document library, and binds the evince + * gettext domain. * * You must call this before calling any other function in the evince * document library. @@ -46,6 +108,10 @@ ev_init (void) if (ev_init_count++ > 0) return have_backends; + /* set up translation catalog */ + bindtextdomain (GETTEXT_PACKAGE, ev_get_locale_dir ()); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + _ev_debug_init (); _ev_file_helpers_init (); have_backends = _ev_backends_manager_init (); @@ -66,6 +132,11 @@ ev_shutdown (void) if (--ev_init_count > 0) return; +#ifdef G_OS_WIN32 + if (locale_dir != NULL) + g_free(locale_dir); +#endif + _ev_backends_manager_shutdown (); _ev_file_helpers_shutdown (); _ev_debug_shutdown ();