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. */
9extern char *__gettext (const char *__msgid)
10 __attribute_format_arg__ (1);
11extern char *__dgettext (const char *__domainname,
12 const char *__msgid)
13 __attribute_format_arg__ (2);
14extern char *__dcgettext (const char *__domainname,
15 const char *__msgid, int __category)
16 __attribute_format_arg__ (2);
17libc_hidden_proto (__dcgettext)
18
19extern char *__ngettext (const char *__msgid1, const char *__msgid2,
20 unsigned long int __n)
21 __attribute_format_arg__ (1) __attribute_format_arg__ (2);
22extern 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);
26extern 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
31extern char *__textdomain (const char *__domainname);
32extern char *__bindtextdomain (const char *__domainname,
33 const char *__dirname);
34extern char *__bind_textdomain_codeset (const char *__domainname,
35 const char *__codeset);
36
37extern const char _libc_intl_domainname[];
38libc_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

source code of glibc/include/libintl.h