libgettext.h
上传用户:xxcykj
上传日期:2007-01-04
资源大小:727k
文件大小:6k
源码类别:

Email客户端

开发平台:

Unix_Linux

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