Commit 61c9b15f authored by Hib Eris's avatar Hib Eris

[windows] Fix localization on Windows

Fixes bgo#610548
parent 2085e3e4
......@@ -21,6 +21,9 @@
#include <glib.h>
#include <glib/gi18n-lib.h>
#ifdef G_OS_WIN32
#include <windows.h>
#endif
#include "ev-init.h"
#include "ev-backends-manager.h"
......@@ -29,6 +32,54 @@
static int ev_init_count;
#ifdef G_OS_WIN32
static HMODULE evdocument_dll = NULL;
#ifdef DLL_EXPORT
BOOL WINAPI
DllMain (HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
evdocument_dll = hinstDLL;
return TRUE;
}
#endif
#endif
static gchar *
_ev_get_locale_dir (void)
{
#ifdef G_OS_WIN32
gchar *install_dir = NULL, *locale_dir;
gchar *retval = NULL;
if (evdocument_dll != NULL)
install_dir = g_win32_get_package_installation_directory_of_module (evdocument_dll);
if (install_dir) {
locale_dir = g_build_filename (install_dir,
"share", "locale", NULL);
retval = g_win32_locale_filename_from_utf8 (locale_dir);
g_free (install_dir);
g_free (locale_dir);
}
if (retval)
return retval;
else
return g_strdup ("");
#else
return g_strdup (GNOMELOCALEDIR);
#endif
}
/**
* ev_init:
*
......@@ -49,7 +100,9 @@ ev_init (void)
return have_backends;
/* set up translation catalog */
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
gchar *tmp = _ev_get_locale_dir ();
bindtextdomain (GETTEXT_PACKAGE, tmp);
g_free (tmp);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
_ev_debug_init ();
......
......@@ -100,6 +100,33 @@ ev_previewer_load_document (const gchar *filename,
g_free (uri);
}
static gchar*
ev_previewer_get_locale_dir ()
{
#ifdef G_OS_WIN32
gchar *install_dir = NULL, *locale_dir;
gchar *retval = NULL;
install_dir =
g_win32_get_package_installation_directory_of_module (NULL);
if (install_dir) {
locale_dir = g_build_filename (install_dir,
"share", "locale", NULL);
retval = g_win32_locale_filename_from_utf8 (locale_dir);
g_free (install_dir);
g_free (locale_dir);
}
if (retval)
return retval;
else
return g_strdup ("");
#else
return g_strdup (GNOMELOCALEDIR);
#endif
}
gint
main (gint argc, gchar **argv)
{
......@@ -139,7 +166,9 @@ main (gint argc, gchar **argv)
#ifdef ENABLE_NLS
/* Initialize the i18n stuff */
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
gchar *tmp = ev_previewer_get_locale_dir ();
bindtextdomain (GETTEXT_PACKAGE, tmp);
g_free (tmp);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
......
......@@ -232,6 +232,33 @@ load_files (const char **files)
}
}
static gchar*
ev_get_locale_dir ()
{
#ifdef G_OS_WIN32
gchar *install_dir = NULL, *locale_dir;
gchar *retval = NULL;
install_dir =
g_win32_get_package_installation_directory_of_module (NULL);
if (install_dir) {
locale_dir = g_build_filename (install_dir,
"share", "locale", NULL);
retval = g_win32_locale_filename_from_utf8 (locale_dir);
g_free (install_dir);
g_free (locale_dir);
}
if (retval)
return retval;
else
return g_strdup ("");
#else
return g_strdup (GNOMELOCALEDIR);
#endif
}
int
main (int argc, char *argv[])
{
......@@ -269,7 +296,9 @@ main (int argc, char *argv[])
#ifdef ENABLE_NLS
/* Initialize the i18n stuff */
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
gchar *tmp = ev_get_locale_dir ();
bindtextdomain (GETTEXT_PACKAGE, tmp);
g_free (tmp);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment