Annotation of embedaddon/lrzsz/intl/libgettext.h, revision 1.1.1.1
1.1 misho 1: /* Message catalogs for internationalization.
2: Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
3:
4: This program is free software; you can redistribute it and/or modify
5: it under the terms of the GNU General Public License as published by
6: the Free Software Foundation; either version 2, or (at your option)
7: any later version.
8:
9: This program is distributed in the hope that it will be useful,
10: but WITHOUT ANY WARRANTY; without even the implied warranty of
11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: GNU General Public License for more details.
13:
14: You should have received a copy of the GNU General Public License
15: along with this program; if not, write to the Free Software Foundation,
16: Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
17:
18: /* Because on some systems (e.g. Solaris) we sometimes have to include
19: the systems libintl.h as well as this file we have more complex
20: include protection above. But the systems header might perhaps also
21: define _LIBINTL_H and therefore we have to protect the definition here. */
22:
23: #if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H)
24: #if !defined (_LIBINTL_H)
25: # define _LIBINTL_H 1
26: #endif
27: #define _LIBGETTEXT_H 1
28:
29: /* We define an additional symbol to signal that we use the GNU
30: implementation of gettext. */
31: #define __USE_GNU_GETTEXT 1
32:
33: #include <sys/types.h>
34:
35: #if HAVE_LOCALE_H
36: # include <locale.h>
37: #endif
38:
39:
40: #ifdef __cplusplus
41: extern "C" {
42: #endif
43:
44: /* @@ end of prolog @@ */
45:
46: #ifndef PARAMS
47: # if __STDC__
48: # define PARAMS(args) args
49: # else
50: # define PARAMS(args) ()
51: # endif
52: #endif
53:
54: #ifndef NULL
55: # if !defined __cplusplus || defined __GNUC__
56: # define NULL ((void *) 0)
57: # else
58: # define NULL (0)
59: # endif
60: #endif
61:
62: #if !HAVE_LC_MESSAGES
63: /* This value determines the behaviour of the gettext() and dgettext()
64: function. But some system does not have this defined. Define it
65: to a default value. */
66: # define LC_MESSAGES (-1)
67: #endif
68:
69:
70: /* Declarations for gettext-using-catgets interface. Derived from
71: Jim Meyering's libintl.h. */
72: struct _msg_ent
73: {
74: const char *_msg;
75: int _msg_number;
76: };
77:
78:
79: #if HAVE_CATGETS
80: /* These two variables are defined in the automatically by po-to-tbl.sed
81: generated file `cat-id-tbl.c'. */
82: extern const struct _msg_ent _msg_tbl[];
83: extern int _msg_tbl_length;
84: #endif
85:
86:
87: /* For automatical extraction of messages sometimes no real
88: translation is needed. Instead the string itself is the result. */
89: #define gettext_noop(Str) (Str)
90:
91: /* Look up MSGID in the current default message catalog for the current
92: LC_MESSAGES locale. If not found, returns MSGID itself (the default
93: text). */
94: extern char *gettext PARAMS ((const char *__msgid));
95: extern char *gettext__ PARAMS ((const char *__msgid));
96:
97: /* Look up MSGID in the DOMAINNAME message catalog for the current
98: LC_MESSAGES locale. */
99: extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
100: extern char *dgettext__ PARAMS ((const char *__domainname,
101: const char *__msgid));
102:
103: /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
104: locale. */
105: extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
106: int __category));
107: extern char *dcgettext__ PARAMS ((const char *__domainname,
108: const char *__msgid, int __category));
109:
110:
111: /* Set the current default message catalog to DOMAINNAME.
112: If DOMAINNAME is null, return the current default.
113: If DOMAINNAME is "", reset to the default of "messages". */
114: extern char *textdomain PARAMS ((const char *__domainname));
115: extern char *textdomain__ PARAMS ((const char *__domainname));
116:
117: /* Specify that the DOMAINNAME message catalog will be found
118: in DIRNAME rather than in the system locale data base. */
119: extern char *bindtextdomain PARAMS ((const char *__domainname,
120: const char *__dirname));
121: extern char *bindtextdomain__ PARAMS ((const char *__domainname,
122: const char *__dirname));
123:
124: #if ENABLE_NLS
125:
126: /* Solaris 2.3 has the gettext function but dcgettext is missing.
127: So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
128: has dcgettext. */
129: # if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
130:
131: # define gettext(Msgid) \
132: dgettext (NULL, Msgid)
133:
134: # define dgettext(Domainname, Msgid) \
135: dcgettext (Domainname, Msgid, LC_MESSAGES)
136:
137: # if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
138: /* This global variable is defined in loadmsgcat.c. We need a sign,
139: whether a new catalog was loaded, which can be associated with all
140: translations. */
141: extern int _nl_msg_cat_cntr;
142:
143: # define dcgettext(Domainname, Msgid, Category) \
144: (__extension__ \
145: ({ \
146: char *__result; \
147: if (__builtin_constant_p (Msgid)) \
148: { \
149: static char *__translation__; \
150: static int __catalog_counter__; \
151: if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
152: { \
153: __translation__ = \
154: dcgettext__ (Domainname, Msgid, Category); \
155: __catalog_counter__ = _nl_msg_cat_cntr; \
156: } \
157: __result = __translation__; \
158: } \
159: else \
160: __result = dcgettext__ (Domainname, Msgid, Category); \
161: __result; \
162: }))
163: # endif
164: # endif
165:
166: #else
167:
168: # define gettext(Msgid) (Msgid)
169: # define dgettext(Domainname, Msgid) (Msgid)
170: # define dcgettext(Domainname, Msgid, Category) (Msgid)
171: # define textdomain(Domainname) while (0) /* nothing */
172: # define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
173:
174: #endif
175:
176: /* @@ begin of epilog @@ */
177:
178: #ifdef __cplusplus
179: }
180: #endif
181:
182: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>