Index: glib/gi18n.c
===================================================================
--- glib/gi18n.c	(revision 6882)
+++ glib/gi18n.c	(working copy)
@@ -35,24 +35,28 @@
 void
 g_i18n_init (void)
 {
-  gchar *domain, *default_domain;
+  gchar *domain, *default_domain, *locale;
 
-  setlocale(LC_ALL, "");
+  locale = 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_warning ("textdomain() should be called before glib i18n initialization");
+      goto out;
+    }
 
-  g_free(domain);
-  g_free(default_domain);
-
-  if (!*gettext(""))
+  if (!*gettext("") && (!locale || strcmp(locale, "C")))
     {
       g_should_translate = FALSE;
       g_warning ("No translation is available for the requested locale.");
     }
+
+out:
+  g_free(domain);
+  g_free(default_domain);
 }
 
 /**
