From: Andrea Zagli <a.zagli@comune.scandicci.fi.it>
Date: Tue, 2 Aug 2011 11:42:43 +0000 (+0200)
Subject: Some adjustment to make gettext able to find his translation files under windows.
X-Git-Tag: 0.4.0~11
X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=8d4f632f8e400914209e15d7d704da1085026968;p=libgtkform

Some adjustment to make gettext able to find his translation files under windows.
---

diff --git a/configure.ac b/configure.ac
index c895c60..1d3ca47 100644
--- a/configure.ac
+++ b/configure.ac
@@ -82,29 +82,29 @@ AM_CONDITIONAL(PLATFORM_WIN32, [test $platform_win32 = yes])
 
 # Output files
 AC_CONFIG_FILES([
-  libgtkform.pc
-  libgtkformui.pc
-  Makefile
-  libgtkform/Makefile
-  libgtkformui/Makefile
-  libgtkformui/test/Makefile
-  test/Makefile
-  docs/Makefile
-  docs/reference/Makefile
-  docs/reference/version.xml
-  data/Makefile
-  po/Makefile.in
+	libgtkform.pc
+	libgtkformui.pc
+	Makefile
+	libgtkform/Makefile
+	libgtkformui/Makefile
+	libgtkformui/test/Makefile
+	test/Makefile
+	docs/Makefile
+	docs/reference/Makefile
+	docs/reference/version.xml
+	data/Makefile
+	po/Makefile.in
 ])
 
 if test $GLADEUI_FOUND = yes; then
 AC_CONFIG_FILES([
-  libgtkformui/glade/Makefile
-  libgtkformui/glade/icons/Makefile
-  libgtkformui/glade/icons/hicolor/Makefile
-  libgtkformui/glade/icons/hicolor/16x16/Makefile
-  libgtkformui/glade/icons/hicolor/16x16/actions/Makefile
-  libgtkformui/glade/icons/hicolor/22x22/Makefile
-  libgtkformui/glade/icons/hicolor/22x22/actions/Makefile
+	libgtkformui/glade/Makefile
+	libgtkformui/glade/icons/Makefile
+	libgtkformui/glade/icons/hicolor/Makefile
+	libgtkformui/glade/icons/hicolor/16x16/Makefile
+	libgtkformui/glade/icons/hicolor/16x16/actions/Makefile
+	libgtkformui/glade/icons/hicolor/22x22/Makefile
+	libgtkformui/glade/icons/hicolor/22x22/actions/Makefile
 ])
 fi
 
diff --git a/libgtkform/form.c b/libgtkform/form.c
index 13a6acd..a98a105 100644
--- a/libgtkform/form.c
+++ b/libgtkform/form.c
@@ -182,6 +182,8 @@ GtkForm
 {
 	GtkForm *form;
 
+	gchar *localedir;
+
 	form = GTK_FORM (g_object_new (gtk_form_get_type (), NULL));
 	if (form == NULL)
 		{
@@ -190,7 +192,36 @@ GtkForm
 
 	setlocale (LC_ALL, "");
 	gda_locale_changed ();
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+
+#ifdef G_OS_WIN32
+
+	gchar *moddir;
+	gchar *p;
+
+	moddir = g_win32_get_package_installation_directory_of_module (NULL);
+
+	p = g_strrstr (moddir, g_strdup_printf ("%c", G_DIR_SEPARATOR));
+	if (p != NULL
+	    && (g_ascii_strcasecmp (p + 1, "src") == 0
+	        || g_ascii_strcasecmp (p + 1, ".libs") == 0))
+		{
+			localedir = g_strdup (LOCALEDIR);
+		}
+	else
+		{
+			localedir = g_build_filename (moddir, "share", "locale", NULL);
+		}
+
+	g_free (moddir);
+	g_free (p);
+
+#else
+
+	localedir = g_strdup (LOCALEDIR);
+
+#endif
+
+	bindtextdomain (GETTEXT_PACKAGE, localedir);
 	textdomain (GETTEXT_PACKAGE);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 
@@ -203,6 +234,8 @@ GtkForm
 			g_warning (_("Modules not supported by this operating system."));
 		}
 
+	g_free (localedir);
+
 	return form;
 }
 
diff --git a/libgtkformui/gtkformdecoder.c b/libgtkformui/gtkformdecoder.c
index 6c99c45..b9fbced 100644
--- a/libgtkformui/gtkformdecoder.c
+++ b/libgtkformui/gtkformdecoder.c
@@ -246,10 +246,42 @@ GtkWidget
 {
 	GtkWidget *w = GTK_WIDGET (g_object_new (gtk_form_decoder_get_type (), NULL));
 
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	gchar *localedir;
+
+#ifdef G_OS_WIN32
+
+	gchar *moddir;
+	gchar *p;
+
+	moddir = g_win32_get_package_installation_directory_of_module (NULL);
+
+	p = g_strrstr (moddir, g_strdup_printf ("%c", G_DIR_SEPARATOR));
+	if (p != NULL
+	    && (g_ascii_strcasecmp (p + 1, "src") == 0
+	        || g_ascii_strcasecmp (p + 1, ".libs") == 0))
+		{
+			localedir = g_strdup (LOCALEDIR);
+		}
+	else
+		{
+			localedir = g_build_filename (moddir, "share", "locale", NULL);
+		}
+
+	g_free (moddir);
+	g_free (p);
+
+#else
+
+	localedir = g_strdup (LOCALEDIR);
+
+#endif
+
+	bindtextdomain (GETTEXT_PACKAGE, localedir);
 	textdomain (GETTEXT_PACKAGE);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 
+	g_free (localedir);
+
 	return w;
 }