Skip to content

Commit

Permalink
i18n: do not poison translations unless GIT_GETTEXT_POISON envvar is set
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Mar 8, 2011
1 parent bb946bb commit 3095522
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
14 changes: 14 additions & 0 deletions gettext.c
Original file line number Diff line number Diff line change
@@ -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;
}
2 changes: 1 addition & 1 deletion gettext.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 7 additions & 1 deletion t/test-lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 3095522

Please sign in to comment.