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=b03015826c22cb2c28a0d0507963c23b9c9ddcb3;hp=d241a7a169ac2adcf7d70b771fb48274256d533c;hpb=aef6e50484de6fd048b4eb2ce039684f57c80830;p=evince.git diff --git a/libdocument/ev-init.c b/libdocument/ev-init.c index d241a7a1..9bac9559 100644 --- a/libdocument/ev-init.c +++ b/libdocument/ev-init.c @@ -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 ();