~ubuntu-branches/ubuntu/lucid/groundhog/lucid

« back to all changes in this revision

Viewing changes to intl/libgettext.h

  • Committer: Bazaar Package Importer
  • Author(s): Stephen M Moraco
  • Date: 2004-08-20 23:12:32 UTC
  • mfrom: (2.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20040820231232-18s0op2f9g21ag1z
Tags: 1.4-6
Update Policy Version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Message catalogs for internationalization.
2
 
   Copyright (C) 1995, 1996, 1997, 1998 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
 
#ifndef _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__ || defined __cplusplus
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) ((char *) Domainname)
172
 
# define bindtextdomain(Domainname, Dirname) ((char *) Dirname)
173
 
 
174
 
#endif
175
 
 
176
 
/* @@ begin of epilog @@ */
177
 
 
178
 
#ifdef __cplusplus
179
 
}
180
 
#endif
181
 
 
182
 
#endif