(file) Return to libgettext.h CVS log (file) (dir) Up to [RizwankCVS] / testProject / source / src / intl

  1 rizwank 1.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 rizwank 1.1 
 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 rizwank 1.1 
 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 rizwank 1.1    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 rizwank 1.1 
 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 rizwank 1.1 				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 rizwank 1.1    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 rizwank 1.1        {								      \
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 rizwank 1.1 # 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

Rizwan Kassim
Powered by
ViewCVS 0.9.2