glib r6882 - in trunk: . glib
- From: yairhr svn gnome org
- To: svn-commits-list gnome org
- Subject: glib r6882 - in trunk: . glib
- Date: Sun, 11 May 2008 10:34:29 +0100 (BST)
Author: yairhr
Date: Sun May 11 09:34:29 2008
New Revision: 6882
URL: http://svn.gnome.org/viewvc/glib?rev=6882&view=rev
Log:
2008-05-11 Yair Hershkovitz <yairhr gmail com>
Bug 503071 - Application direction changes to right to left even if
theres no translation.
* glib/gi18n.c: g_i18n_init() for initializing the glib i18n,
checking if a translation is available for the calling app. wrappers for
gettext, dgettext and dpgettext to check first if the application
should be translated.
* glib/gi18n.h: symbol declaration for gettext wrappers.
* glib/gi18n-lib.h: include gi18n.h instead of libintl.h.
* glib/gstrfuncs.c: moved g_dpgettext() to glib/gi18n.c.
* glib/gutils.c: use g_dgettext() instead of dgettext().
* glib/glibintl.h: include gi18n.h.
* glib.symbols: added gettext wrappers.
* glib/Makefile.am: added gi18n.c.
Added:
trunk/glib/gi18n.c
Modified:
trunk/ChangeLog
trunk/glib/Makefile.am
trunk/glib/gi18n-lib.h
trunk/glib/gi18n.h
trunk/glib/glib.symbols
trunk/glib/glibintl.h
trunk/glib/gstrfuncs.c
trunk/glib/gutils.c
Modified: trunk/glib/Makefile.am
==============================================================================
--- trunk/glib/Makefile.am (original)
+++ trunk/glib/Makefile.am Sun May 11 09:34:29 2008
@@ -164,7 +164,8 @@
gutils.c \
gdebug.h \
gprintf.c \
- gprintfint.h
+ gprintfint.h \
+ gi18n.c
EXTRA_libglib_2_0_la_SOURCES = \
giounix.c \
Modified: trunk/glib/gi18n-lib.h
==============================================================================
--- trunk/glib/gi18n-lib.h (original)
+++ trunk/glib/gi18n-lib.h Sun May 11 09:34:29 2008
@@ -21,14 +21,13 @@
#define __G_I18N_LIB_H__
#include <glib.h>
-
-#include <libintl.h>
+#include <glib/gi18n.h>
#ifndef GETTEXT_PACKAGE
#error You must define GETTEXT_PACKAGE before including gi18n-lib.h.
#endif
-#define _(String) dgettext (GETTEXT_PACKAGE, String)
+#define _(String) g_dgettext (GETTEXT_PACKAGE, String)
#define Q_(String) g_dpgettext (GETTEXT_PACKAGE, String, 0)
#define N_(String) (String)
#define C_(Context,String) g_dpgettext (GETTEXT_PACKAGE, Context "\004" String, strlen (Context) + 1)
Added: trunk/glib/gi18n.c
==============================================================================
--- (empty file)
+++ trunk/glib/gi18n.c Sun May 11 09:34:29 2008
@@ -0,0 +1,167 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1998 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GLib Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#include "gi18n.h"
+#include "galias.h"
+#include "gmessages.h"
+#include "galloca.h"
+#include "string.h"
+
+static gboolean g_should_translate = TRUE;
+
+void
+g_i18n_init (void)
+{
+ gchar *domain, *default_domain;
+
+ setlocale(LC_ALL, "");
+ domain = g_strdup(textdomain (NULL));
+ default_domain = g_strdup(textdomain (""));
+ textdomain(domain);
+
+ if (!strcmp (domain, default_domain))
+ g_warning ("textdomain() must be called before glib i18n initialization");
+
+ g_free(domain);
+ g_free(default_domain);
+
+ if (!*gettext(""))
+ {
+ g_should_translate = FALSE;
+ g_warning ("No translation is available for the requested locale.");
+ }
+}
+
+/**
+ * g_gettext:
+ * @msgid: message to translate
+ *
+ * This function is a wrapper of gettext() which does not not translate
+ * the message if the application who initialized glib i18n is not translated.
+ *
+ * Applications should normally not use this function directly,
+ * but use the _() macro for translations.
+ *
+ * Returns: The translated string
+ *
+ * Since: 2.16
+ */
+const gchar *
+g_gettext (const gchar *msgid)
+{
+ if (g_should_translate)
+ return gettext (msgid);
+ else
+ return msgid;
+}
+
+/**
+ * g_dgettext:
+ * @domain: the translation domain to use, or %NULL to use
+ * the domain set with textdomain()
+ * @msgid: message to translate
+ *
+ * This function is a wrapper of dgettext() which does not not translate
+ * the message if the application who initialized glib i18n is not translated.
+ *
+ * Applications should normally not use this function directly,
+ * but use the _() macro for translations.
+ *
+ * Returns: The translated string
+ *
+ * Since: 2.16
+ */
+const gchar *
+g_dgettext (const gchar *domain,
+ const gchar *msgid)
+{
+ if (g_should_translate)
+ return dgettext (domain, msgid);
+ else
+ return msgid;
+}
+
+/**
+ * g_dpgettext:
+ * @domain: the translation domain to use, or %NULL to use
+ * the domain set with textdomain()
+ * @msgctxtid: a combined message context and message id, separated
+ * by a \004 character
+ * @msgidoffset: the offset of the message id in @msgctxid
+ *
+ * This function is a variant of dgettext() which supports
+ * a disambiguating message context. GNU gettext uses the
+ * '\004' character to separate the message context and
+ * message id in @msgctxtid.
+ * If 0 is passed as @msgidoffset, this function will fall back to
+ * trying to use the deprecated convention of using "|" as a separation
+ * character.
+ *
+ * Applications should normally not use this function directly,
+ * but use the C_() macro for translations with context.
+ *
+ * Returns: The translated string
+ *
+ * Since: 2.16
+ */
+const gchar *
+g_dpgettext (const gchar *domain,
+ const gchar *msgctxtid,
+ gsize msgidoffset)
+{
+ const gchar *translation;
+ gchar *sep;
+
+ translation = g_dgettext (domain, msgctxtid);
+
+ if (translation == msgctxtid)
+ {
+ if (msgidoffset > 0)
+ return msgctxtid + msgidoffset;
+
+ sep = strchr (msgctxtid, '|');
+
+ if (sep)
+ {
+ /* try with '\004' instead of '|', in case
+ * xgettext -kQ_:1g was used
+ */
+ gchar *tmp = g_alloca (strlen (msgctxtid) + 1);
+ strcpy (tmp, msgctxtid);
+ tmp[sep - msgctxtid] = '\004';
+
+ translation = g_dgettext (domain, tmp);
+
+ if (translation == tmp)
+ return sep + 1;
+ }
+ }
+
+ return translation;
+}
+
+#define __G_I18N_C__
+#include "galiasdef.c"
Modified: trunk/glib/gi18n.h
==============================================================================
--- trunk/glib/gi18n.h (original)
+++ trunk/glib/gi18n.h Sun May 11 09:34:29 2008
@@ -24,9 +24,26 @@
#include <libintl.h>
-#define _(String) gettext (String)
+#if !defined(__G_I18N_LIB_H__) && !defined(__GLIBINTL_H__)
+#define _(String) g_gettext (String)
#define Q_(String) g_dpgettext (NULL, String, 0)
#define N_(String) (String)
#define C_(Context,String) g_dpgettext (NULL, Context "\004" String, strlen (Context) + 1)
+#endif
+
+G_BEGIN_DECLS
+
+G_CONST_RETURN gchar *g_gettext (const gchar *msgid);
+
+G_CONST_RETURN gchar *g_dgettext (const gchar *domain,
+ const gchar *msgid);
+
+G_CONST_RETURN gchar *g_dpgettext (const gchar *domain,
+ const gchar *msgctxtid,
+ gsize msgidoffset);
+
+void g_i18n_init (void);
+
+G_END_DECLS
#endif /* __G_I18N_H__ */
Modified: trunk/glib/glib.symbols
==============================================================================
--- trunk/glib/glib.symbols (original)
+++ trunk/glib/glib.symbols Sun May 11 09:34:29 2008
@@ -1146,7 +1146,6 @@
#endif
g_strv_length
g_strip_context
-g_dpgettext
#endif
#endif
@@ -1583,6 +1582,14 @@
#endif
#endif
+#if IN_HEADER(__G_I18N_H__)
+#if IN_FILE(__G_I18N_C__)
+g_gettext
+g_dgettext
+g_dpgettext
+#endif
+#endif
+
#ifdef INCLUDE_VARIABLES
g_ascii_table
g_utf8_skip
Modified: trunk/glib/glibintl.h
==============================================================================
--- trunk/glib/glibintl.h (original)
+++ trunk/glib/glibintl.h Sun May 11 09:34:29 2008
@@ -1,6 +1,8 @@
#ifndef __GLIBINTL_H__
#define __GLIBINTL_H__
+#include <glib/gi18n.h>
+
#ifndef SIZEOF_CHAR
#error "config.h must be included prior to glibintl.h"
#endif
Modified: trunk/glib/gstrfuncs.c
==============================================================================
--- trunk/glib/gstrfuncs.c (original)
+++ trunk/glib/gstrfuncs.c Sun May 11 09:34:29 2008
@@ -2844,66 +2844,5 @@
return i;
}
-
-/**
- * g_dpgettext:
- * @domain: the translation domain to use, or %NULL to use
- * the domain set with textdomain()
- * @msgctxtid: a combined message context and message id, separated
- * by a \004 character
- * @msgidoffset: the offset of the message id in @msgctxid
- *
- * This function is a variant of dgettext() which supports
- * a disambiguating message context. GNU gettext uses the
- * '\004' character to separate the message context and
- * message id in @msgctxtid.
- * If 0 is passed as @msgidoffset, this function will fall back to
- * trying to use the deprecated convention of using "|" as a separation
- * character.
- *
- * Applications should normally not use this function directly,
- * but use the C_() macro for translations with context.
- *
- * Returns: The translated string
- *
- * Since: 2.16
- */
-const gchar *
-g_dpgettext (const gchar *domain,
- const gchar *msgctxtid,
- gsize msgidoffset)
-{
- const gchar *translation;
- gchar *sep;
-
- translation = dgettext (domain, msgctxtid);
-
- if (translation == msgctxtid)
- {
- if (msgidoffset > 0)
- return msgctxtid + msgidoffset;
-
- sep = strchr (msgctxtid, '|');
-
- if (sep)
- {
- /* try with '\004' instead of '|', in case
- * xgettext -kQ_:1g was used
- */
- gchar *tmp = g_alloca (strlen (msgctxtid) + 1);
- strcpy (tmp, msgctxtid);
- tmp[sep - msgctxtid] = '\004';
-
- translation = dgettext (domain, tmp);
-
- if (translation == tmp)
- return sep + 1;
- }
- }
-
- return translation;
-}
-
-
#define __G_STRFUNCS_C__
#include "galiasdef.c"
Modified: trunk/glib/gutils.c
==============================================================================
--- trunk/glib/gutils.c (original)
+++ trunk/glib/gutils.c Sun May 11 09:34:29 2008
@@ -3237,7 +3237,7 @@
_glib_gettext_initialized = TRUE;
}
- return dgettext (GETTEXT_PACKAGE, str);
+ return g_dgettext (GETTEXT_PACKAGE, str);
}
#ifdef G_OS_WIN32
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]