 153fb49e60
			
		
	
	153fb49e60
	
	
	
		
			
			Remove the USE_PARENS_AROUND_GETTEXT_N compile-time option which was meant to catch an inadvertent mistake which is too obscure to maintain this facility. The backstory of how USE_PARENS_AROUND_GETTEXT_N came about is: When I added the N_() macro in6578483036(i18n: add no-op _() and N_() wrappers, 2011-02-22) it was defined as: #define N_(msgid) (msgid) This is non-standard C, as was noticed and fixed in642f85faab(i18n: avoid parenthesized string as array initializer, 2011-04-07). I.e. this needed to be defined as: #define N_(msgid) msgid Then ine62cd35a3e(i18n: log: mark parseopt strings for translation, 2012-08-20) when "builtin_log_usage" was marked for translation the string concatenation for passing to usage() added in1c370ea4e5(Show usage string for 'git log -h', 'git show -h' and 'git diff -h', 2009-08-06) was faithfully preserved: - "git log [<options>] [<since>..<until>] [[--] <path>...]\n" - " or: git show [options] <object>...", + N_("git log [<options>] [<since>..<until>] [[--] <path>...]\n") + N_(" or: git show [options] <object>..."), This was then fixed to be the expected array of usage strings ine66dc0cc4b(log.c: fix translation markings, 2015-01-06) rather than a string with multiple "\n"-delimited usage strings, and finally in290c8e7a3f(gettext.h: add parentheses around N_ expansion if supported, 2015-01-11) USE_PARENS_AROUND_GETTEXT_N was added to ensure this mistake didn't happen again. I think that even if this was a N_()-specific issue this USE_PARENS_AROUND_GETTEXT_N facility wouldn't be worth it, the issue would be too rare to worry about. But I also think that290c8e7a3fwhich introduced USE_PARENS_AROUND_GETTEXT_N misattributed the problem. The issue wasn't with the N_() macro added ine62cd35a3e, but that before the N_() macro existed in the codebase the initial migration to parse_options() in1c370ea4e5continued passsing in a "\n"-delimited string, when the new API it was migrating to supported and expected the passing of an array. Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2010-2011 Ævar Arnfjörð Bjarmason
 | |
|  *
 | |
|  * This is a skeleton no-op implementation of gettext for Git.
 | |
|  * You can replace it with something that uses libintl.h and wraps
 | |
|  * gettext() to try out the translations.
 | |
|  */
 | |
| 
 | |
| #ifndef GETTEXT_H
 | |
| #define GETTEXT_H
 | |
| 
 | |
| #if defined(_) || defined(Q_)
 | |
| #error "namespace conflict: '_' or 'Q_' is pre-defined?"
 | |
| #endif
 | |
| 
 | |
| #ifndef NO_GETTEXT
 | |
| #	include <libintl.h>
 | |
| #else
 | |
| #	ifdef gettext
 | |
| #		undef gettext
 | |
| #	endif
 | |
| #	define gettext(s) (s)
 | |
| #	ifdef ngettext
 | |
| #		undef ngettext
 | |
| #	endif
 | |
| #	define ngettext(s, p, n) ((n == 1) ? (s) : (p))
 | |
| #endif
 | |
| 
 | |
| #define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
 | |
| 
 | |
| #ifndef NO_GETTEXT
 | |
| void git_setup_gettext(void);
 | |
| int gettext_width(const char *s);
 | |
| #else
 | |
| static inline void git_setup_gettext(void)
 | |
| {
 | |
| }
 | |
| static inline int gettext_width(const char *s)
 | |
| {
 | |
| 	return strlen(s);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| static inline FORMAT_PRESERVING(1) const char *_(const char *msgid)
 | |
| {
 | |
| 	if (!*msgid)
 | |
| 		return "";
 | |
| 	return gettext(msgid);
 | |
| }
 | |
| 
 | |
| static inline FORMAT_PRESERVING(1) FORMAT_PRESERVING(2)
 | |
| const char *Q_(const char *msgid, const char *plu, unsigned long n)
 | |
| {
 | |
| 	return ngettext(msgid, plu, n);
 | |
| }
 | |
| 
 | |
| /* Mark msgid for translation but do not translate it. */
 | |
| #define N_(msgid) msgid
 | |
| 
 | |
| const char *get_preferred_languages(void);
 | |
| int is_utf8_locale(void);
 | |
| 
 | |
| #endif
 |