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>