@ -19,7 +19,7 @@
# ifndef _LIBGETTEXT_H
# define _LIBGETTEXT_H 1
# define _(x) gettext(x)
# define _(x) gettext(x)
# define N_(x) gettext_noop(x)
/* NLS can be disabled through the configure --disable-nls option. */
@ -30,11 +30,11 @@
textdomain ( ) , and is useful for libraries . */
# ifdef DEFAULT_TEXT_DOMAIN
# undef gettext
# define gettext(Msgid) \
dgettext ( DEFAULT_TEXT_DOMAIN , Msgid )
# define gettext(Msgid)\
dgettext ( DEFAULT_TEXT_DOMAIN , Msgid )
# undef ngettext
# define ngettext(Msgid1, Msgid2, N) \
dngettext ( DEFAULT_TEXT_DOMAIN , Msgid1 , Msgid2 , N )
# define ngettext(Msgid1, Msgid2, N)\
dngettext ( DEFAULT_TEXT_DOMAIN , Msgid1 , Msgid2 , N )
# endif
# else
@ -61,23 +61,23 @@
for invalid uses of the value returned from these functions .
On pre - ANSI systems without ' const ' , the config . h file is supposed to
contain " #define const " . */
# define gettext(Msgid) ((const char *) (Msgid))
# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
# define dcgettext(Domainname, Msgid, Category) \
( ( void ) ( Category ) , dgettext ( Domainname , Msgid ) )
# define ngettext(Msgid1, Msgid2, N) \
( ( N ) = = 1 \
? ( ( void ) ( Msgid2 ) , ( const char * ) ( Msgid1 ) ) \
: ( ( void ) ( Msgid1 ) , ( const char * ) ( Msgid2 ) ) )
# define dngettext(Domainname, Msgid1, Msgid2, N) \
( ( void ) ( Domainname ) , ngettext ( Msgid1 , Msgid2 , N ) )
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
( ( void ) ( Category ) , dngettext ( Domainname , Msgid1 , Msgid2 , N ) )
# define textdomain(Domainname) ((const char *) (Domainname))
# define bindtextdomain(Domainname, Dirname) \
( ( void ) ( Domainname ) , ( const char * ) ( Dirname ) )
# define bind_textdomain_codeset(Domainname, Codeset) \
( ( void ) ( Domainname ) , ( const char * ) ( Codeset ) )
# define gettext(Msgid) ((const char *)(Msgid))
# define dgettext(Domainname, Msgid) ((void)(Domainname), gettext (Msgid))
# define dcgettext(Domainname, Msgid, Category)\
( ( void ) ( Category ) , dgettext ( Domainname , Msgid ) )
# define ngettext(Msgid1, Msgid2, N)\
( ( N ) = = 1 \
? ( ( void ) ( Msgid2 ) , ( const char * ) ( Msgid1 ) ) \
: ( ( void ) ( Msgid1 ) , ( const char * ) ( Msgid2 ) ) )
# define dngettext(Domainname, Msgid1, Msgid2, N)\
( ( void ) ( Domainname ) , ngettext ( Msgid1 , Msgid2 , N ) )
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category)\
( ( void ) ( Category ) , dngettext ( Domainname , Msgid1 , Msgid2 , N ) )
# define textdomain(Domainname) ((const char *)(Domainname))
# define bindtextdomain(Domainname, Dirname)\
( ( void ) ( Domainname ) , ( const char * ) ( Dirname ) )
# define bind_textdomain_codeset(Domainname, Codeset)\
( ( void ) ( Domainname ) , ( const char * ) ( Codeset ) )
# endif
@ -98,27 +98,27 @@
short and rarely need to change .
The letter ' p ' stands for ' particular ' or ' special ' . */
# ifdef DEFAULT_TEXT_DOMAIN
# define pgettext(Msgctxt, Msgid) \
# define pgettext(Msgctxt, Msgid)\
pgettext_aux ( DEFAULT_TEXT_DOMAIN , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , LC_MESSAGES )
# else
# define pgettext(Msgctxt, Msgid) \
# define pgettext(Msgctxt, Msgid)\
pgettext_aux ( NULL , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , LC_MESSAGES )
# endif
# define dpgettext(Domainname, Msgctxt, Msgid) \
pgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , LC_MESSAGES )
# define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
pgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , Category )
# define dpgettext(Domainname, Msgctxt, Msgid)\
pgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , LC_MESSAGES )
# define dcpgettext(Domainname, Msgctxt, Msgid, Category)\
pgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , Category )
# ifdef DEFAULT_TEXT_DOMAIN
# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
# define npgettext(Msgctxt, Msgid, MsgidPlural, N)\
npgettext_aux ( DEFAULT_TEXT_DOMAIN , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , LC_MESSAGES )
# else
# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
# define npgettext(Msgctxt, Msgid, MsgidPlural, N)\
npgettext_aux ( NULL , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , LC_MESSAGES )
# endif
# define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
npgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , LC_MESSAGES )
# define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
npgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , Category )
# define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N)\
npgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , LC_MESSAGES )
# define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category)\
npgettext_aux ( Domainname , Msgctxt GETTEXT_CONTEXT_GLUE Msgid , Msgid , MsgidPlural , N , Category )
# ifdef __GNUC__
__inline
@ -129,14 +129,14 @@ inline
# endif
static const char *
pgettext_aux ( const char * domain ,
const char * msg_ctxt_id , const char * msgid ,
int category )
const char * msg_ctxt_id , const char * msgid ,
int category )
{
const char * translation = dcgettext ( domain , msg_ctxt_id , category ) ;
if ( translation = = msg_ctxt_id )
return msgid ;
else
return translation ;
const char * translation = dcgettext ( domain , msg_ctxt_id , category ) ;
if ( translation = = msg_ctxt_id )
return msgid ;
else
return translation ;
}
# ifdef __GNUC__
@ -148,16 +148,16 @@ inline
# endif
static const char *
npgettext_aux ( const char * domain ,
const char * msg_ctxt_id , const char * msgid ,
const char * msgid_plural , unsigned long int n ,
int category )
const char * msg_ctxt_id , const char * msgid ,
const char * msgid_plural , unsigned long int n ,
int category )
{
const char * translation =
dcngettext ( domain , msg_ctxt_id , msgid_plural , n , category ) ;
if ( translation = = msg_ctxt_id | | translation = = msgid_plural )
return ( n = = 1 ? msgid : msgid_plural ) ;
else
return translation ;
const char * translation =
dcngettext ( domain , msg_ctxt_id , msgid_plural , n , category ) ;
if ( translation = = msg_ctxt_id | | translation = = msgid_plural )
return ( n = = 1 ? msgid : msgid_plural ) ;
else
return translation ;
}
/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
@ -166,18 +166,18 @@ npgettext_aux (const char *domain,
# include <string.h>
# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
( ( ( __GNUC__ > = 3 | | __GNUG__ > = 2 ) & & ! __STRICT_ANSI__ ) \
/* || __STDC_VERSION__ >= 199901L */ )
# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS\
( ( ( __GNUC__ > = 3 | | __GNUG__ > = 2 ) & & ! __STRICT_ANSI__ ) \
/* || __STDC_VERSION__ >= 199901L */ )
# if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
# include <stdlib.h>
# endif
# define pgettext_expr(Msgctxt, Msgid) \
dcpgettext_expr ( NULL , Msgctxt , Msgid , LC_MESSAGES )
# define dpgettext_expr(Domainname, Msgctxt, Msgid) \
dcpgettext_expr ( Domainname , Msgctxt , Msgid , LC_MESSAGES )
# define pgettext_expr(Msgctxt, Msgid)\
dcpgettext_expr ( NULL , Msgctxt , Msgid , LC_MESSAGES )
# define dpgettext_expr(Domainname, Msgctxt, Msgid)\
dcpgettext_expr ( Domainname , Msgctxt , Msgid , LC_MESSAGES )
# ifdef __GNUC__
__inline
@ -188,41 +188,43 @@ inline
# endif
static const char *
dcpgettext_expr ( const char * domain ,
const char * msgctxt , const char * msgid ,
int category )
const char * msgctxt , const char * msgid ,
int category )
{
size_t msgctxt_len = strlen ( msgctxt ) + 1 ;
size_t msgid_len = strlen ( msgid ) + 1 ;
const char * translation ;
size_t msgctxt_len = strlen ( msgctxt ) + 1 ;
size_t msgid_len = strlen ( msgid ) + 1 ;
const char * translation ;
# if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
char msg_ctxt_id [ msgctxt_len + msgid_len ] ;
char msg_ctxt_id [ msgctxt_len + msgid_len ] ;
# else
char buf [ 1024 ] ;
char * msg_ctxt_id =
( msgctxt_len + msgid_len < = sizeof ( buf )
? buf
: ( char * ) malloc ( msgctxt_len + msgid_len ) ) ;
if ( msg_ctxt_id )
char buf [ 1024 ] ;
char * msg_ctxt_id =
( msgctxt_len + msgid_len < = sizeof ( buf )
? buf
: ( char * ) malloc ( msgctxt_len + msgid_len ) ) ;
if ( msg_ctxt_id )
# endif
{
{
memcpy ( msg_ctxt_id , msgctxt , msgctxt_len - 1 ) ;
msg_ctxt_id [ msgctxt_len - 1 ] = ' \004 ' ;
memcpy ( msg_ctxt_id + msgctxt_len , msgid , msgid_len ) ;
translation = dcgettext ( domain , msg_ctxt_id , category ) ;
# if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
if ( msg_ctxt_id ! = buf )
free ( msg_ctxt_id ) ;
free ( msg_ctxt_id ) ;
# endif
if ( translation ! = msg_ctxt_id )
return translation ;
}
return msgid ;
return translation ;
}
return msgid ;
}
# define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
dcnpgettext_expr ( NULL , Msgctxt , Msgid , MsgidPlural , N , LC_MESSAGES )
# define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
dcnpgettext_expr ( Domainname , Msgctxt , Msgid , MsgidPlural , N , LC_MESSAGES )
# define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N)\
dcnpgettext_expr ( NULL , Msgctxt , Msgid , MsgidPlural , N , LC_MESSAGES )
# define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N)\
dcnpgettext_expr ( Domainname , Msgctxt , Msgid , MsgidPlural , N , LC_MESSAGES )
# ifdef __GNUC__
__inline
@ -233,36 +235,38 @@ inline
# endif
static const char *
dcnpgettext_expr ( const char * domain ,
const char * msgctxt , const char * msgid ,
const char * msgid_plural , unsigned long int n ,
int category )
const char * msgctxt , const char * msgid ,
const char * msgid_plural , unsigned long int n ,
int category )
{
size_t msgctxt_len = strlen ( msgctxt ) + 1 ;
size_t msgid_len = strlen ( msgid ) + 1 ;
const char * translation ;
size_t msgctxt_len = strlen ( msgctxt ) + 1 ;
size_t msgid_len = strlen ( msgid ) + 1 ;
const char * translation ;
# if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
char msg_ctxt_id [ msgctxt_len + msgid_len ] ;
char msg_ctxt_id [ msgctxt_len + msgid_len ] ;
# else
char buf [ 1024 ] ;
char * msg_ctxt_id =
( msgctxt_len + msgid_len < = sizeof ( buf )
? buf
: ( char * ) malloc ( msgctxt_len + msgid_len ) ) ;
if ( msg_ctxt_id )
char buf [ 1024 ] ;
char * msg_ctxt_id =
( msgctxt_len + msgid_len < = sizeof ( buf )
? buf
: ( char * ) malloc ( msgctxt_len + msgid_len ) ) ;
if ( msg_ctxt_id )
# endif
{
{
memcpy ( msg_ctxt_id , msgctxt , msgctxt_len - 1 ) ;
msg_ctxt_id [ msgctxt_len - 1 ] = ' \004 ' ;
memcpy ( msg_ctxt_id + msgctxt_len , msgid , msgid_len ) ;
translation = dcngettext ( domain , msg_ctxt_id , msgid_plural , n , category ) ;
# if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
if ( msg_ctxt_id ! = buf )
free ( msg_ctxt_id ) ;
free ( msg_ctxt_id ) ;
# endif
if ( ! ( translation = = msg_ctxt_id | | translation = = msgid_plural ) )
return translation ;
}
return ( n = = 1 ? msgid : msgid_plural ) ;
return translation ;
}
return ( n = = 1 ? msgid : msgid_plural ) ;
}
# endif /* _LIBGETTEXT_H */