X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Flanguage.h;h=ae5f9803d1319f29e13d3866753d00165667fcdb;hb=HEAD;hp=c9e0d7ef6f05f35cf59e596192efb40de2f72a59;hpb=0ac6a1397cf8ee19cf75f3fe893c27e9f4fc0ea5;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/language.h b/cinelerra-5.1/guicast/language.h index c9e0d7ef..ae5f9803 100644 --- a/cinelerra-5.1/guicast/language.h +++ b/cinelerra-5.1/guicast/language.h @@ -28,19 +28,17 @@ #define _(msgid) gettext(msgid) #define gettext_noop(msgid) msgid #define N_(msgid) gettext_noop(msgid) +#define _str(i)#i +#define str_(s)_str(s) // for contextual use: -// #undef MSGQUAL -// #define MSGQUAL "qual_id" +// #define MSGQUAL qual_id // C_: msgid decorated as: MSGQUAL#msg_id implicitly // D_: msgid decorated as: qual_id#msg_id explicitly // see po/xlat.sh for details - -#ifndef MSGQUAL -#define MSGQUAL 0 -#endif +// // qualifier from MSGQUAL -#define C_(msgid) ((MSGQUAL)? msgqual(MSGQUAL,msgid) : gettext(msgid)) +#define C_(msgid) msgqual(str_(MSGQUAL),msgid) // qualifier from msgid #define D_(msgid) msgtext(msgid) @@ -48,7 +46,7 @@ static inline char *msgtext(const char *msgid) { char *msgstr = gettext(msgid); if( msgstr == msgid ) { - for( char *cp=msgstr; *cp!=0; ) if( *cp++ == '#' ) return cp; + for( char *cp=msgstr; *cp!=0; ) if( *cp++ == '#' ) return gettext(cp); msgstr = (char*) msgid; } return msgstr; @@ -56,12 +54,13 @@ static inline char *msgtext(const char *msgid) static inline char *msgqual(const char *msgqual,const char *msgid) { + if( !msgqual || !*msgqual ) return gettext(msgid); char msg[strlen(msgid) + strlen(msgqual) + 2], *cp = msg; for( const char *bp=msgqual; *bp!=0; *cp++=*bp++ ); *cp++ = '#'; for( const char *bp=msgid; *bp!=0; *cp++=*bp++ ); *cp = 0; - if( (cp=gettext(msg)) == msg ) cp = (char*)msgid; + if( (cp=gettext(msg)) == msg ) cp = gettext(msgid); return cp; }