[virt-tools-list] [libosinfo v5 1/4] Add translation framework

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Fri Oct 26 16:23:13 UTC 2012


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

Note that we are calling bindtextdomain() from Loader's class init.
AFAICT, its a common practice in libraries without any main _init()
function to make this call in init of the most common/useful class (e.g
gdk-pixbuf and gdbus).
---
 .gitignore                    | 15 +++++++++++++++
 Makefile.am                   | 28 +++++++++++++++++++++++++++-
 autogen.sh                    |  1 +
 configure.ac                  | 10 ++++++++++
 osinfo/Makefile.am            |  1 +
 osinfo/osinfo_loader.c        |  4 ++++
 tools/Makefile.am             |  1 +
 tools/osinfo-db-validate.c    |  7 +++++++
 tools/osinfo-detect.c         |  7 +++++++
 tools/osinfo-install-script.c |  7 +++++++
 tools/osinfo-query.c          |  7 +++++++
 11 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 po/POTFILES.in

diff --git a/.gitignore b/.gitignore
index ab30e42..4383a35 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,6 +20,9 @@ config.h.in
 config.log
 config.status
 configure
+intltool-extract.in
+intltool-merge.in
+intltool-update.in
 libtool
 m4
 stamp-h1
@@ -71,3 +74,15 @@ tools/osinfo-install-script
 tools/osinfo-install-script.exe
 tools/osinfo-install-script.1
 docs/reference/Libosinfo.types
+po/Makefile.in.in
+po/POTFILES
+po/libosinfo.pot
+po/stamp-it
+po/Makevars.template
+po/Rules-quot
+po/boldquot.sed
+po/en at boldquot.header
+po/en at quot.header
+po/insert-header.sin
+po/quot.sed
+po/remove-potcdate.sin
diff --git a/Makefile.am b/Makefile.am
index d605152..3d27bae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,18 @@
 
-SUBDIRS = osinfo test data tools docs examples
+SUBDIRS = osinfo test data tools docs po examples
+
+INTLTOOL_FILES = \
+	intltool-extract.in \
+	intltool-merge.in \
+	intltool-update.in \
+	$(NULL)
+
+DISTCLEANFILES =				\
+	intltool-extract			\
+	intltool-merge				\
+	intltool-update				\
+	po/.intltool-merge-cache		\
+	$(NULL)
 
 EXTRA_DIST = \
   COPYING.LIB \
@@ -10,8 +23,21 @@ EXTRA_DIST = \
   cfg.mk \
   GNUmakefile \
   maint.mk \
+  $(INTLTOOL_FILES) \
   $(NULL)
 
+MAINTAINERCLEANFILES =				\
+	po/Makefile.in.in			\
+	po/Makevars.template			\
+	po/Rules-quot				\
+	po/boldquot.sed				\
+	po/en at boldquot.header			\
+	po/en at quot.header			\
+	po/insert-header.sin			\
+	po/quot.sed				\
+	po/remove-potcdate.sin			\
+	$(NULL)
+
 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
 
 ACLOCAL_AMFLAGS = -I m4
diff --git a/autogen.sh b/autogen.sh
index b5997e6..3255713 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -18,3 +18,4 @@ which gnome-autogen.sh || {
 }
 
 ACLOCAL_FLAGS="$ACLOCAL_FLAGS" USE_GNOME2_MACROS=1 . gnome-autogen.sh --enable-gtk-doc "$@"
+intltoolize -f
diff --git a/configure.ac b/configure.ac
index f021fb6..8741756 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,6 +12,15 @@ LIBOSINFO_COMPILE_WARNINGS
 GNOME_MAINTAINER_MODE_DEFINES
 AM_MAINTAINER_MODE([enable])
 
+# i18 support
+IT_PROG_INTLTOOL(0.40.0)
+
+GETTEXT_PACKAGE=AC_PACKAGE_NAME
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[The name of the gettext domain])
+AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_VERSION([0.17])
+
 # Autoconf 2.61a.99 and earlier don't support linking a file only
 # in VPATH builds.  But since GNUmakefile is for maintainer use
 # only, it does not matter if we skip the link with older autoconf.
@@ -180,5 +189,6 @@ AC_CONFIG_FILES([
 	docs/Makefile
 	docs/reference/Makefile
 	examples/Makefile
+	po/Makefile.in
 ])
 AC_OUTPUT
diff --git a/osinfo/Makefile.am b/osinfo/Makefile.am
index 495d2f5..6ddb956 100644
--- a/osinfo/Makefile.am
+++ b/osinfo/Makefile.am
@@ -31,6 +31,7 @@ libosinfo_1_0_la_CFLAGS = \
 	$(GIO_CFLAGS) \
 	-DPKG_DATA_DIR='"$(pkgdatadir)"' \
 	-DSYS_CONF_DIR='"$(sysconfdir)"' \
+	-DLOCALEDIR="\"$(datadir)/locale\"" \
 	$(NULL)
 
 libosinfo_1_0_la_LDFLAGS = \
diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
index 934c758..3642a61 100644
--- a/osinfo/osinfo_loader.c
+++ b/osinfo/osinfo_loader.c
@@ -23,6 +23,7 @@
  */
 
 #include <config.h>
+#include <glib/gi18n-lib.h>
 
 #include <osinfo/osinfo.h>
 
@@ -70,6 +71,9 @@ osinfo_loader_class_init (OsinfoLoaderClass *klass)
 {
     GObjectClass *g_klass = G_OBJECT_CLASS (klass);
 
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
     g_klass->finalize = osinfo_loader_finalize;
 
     g_type_class_add_private (klass, sizeof (OsinfoLoaderPrivate));
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..e69de29
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 51e6df1..8494439 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -2,6 +2,7 @@ AM_CFLAGS = $(GOBJECT_CFLAGS) \
 	    $(GIO_CFLAGS)     \
 	    $(LIBXML_CFLAGS)  \
 	    -DPKGDATADIR="\"$(pkgdatadir)\"" \
+	    -DLOCALEDIR="\"$(datadir)/locale\"" \
 	    $(WARN_CFLAGS) \
 	    -I$(top_srcdir) \
             $(NULL)
diff --git a/tools/osinfo-db-validate.c b/tools/osinfo-db-validate.c
index 65454d7..5b7274b 100644
--- a/tools/osinfo-db-validate.c
+++ b/tools/osinfo-db-validate.c
@@ -26,6 +26,8 @@
 #include <glib.h>
 #include <gio/gio.h>
 #include <libxml/relaxng.h>
+#include <locale.h>
+#include <glib/gi18n.h>
 
 #define SCHEMA PKGDATADIR "/schemas/libosinfo.rng"
 
@@ -248,6 +250,11 @@ gint main(gint argc, gchar **argv)
     GError *error = NULL;
     gint ret = EXIT_FAILURE;
 
+    setlocale(LC_ALL, "");
+    textdomain (GETTEXT_PACKAGE);
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
     g_type_init();
 
     context = g_option_context_new("- Validate XML documents ");
diff --git a/tools/osinfo-detect.c b/tools/osinfo-detect.c
index c21ec5c..1b94e36 100644
--- a/tools/osinfo-detect.c
+++ b/tools/osinfo-detect.c
@@ -26,6 +26,8 @@
 
 #include <osinfo/osinfo.h>
 #include <string.h>
+#include <locale.h>
+#include <glib/gi18n.h>
 
 #define FORMAT_STR_PLAIN "plain"
 #define FORMAT_STR_ENV "env"
@@ -183,6 +185,11 @@ gint main(gint argc, gchar **argv)
     OsinfoOs *os = NULL;
     gint ret = 0;
 
+    setlocale(LC_ALL, "");
+    textdomain (GETTEXT_PACKAGE);
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
     context = g_option_context_new("- Detect if media is bootable " \
                                    "and the relavent OS and distribution.");
     /* FIXME: We don't have a gettext package to pass to this function. */
diff --git a/tools/osinfo-install-script.c b/tools/osinfo-install-script.c
index 52acee2..66116e1 100644
--- a/tools/osinfo-install-script.c
+++ b/tools/osinfo-install-script.c
@@ -25,6 +25,8 @@
 
 #include <osinfo/osinfo.h>
 #include <string.h>
+#include <locale.h>
+#include <glib/gi18n.h>
 
 static const gchar *profile;
 static const gchar *output_dir;
@@ -163,6 +165,11 @@ gint main(gint argc, gchar **argv)
     OsinfoOs *os = NULL;
     gint ret = 0;
 
+    setlocale(LC_ALL, "");
+    textdomain (GETTEXT_PACKAGE);
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
     g_type_init();
 
     config = osinfo_install_config_new("http://libosinfo.fedorahosted.org/config");
diff --git a/tools/osinfo-query.c b/tools/osinfo-query.c
index 69b789a..006f86d 100644
--- a/tools/osinfo-query.c
+++ b/tools/osinfo-query.c
@@ -28,6 +28,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <locale.h>
+#include <glib/gi18n.h>
 
 #include <osinfo/osinfo.h>
 
@@ -359,6 +361,11 @@ gint main(gint argc, gchar **argv)
     const gchar *sortKey = NULL;
     const gchar *fields = NULL;
 
+    setlocale(LC_ALL, "");
+    textdomain (GETTEXT_PACKAGE);
+    bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
     g_type_init();
 
     struct OsinfoType types[] = {
-- 
1.7.12.1




More information about the virt-tools-list mailing list