i18n issue with some GNOME libraries




Currently almost all GNOME 2 components expect translated strings to be
encoded in UTF-8. That's why GNOME libraries/applications call
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8") in their *_init/main
functions. The problem is that some libraries (gal, libgnomeprint,
libgnomeprintui, eel, etc.) don't have *_init functions and gettext()
returns translation converted to locale's encoding by default.
The only solution I can think of is to implement <library_name>_gettext
function in every such library:

char *
<library_name>_gettext (const char *msgid)
{
	static gboolean initialized = FALSE;

	if (!initialized) {
		bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);  
		bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
		initialized = TRUE;
	}

	return dgettext (GETTEXT_PACKAGE, msgid);
}

and then add the following lines:

#include <bonobo/bonobo-i18n.h>
#undef _
#define _(String) <library_name>_gettext (String)

to some internal header file, included from all *.c files.

Let me know if you have a better way to work around this. Otherwise, please
approve the attached patches (for libgnomeprintui and gal).


Zbigniew
diff -ruN libgnomeprintui/ChangeLog libgnomeprintui-test/ChangeLog
--- libgnomeprintui/ChangeLog	Fri Apr 19 23:47:55 2002
+++ libgnomeprintui-test/ChangeLog	Wed Apr 24 16:46:48 2002
@@ -0,0 +1,29 @@
+2002-04-24  Zbigniew Chyla  <cyba gnome pl>
+
+	i18n fixes
+
+	* libgnomeprintui/Makefile.am (libgnomeprintui_2_la_SOURCES):
+	Added gnome-print-i18n.c.
+
+	* libgnomeprintui/gnome-print-i18n.c
+	New file with libgnomeprint_gettext() function inside.
+
+	* libgnomeprintui/gnome-print-i18n.h:
+	Removed #defines cut&pasted from gnome-i18n.h/bonobo-i18n.h,
+	included <bonobo/bonobo-i18n.h> and defined _() macro as
+	libgnomeprint_gettext() function call.
+
+	* libgnomeprintui/gnome-font-dialog.c, 
+	libgnomeprintui/gnome-print-copies.c,
+	libgnomeprintui/gnome-print-dialog.c,
+	libgnomeprintui/gnome-print-master-preview.c,
+	libgnomeprintui/gnome-print-paper-selector.c,
+	libgnomeprintui/gnome-printer-dialog.c,
+	libgnomeprintui/gpaui/add-printer-dialog.c,
+	libgnomeprintui/gpaui/config-dialog.c,
+	libgnomeprintui/gpaui/media-orientation.c,
+	libgnomeprintui/gpaui/printer-selector.c,
+	libgnomeprintui/gpaui/settings-selector.c,
+	libgnomeprintui/gpaui/transport-selector.c
+	Fixed includes.
+
diff -ruN libgnomeprintui/libgnomeprintui/Makefile.am libgnomeprintui-test/libgnomeprintui/Makefile.am
--- libgnomeprintui/libgnomeprintui/Makefile.am	Thu Mar 28 20:25:00 2002
+++ libgnomeprintui-test/libgnomeprintui/Makefile.am	Wed Apr 24 16:46:48 2002
@@ -21,7 +21,7 @@
 	$(LIBGNOMEPRINTUI_LIBS)
 
 libgnomeprintui_2_la_SOURCES = \
-	gnome-print-i18n.h \
+	gnome-print-i18n.c gnome-print-i18n.h \
 	gnome-print-preview.c gnome-print-preview-private.h \
 	gnome-canvas-hacktext.c gnome-canvas-hacktext.h \
 	gnome-print-master-preview.c \
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-i18n.c libgnomeprintui-test/libgnomeprintui/gnome-print-i18n.c
--- libgnomeprintui/libgnomeprintui/gnome-print-i18n.c	Thu Jan  1 01:00:00 1970
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-i18n.c	Wed Apr 24 16:47:10 2002
@@ -0,0 +1,16 @@
+#include <config.h>
+#include "gnome-print-i18n.h"
+
+char *
+libgnomeprint_gettext (const char *msgid)
+{
+	static gboolean initialized = FALSE;
+
+	if (!initialized) {
+		bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+		bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+		initialized = TRUE;
+	}        
+
+	return dgettext (GETTEXT_PACKAGE, msgid);
+}
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-i18n.h libgnomeprintui-test/libgnomeprintui/gnome-print-i18n.h
--- libgnomeprintui/libgnomeprintui/gnome-print-i18n.h	Mon Feb 15 00:35:29 1999
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-i18n.h	Wed Apr 24 16:46:48 2002
@@ -5,26 +5,17 @@
  *
  */
 
+#ifndef __GNOME_PRINT_I18N_H__
+#define __GNOME_PRINT_I18N_H__
+
+#include <bonobo/bonobo-i18n.h>
+
 #ifdef ENABLE_NLS
-#    include <libintl.h>
 #    undef _
-#    define _(String) dgettext (PACKAGE, String)
-#    ifdef gettext_noop
-#        define N_(String) gettext_noop (String)
-#    else
-#        define N_(String) (String)
-#    endif
-#else
-/* Stubs that do something close enough.  */
-#    define textdomain(String) (String)
-#    define gettext(String) (String)
-#    define dgettext(Domain,Message) (Message)
-#    define dcgettext(Domain,Message,Type) (Message)
-#    define bindtextdomain(Domain,Directory) (Domain)
-#    define _(String) (String)
-#    define N_(String) (String)
+#    define _(String)  libgnomeprint_gettext (String)
 #endif
 
-/* This is to let the code in gnome-print blindly include gnome.h */
-#define __GNOME_I18N_H__
+char *libgnomeprint_gettext (const char *msgid);
+
+#endif /* __GNOME_PRINT_I18N_H__ */
 
diff -ruN libgnomeprintui/libgnomeprintui/gnome-font-dialog.c libgnomeprintui-test/libgnomeprintui/gnome-font-dialog.c
--- libgnomeprintui/libgnomeprintui/gnome-font-dialog.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-font-dialog.c	Wed Apr 24 16:46:48 2002
@@ -24,9 +24,7 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <string.h>
 #include <stdlib.h>
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-copies.c libgnomeprintui-test/libgnomeprintui/gnome-print-copies.c
--- libgnomeprintui/libgnomeprintui/gnome-print-copies.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-copies.c	Wed Apr 24 16:46:48 2002
@@ -24,9 +24,7 @@
 
 /* Must include these two first */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <atk/atkobject.h>
 #include <atk/atkimage.h>
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-dialog.c libgnomeprintui-test/libgnomeprintui/gnome-print-dialog.c
--- libgnomeprintui/libgnomeprintui/gnome-print-dialog.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-dialog.c	Wed Apr 24 16:46:48 2002
@@ -25,11 +25,7 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
-
-#include "gnome-print-i18n.h"
 
 #include <time.h>
 #include <atk/atkobject.h>
@@ -50,6 +46,7 @@
 
 #include <libgnomeprint/gnome-print-config.h>
 
+#include "gnome-print-i18n.h"
 #include "gnome-printer-dialog.h"
 #include "gnome-print-paper-selector.h"
 #include "gnome-print-copies.h"
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-master-preview.c libgnomeprintui-test/libgnomeprintui/gnome-print-master-preview.c
--- libgnomeprintui/libgnomeprintui/gnome-print-master-preview.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-master-preview.c	Wed Apr 24 16:46:48 2002
@@ -28,9 +28,7 @@
 
 #define noGPMP_VERBOSE
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <math.h>
 #include <libart_lgpl/art_affine.h>
@@ -51,7 +49,6 @@
 #include <libgnomeprint/gnome-print-meta.h>
 
 #include "gnome-print-i18n.h"
-
 #include "gnome-print-master-preview.h"
 #if 0
 #include "gnome-print-preview-icons.h"
diff -ruN libgnomeprintui/libgnomeprintui/gnome-print-paper-selector.c libgnomeprintui-test/libgnomeprintui/gnome-print-paper-selector.c
--- libgnomeprintui/libgnomeprintui/gnome-print-paper-selector.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-print-paper-selector.c	Wed Apr 24 16:46:48 2002
@@ -23,9 +23,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Cambridge, MA 02139, USA.
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <math.h>
 #include <libart_lgpl/art_misc.h>
diff -ruN libgnomeprintui/libgnomeprintui/gnome-printer-dialog.c libgnomeprintui-test/libgnomeprintui/gnome-printer-dialog.c
--- libgnomeprintui/libgnomeprintui/gnome-printer-dialog.c	Fri Apr 19 23:47:56 2002
+++ libgnomeprintui-test/libgnomeprintui/gnome-printer-dialog.c	Wed Apr 24 16:46:48 2002
@@ -26,9 +26,7 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include <atk/atkobject.h>
 #include <atk/atkrelationset.h>
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/add-printer-dialog.c libgnomeprintui-test/libgnomeprintui/gpaui/add-printer-dialog.c
--- libgnomeprintui/libgnomeprintui/gpaui/add-printer-dialog.c	Mon Oct 29 06:49:07 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/add-printer-dialog.c	Wed Apr 24 16:46:48 2002
@@ -13,6 +13,8 @@
  *
  */
 
+#include <config.h>
+
 #include <gtk/gtksignal.h>
 #include <gtk/gtkclist.h>
 #include <gtk/gtkcontainer.h>
@@ -25,6 +27,7 @@
 #include <gtk/gtktable.h>
 #include <libgpa/gpa-printer.h>
 #include "add-printer-dialog.h"
+#include "../gnome-print-i18n.h"
 
 #define PADDING 2
 
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/config-dialog.c libgnomeprintui-test/libgnomeprintui/gpaui/config-dialog.c
--- libgnomeprintui/libgnomeprintui/gpaui/config-dialog.c	Mon Oct 29 06:49:07 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/config-dialog.c	Wed Apr 24 16:46:48 2002
@@ -13,7 +13,8 @@
  *
  */
 
-#include <libgnomeprint/gnome-print-i18n.h>
+#include <config.h>
+
 #include <gtk/gtksignal.h>
 #include <gtk/gtkclist.h>
 #include <gtk/gtkcontainer.h>
@@ -25,6 +26,7 @@
 #include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtktable.h>
 #include "add-printer-dialog.h"
+#include "../gnome-print-i18n.h"
 
 #define PADDING 2
 
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/media-orientation.c libgnomeprintui-test/libgnomeprintui/gpaui/media-orientation.c
--- libgnomeprintui/libgnomeprintui/gpaui/media-orientation.c	Wed Dec 19 03:25:39 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/media-orientation.c	Wed Apr 24 16:46:48 2002
@@ -12,6 +12,8 @@
  *
  */
 
+#include <config.h>
+
 #include <string.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkcheckbutton.h>
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/printer-selector.c libgnomeprintui-test/libgnomeprintui/gpaui/printer-selector.c
--- libgnomeprintui/libgnomeprintui/gpaui/printer-selector.c	Fri Dec 14 05:22:27 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/printer-selector.c	Wed Apr 24 16:46:48 2002
@@ -12,6 +12,8 @@
  *
  */
 
+#include <config.h>
+
 #include <string.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkmenu.h>
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/settings-selector.c libgnomeprintui-test/libgnomeprintui/gpaui/settings-selector.c
--- libgnomeprintui/libgnomeprintui/gpaui/settings-selector.c	Wed Dec 19 03:25:39 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/settings-selector.c	Wed Apr 24 16:46:48 2002
@@ -21,6 +21,8 @@
  *
  */
 
+#include <config.h>
+
 #include <gtk/gtksignal.h>
 #include <gtk/gtkmenu.h>
 #include <gtk/gtkmenuitem.h>
diff -ruN libgnomeprintui/libgnomeprintui/gpaui/transport-selector.c libgnomeprintui-test/libgnomeprintui/gpaui/transport-selector.c
--- libgnomeprintui/libgnomeprintui/gpaui/transport-selector.c	Wed Dec 19 03:25:39 2001
+++ libgnomeprintui-test/libgnomeprintui/gpaui/transport-selector.c	Wed Apr 24 16:46:48 2002
@@ -12,6 +12,8 @@
  *
  */
 
+#include <config.h>
+
 #include <string.h>
 #include <gtk/gtksignal.h>
 #include <gtk/gtkhbox.h>
diff -ruNp gal/ChangeLog gal-test/ChangeLog
--- gal/ChangeLog	Mon Apr 15 17:12:08 2002
+++ gal-test/ChangeLog	Wed Apr 24 18:30:20 2002
@@ -0,0 +1,38 @@
+2002-04-24  Zbigniew Chyla  <cyba gnome pl>
+
+	i18n fixes
+
+	* gal/Makefile.am (libgal_2_0_la_LIBADD):
+	Removed util/e-unicode-i18n.lo.
+
+	* configure.in: Fixed GETTEXT_PACKAGE.
+
+	* gal/e-table/e-table-group-container.c (compute_text):
+	s/U_/_/
+
+	* gal/util/Makefile.am
+	(libutil_la_SOURCES): Removed e-unicode-i18n.[ch],
+	(libgalinclude_HEADERS): Moved e-i18n.h to libutil_la_SOURCES,
+	(INCLUDES): Define GNOMELOCALEDIR.
+
+	* gal/util/e-util.c:
+	Added e_gettext().
+
+	* gal/util/e-i18n.h:
+	Removed #defines cut&pasted from gnome-i18n.h/bonobo-i18n.h,
+	included <bonobo/bonobo-i18n.h> and defined _() macro as
+	e_gettext() function call.
+
+	* gal/widgets/e-categories-master-list-array.c (ecmla_default):
+	Don't use e_utf8_from_locale_string.
+
+	* gal/e-table/e-cell-text.c,
+	gal/e-table/e-table-config-field.c,
+	gal/e-table/e-table-item.c,
+	gal/e-table/e-tree.c,
+	gal/e-text/e-entry-test.c,
+	gal/widgets/e-categories.c,
+	gal/widgets/e-popup-menu.c,
+	gal/widgets/test-color.c:
+	Fixed includes.
+
diff -ruNp gal/configure.in gal-test/configure.in
--- gal/configure.in	Mon Apr 15 17:12:08 2002
+++ gal-test/configure.in	Wed Apr 24 18:30:20 2002
@@ -63,7 +63,7 @@ AC_SUBST(CPPFLAGS)
 AC_SUBST(LDFLAGS)
 
 ALL_LINGUAS="az ca cs da de el en_GB es eu fi fr gl hu it ja ko lt ms nn no pl pt pt_BR ro ru sk sv ta tr uk zh_CN zh_TW"
-GETTEXT_PACKAGE=$(GAL_EPOCH)
+GETTEXT_PACKAGE=${GAL_EPOCH}
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
 AM_GLIB_GNU_GETTEXT
diff -ruNp gal/gal/Makefile.am gal-test/gal/Makefile.am
--- gal/gal/Makefile.am	Fri Feb  8 22:57:48 2002
+++ gal-test/gal/Makefile.am	Wed Apr 24 18:30:20 2002
@@ -20,7 +20,6 @@ libgal_2_0_la_LIBADD = \
 	util/e-sorter.lo				\
 	util/e-text-event-processor-emacs-like.lo	\
 	util/e-text-event-processor.lo			\
-	util/e-unicode-i18n.lo				\
 	util/e-util.lo					\
 	util/e-xml-utils.lo				\
 	\
diff -ruNp gal/gal/e-table/e-cell-text.c gal-test/gal/e-table/e-cell-text.c
--- gal/gal/e-table/e-cell-text.c	Fri Feb  8 22:57:50 2002
+++ gal-test/gal/e-table/e-cell-text.c	Wed Apr 24 18:30:20 2002
@@ -53,6 +53,7 @@
 #include "gal/util/e-text-event-processor.h"
 #include "gal/e-text/e-text.h"
 #include "gal/util/e-text-event-processor-emacs-like.h"
+#include "gal/util/e-i18n.h"
 #include "e-table-tooltip.h"
 
 #define d(x)
diff -ruNp gal/gal/e-table/e-table-config-field.c gal-test/gal/e-table/e-table-config-field.c
--- gal/gal/e-table/e-table-config-field.c	Fri Feb  8 22:57:50 2002
+++ gal-test/gal/e-table/e-table-config-field.c	Wed Apr 24 18:30:20 2002
@@ -26,6 +26,7 @@
 #include <gtk/gtk.h>
 #include <gtk/gtkbox.h>
 #include "gal/util/e-util.h"
+#include "gal/util/e-i18n.h"
 #include "e-table-config-field.h"
 
 #define PARENT_TYPE (gtk_vbox_get_type())
diff -ruNp gal/gal/e-table/e-table-group-container.c gal-test/gal/e-table/e-table-group-container.c
--- gal/gal/e-table/e-table-group-container.c	Fri Feb  8 22:57:51 2002
+++ gal-test/gal/e-table/e-table-group-container.c	Wed Apr 24 18:30:20 2002
@@ -352,14 +352,14 @@ compute_text (ETableGroupContainer *etgc
 
 	if (etgc->ecol->text) {
 		text = g_strdup_printf ((child_node->count == 1)
-					? U_("%s : %s (%d item)")
-					: U_("%s : %s (%d items)"),
+					? _("%s : %s (%d item)")
+					: _("%s : %s (%d items)"),
 					etgc->ecol->text, child_node->string,
 					(gint) child_node->count);
 	} else {
 		text = g_strdup_printf ((child_node->count == 1)
-					? U_("%s (%d item)")
-					: U_("%s (%d items)"),
+					? _("%s (%d item)")
+					: _("%s (%d items)"),
 					child_node->string,
 					(gint) child_node->count);
 	}
diff -ruNp gal/gal/e-table/e-table-item.c gal-test/gal/e-table/e-table-item.c
--- gal/gal/e-table/e-table-item.c	Fri Feb  8 22:57:51 2002
+++ gal-test/gal/e-table/e-table-item.c	Wed Apr 24 18:30:20 2002
@@ -41,6 +41,7 @@
 #include "gal/widgets/e-canvas.h"
 #include "gal/widgets/e-canvas-utils.h"
 #include "gal/util/e-util.h"
+#include "gal/util/e-i18n.h"
 #include <string.h>
 #include <stdlib.h>
 
diff -ruNp gal/gal/e-table/e-tree.c gal-test/gal/e-table/e-tree.c
--- gal/gal/e-table/e-tree.c	Sun Feb 17 17:01:22 2002
+++ gal-test/gal/e-table/e-tree.c	Wed Apr 24 18:30:20 2002
@@ -30,7 +30,7 @@
 #include <gtk/gtksignal.h>
 #include <libgnomecanvas/gnome-canvas-rect-ellipse.h>
 
-#include "gal/util/e-i18n.h"
+#include <gal/util/e-i18n.h>
 #include <gal/util/e-util.h>
 #include <gal/widgets/e-canvas.h>
 
diff -ruNp gal/gal/e-text/e-entry-test.c gal-test/gal/e-text/e-entry-test.c
--- gal/gal/e-text/e-entry-test.c	Fri Feb  8 22:57:59 2002
+++ gal-test/gal/e-text/e-entry-test.c	Wed Apr 24 18:30:20 2002
@@ -21,10 +21,11 @@
  * 02111-1307, USA.
  */
 
-#include "config.h"
+#include <config.h>
 
 #include <gnome.h>
 #include "e-entry.h"
+#include <gal/util/e-i18n.h>
 
 static void destroy_callback(GtkWidget *app, gpointer data)
 {
diff -ruNp gal/gal/util/Makefile.am gal-test/gal/util/Makefile.am
--- gal/gal/util/Makefile.am	Fri Feb  8 22:58:14 2002
+++ gal-test/gal/util/Makefile.am	Wed Apr 24 18:30:20 2002
@@ -3,7 +3,8 @@ INCLUDES =					\
 	$(GNOME_INCLUDEDIR)			\
 	$(ICONV_CFLAGS)				\
 	-I$(top_srcdir)                         \
-        -DG_LOG_DOMAIN=\"widgets\"
+	-DG_LOG_DOMAIN=\"widgets\"		\
+	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"
 
 noinst_LTLIBRARIES = libutil.la
 
@@ -13,14 +14,13 @@ noinst_LTLIBRARIES = libutil.la
 libutil_la_SOURCES =	\
 	e-bit-array.c	\
 	e-cache.c	\
+	e-i18n.h	\
 	e-iconv.h	\
 	e-iconv.c	\
 	e-sorter-array.c	\
 	e-sorter.c	\
 	e-text-event-processor-emacs-like.c	\
 	e-text-event-processor.c		\
-	e-unicode-i18n.c	\
-	e-unicode-i18n.h	\
 	e-util.c	\
 	e-xml-utils.c
 
@@ -30,7 +30,6 @@ libgalincludedir = $(includedir)/$(GAL_E
 libgalinclude_HEADERS =	\
 	e-bit-array.h	\
 	e-cache.h	\
-	e-i18n.h	\
 	e-marshal.h	\
 	e-sorter-array.h	\
 	e-sorter.h	\
diff -ruNp gal/gal/util/e-i18n.h gal-test/gal/util/e-i18n.h
--- gal/gal/util/e-i18n.h	Fri Feb  8 22:58:14 2002
+++ gal-test/gal/util/e-i18n.h	Wed Apr 24 18:30:20 2002
@@ -35,48 +35,16 @@
 #ifndef __E_I18N_H__
 #define __E_I18N_H__
 
-#include <glib.h>
+#include <bonobo/bonobo-i18n.h>
 
 G_BEGIN_DECLS
 
 #ifdef ENABLE_NLS
-#    include <libintl.h>
+	/* this function is defined in e-util.c */
+	extern char *e_gettext (const char *msgid);
 #    undef _
-#    define _(String) dgettext (PACKAGE, String)
-#    ifdef gettext_noop
-#        define N_(String) gettext_noop (String)
-#    else
-#        define N_(String) (String)
-#    endif
-#else
-/* Stubs that do something close enough.  */
-#    define textdomain(String) (String)
-#    define gettext(String) (String)
-#    define dgettext(Domain,Message) (Message)
-#    define dcgettext(Domain,Message,Type) (Message)
-#    define bindtextdomain(Domain,Directory) (Domain)
-#    define _(String) (String)
-#    define N_(String) (String)
+#    define _(String)  e_gettext (String)
 #endif
-
-/*
- * Do not remove the following define, nor do surround it with ifdefs.
- *
- * If you get any `redefined' errors, it means that you are including
- * -incorrectly- a header file provided by gnome-libs before this file.
- * To correctly solve this issue include this file before any libgnome/
- * libgnomeui headers
- */
-
-#define __GNOME_I18N_H__ 1
-
-
-/* This is copied staight out of the prototypes for gnome-i18n.h */
-const char *gnome_i18n_get_language(void);
-GList      *gnome_i18n_get_language_list (const gchar *category_name);
-void	   gnome_i18n_set_preferred_language (const char *val);
-const char *gnome_i18n_get_preferred_language (void);
-void gnome_i18n_init (void);
 
 G_END_DECLS
 
diff -ruNp gal/gal/util/e-util.c gal-test/gal/util/e-util.c
--- gal/gal/util/e-util.c	Fri Feb  8 22:58:14 2002
+++ gal-test/gal/util/e-util.c	Wed Apr 24 18:30:20 2002
@@ -23,6 +23,7 @@
 
 #include <config.h>
 #include "e-util.h"
+#include "e-i18n.h"
 
 #include <glib.h>
 #include <gtk/gtkobject.h>
@@ -1050,4 +1051,18 @@ e_strdup_append_strings (gchar *first_st
 	va_end (args2);
 
 	return buffer;
+}
+
+char *
+e_gettext (const char *msgid)
+{
+	static gboolean initialized = FALSE;
+
+	if (!initialized) {
+		bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+		bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+		initialized = TRUE;
+	}        
+
+	return dgettext (GETTEXT_PACKAGE, msgid);
 }
diff -ruNp gal/gal/widgets/e-categories-master-list-array.c gal-test/gal/widgets/e-categories-master-list-array.c
--- gal/gal/widgets/e-categories-master-list-array.c	Fri Feb  8 22:58:16 2002
+++ gal-test/gal/widgets/e-categories-master-list-array.c	Wed Apr 24 18:30:20 2002
@@ -301,9 +301,8 @@ ecmla_default (ECategoriesMasterListArra
 	ecmla->priv->categories = g_new (ECategoriesMasterListArrayItem *, BUILTIN_CATEGORY_COUNT);
 
 	for (i = 0; i < BUILTIN_CATEGORY_COUNT; i++) {
-		char *category = e_utf8_from_locale_string(_(builtin_categories[i].category));
+		char *category = _(builtin_categories[i].category);
 		ecmla->priv->categories[i] = ecmlai_new (category, builtin_categories[i].icon, NULL);
-		g_free (category);
 	}
 }
 
diff -ruNp gal/gal/widgets/e-categories.c gal-test/gal/widgets/e-categories.c
--- gal/gal/widgets/e-categories.c	Fri Feb  8 22:58:16 2002
+++ gal-test/gal/widgets/e-categories.c	Wed Apr 24 18:30:20 2002
@@ -25,7 +25,6 @@
 #include <gtk/gtk.h>
 #include "e-categories.h"
 
-#include "gal/util/e-i18n.h"
 #include <string.h>
 #include <gdk/gdkkeysyms.h>
 
diff -ruNp gal/gal/widgets/e-popup-menu.c gal-test/gal/widgets/e-popup-menu.c
--- gal/gal/widgets/e-popup-menu.c	Fri Feb  8 22:58:16 2002
+++ gal-test/gal/widgets/e-popup-menu.c	Wed Apr 24 18:30:20 2002
@@ -32,7 +32,7 @@
 #include "e-popup-menu.h"
 #include "e-gui-utils.h"
 
-#include <libgnome/gnome-i18n.h>
+#include <gal/util/e-i18n.h>
 
 #ifndef GNOME_APP_HELPER_H
 /* Copied this i18n function to use for the same purpose */
diff -ruNp gal/gal/widgets/test-color.c gal-test/gal/widgets/test-color.c
--- gal/gal/widgets/test-color.c	Fri Feb 15 06:41:22 2002
+++ gal-test/gal/widgets/test-color.c	Wed Apr 24 18:30:20 2002
@@ -20,6 +20,8 @@
  * 02111-1307, USA.
  */
 
+#include <config.h>
+#include <gal/util/e-i18n.h>
 #include <gnome.h>
 #include "widget-color-combo.h"
 #include "color-palette.h"
diff -ruNp gal/tests/test-table-1.c gal-test/tests/test-table-1.c
--- gal/tests/test-table-1.c	Sun Feb 17 17:30:44 2002
+++ gal-test/tests/test-table-1.c	Wed Apr 24 18:30:20 2002
@@ -28,8 +28,8 @@
 #include "gal/widgets/e-cursors.h"
 #include "gal/e-table/e-table-simple.h"
 #include "gal/e-table/e-table.h"
+#include "gal/util/e-i18n.h"
 
-#include <libgnome/gnome-i18n.h>
 #include <libgnomeui/libgnomeui.h>
 
 /*


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]