i18n: do not poison translations unless GIT_GETTEXT_POISON envvar is set
Tweak the GETTEXT_POISON facility so it is activated at run time instead of compile time. If the GIT_GETTEXT_POISON environment variable is set, _(msg) will result in gibberish as before; but if the GIT_GETTEXT_POISON variable is not set, it will return the message for human-readable output. So the behavior of mistranslated and untranslated git can be compared without rebuilding git in between. For simplicity we always set the GIT_GETTEXT_POISON variable in tests. This does not affect builds without the GETTEXT_POISON compile-time option set, so non-i18n git will not be slowed down. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
bb946bba76
commit
309552295a
5
Makefile
5
Makefile
@ -217,7 +217,9 @@ all::
|
||||
# Define NO_REGEX if you have no or inferior regex support in your C library.
|
||||
#
|
||||
# Define GETTEXT_POISON if you are debugging the choice of strings marked
|
||||
# for translation. This will turn all strings that use gettext into gibberish.
|
||||
# for translation. In a GETTEXT_POISON build, you can turn all strings marked
|
||||
# for translation into gibberish by setting the GIT_GETTEXT_POISON variable
|
||||
# (to any value) in your environment.
|
||||
#
|
||||
# Define JSMIN to point to JavaScript minifier that functions as
|
||||
# a filter to have gitweb.js minified.
|
||||
@ -1374,6 +1376,7 @@ ifdef NO_SYMLINK_HEAD
|
||||
BASIC_CFLAGS += -DNO_SYMLINK_HEAD
|
||||
endif
|
||||
ifdef GETTEXT_POISON
|
||||
LIB_OBJS += gettext.o
|
||||
BASIC_CFLAGS += -DGETTEXT_POISON
|
||||
endif
|
||||
ifdef NO_STRCASESTR
|
||||
|
14
gettext.c
Normal file
14
gettext.c
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright (c) 2010 Ævar Arnfjörð Bjarmason
|
||||
*/
|
||||
|
||||
#include "git-compat-util.h"
|
||||
#include "gettext.h"
|
||||
|
||||
int use_gettext_poison(void)
|
||||
{
|
||||
static int poison_requested = -1;
|
||||
if (poison_requested == -1)
|
||||
poison_requested = getenv("GIT_GETTEXT_POISON") ? 1 : 0;
|
||||
return poison_requested;
|
||||
}
|
@ -16,7 +16,7 @@
|
||||
#define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
|
||||
|
||||
#ifdef GETTEXT_POISON
|
||||
#define use_gettext_poison() 1
|
||||
extern int use_gettext_poison(void);
|
||||
#else
|
||||
#define use_gettext_poison() 0
|
||||
#endif
|
||||
|
@ -1080,7 +1080,13 @@ test -z "$NO_PERL" && test_set_prereq PERL
|
||||
test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
||||
|
||||
# Can we rely on git's output in the C locale?
|
||||
test -z "$GETTEXT_POISON" && test_set_prereq C_LOCALE_OUTPUT
|
||||
if test -n "$GETTEXT_POISON"
|
||||
then
|
||||
GIT_GETTEXT_POISON=YesPlease
|
||||
export GIT_GETTEXT_POISON
|
||||
else
|
||||
test_set_prereq C_LOCALE_OUTPUT
|
||||
fi
|
||||
|
||||
# test whether the filesystem supports symbolic links
|
||||
ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
|
||||
|
Loading…
Reference in New Issue
Block a user