]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - include/libintl.h
test-container: Fix "unused code" warnings on HURD
[thirdparty/glibc.git] / include / libintl.h
index d15a6c0a05f00766ba7df4f1e64c73d8dcfde5c6..3d63b7abbd34521cecdfa99d6b8fc2f0310cecdf 100644 (file)
@@ -1,5 +1,8 @@
 #ifndef _LIBINTL_H
 #include <intl/libintl.h>
+
+# ifndef _ISOMAC
+
 #include <locale.h>
 
 /* Now define the internal interfaces.  */
@@ -12,10 +15,6 @@ extern char *__dcgettext (const char *__domainname,
                          const char *__msgid, int __category)
      __attribute_format_arg__ (2);
 libc_hidden_proto (__dcgettext)
-extern char *__dcgettext_internal (const char *__domainname,
-                                  const char *__msgid, int __category)
-     __attribute_format_arg__ (2)
-     attribute_hidden;
 
 extern char *__ngettext (const char *__msgid1, const char *__msgid2,
                         unsigned long int __n)
@@ -28,12 +27,6 @@ extern char *__dcngettext (const char *__domainname,
                           const char *__msgid1, const char *__msgid2,
                           unsigned long int __n, int __category)
      __attribute_format_arg__ (2) __attribute_format_arg__ (3);
-extern char *__dcngettext_internal (const char *__domainname,
-                                   const char *__msgid1,
-                                   const char *__msgid2,
-                                   unsigned long int __n, int __category)
-     __attribute_format_arg__ (2) __attribute_format_arg__ (3)
-     attribute_hidden;
 
 extern char *__textdomain (const char *__domainname);
 extern char *__bindtextdomain (const char *__domainname,
@@ -44,16 +37,33 @@ extern char *__bind_textdomain_codeset (const char *__domainname,
 extern const char _libc_intl_domainname[];
 libc_hidden_proto (_libc_intl_domainname)
 
-/* Define the macros `_' and `N_' for conveniently marking translatable
-   strings in the libc source code.  We have to make sure we get the
-   correct definitions so we undefine the macros first.  */
+/* _ marks its argument, a string literal, for translation, and
+   performs translation at run time if the LC_MESSAGES locale category
+   has been set.  The MSGID argument is extracted, added to the
+   translation database, and eventually submitted to the translation
+   team for processing.  New translations are periodically
+   incorporated into the glibc source tree as part of translation
+   updates.  */
+# undef _
+# define _(msgid) __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES)
+
+/* N_ marks its argument, a string literal, for translation, so that
+   it is extracted and added to the translation database (similar to
+   the _ macro above).  It does not translate the string at run time.
+   The first, primary use case for N_ is a context in which a string
+   literal is required, such as an initializer.  Translation will
+   happen later, for example using the __gettext function.
 
+   The second, historic, use case involves strings which may be
+   translated in a future version of the library, but cannot be
+   translated in current releases due to some technical limitation
+   (e.g., gettext not being available in the dynamic loader).  No
+   translation at run time happens in such cases.  In the future, this
+   historic usage of N_ may become deprecated.  Strings which are not
+   translated create unnecessary work for the translation team.  We
+   continue to use N_ because it helps mark translatable strings.  */
 # undef N_
 # define N_(msgid)     msgid
 
-# undef _
-/* This is defined as an optimizing macro, so use it.  */
-# define _(msgid) \
-  __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES)
-
+# endif /* !_ISOMAC */
 #endif