| 1 | #ifndef _LIBINTL_H |
| 2 | #include <intl/libintl.h> |
| 3 | |
| 4 | # ifndef _ISOMAC |
| 5 | |
| 6 | #include <locale.h> |
| 7 | |
| 8 | /* Now define the internal interfaces. */ |
| 9 | extern char *__gettext (const char *__msgid) |
| 10 | __attribute_format_arg__ (1); |
| 11 | extern char *__dgettext (const char *__domainname, |
| 12 | const char *__msgid) |
| 13 | __attribute_format_arg__ (2); |
| 14 | extern char *__dcgettext (const char *__domainname, |
| 15 | const char *__msgid, int __category) |
| 16 | __attribute_format_arg__ (2); |
| 17 | libc_hidden_proto (__dcgettext) |
| 18 | |
| 19 | extern char *__ngettext (const char *__msgid1, const char *__msgid2, |
| 20 | unsigned long int __n) |
| 21 | __attribute_format_arg__ (1) __attribute_format_arg__ (2); |
| 22 | extern char *__dngettext (const char *__domainname, |
| 23 | const char *__msgid1, const char *__msgid2, |
| 24 | unsigned long int __n) |
| 25 | __attribute_format_arg__ (2) __attribute_format_arg__ (3); |
| 26 | extern char *__dcngettext (const char *__domainname, |
| 27 | const char *__msgid1, const char *__msgid2, |
| 28 | unsigned long int __n, int __category) |
| 29 | __attribute_format_arg__ (2) __attribute_format_arg__ (3); |
| 30 | |
| 31 | extern char *__textdomain (const char *__domainname); |
| 32 | extern char *__bindtextdomain (const char *__domainname, |
| 33 | const char *__dirname); |
| 34 | extern char *__bind_textdomain_codeset (const char *__domainname, |
| 35 | const char *__codeset); |
| 36 | |
| 37 | extern const char _libc_intl_domainname[]; |
| 38 | libc_hidden_proto (_libc_intl_domainname) |
| 39 | |
| 40 | /* _ marks its argument, a string literal, for translation, and |
| 41 | performs translation at run time if the LC_MESSAGES locale category |
| 42 | has been set. The MSGID argument is extracted, added to the |
| 43 | translation database, and eventually submitted to the translation |
| 44 | team for processing. New translations are periodically |
| 45 | incorporated into the glibc source tree as part of translation |
| 46 | updates. */ |
| 47 | # undef _ |
| 48 | # define _(msgid) __dcgettext (_libc_intl_domainname, msgid, LC_MESSAGES) |
| 49 | |
| 50 | /* N_ marks its argument, a string literal, for translation, so that |
| 51 | it is extracted and added to the translation database (similar to |
| 52 | the _ macro above). It does not translate the string at run time. |
| 53 | The first, primary use case for N_ is a context in which a string |
| 54 | literal is required, such as an initializer. Translation will |
| 55 | happen later, for example using the __gettext function. |
| 56 | |
| 57 | The second, historic, use case involves strings which may be |
| 58 | translated in a future version of the library, but cannot be |
| 59 | translated in current releases due to some technical limitation |
| 60 | (e.g., gettext not being available in the dynamic loader). No |
| 61 | translation at run time happens in such cases. In the future, this |
| 62 | historic usage of N_ may become deprecated. Strings which are not |
| 63 | translated create unnecessary work for the translation team. We |
| 64 | continue to use N_ because it helps mark translatable strings. */ |
| 65 | # undef N_ |
| 66 | # define N_(msgid) msgid |
| 67 | |
| 68 | # endif /* !_ISOMAC */ |
| 69 | #endif |
| 70 | |