Otherwise the i18n is used in the scripts even with NO_GETTEXT set. It is very unexpected. Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> --- Junio C Hamano, Tue, Jan 17, 2012 20:08:34 +0100: > Alex Riesen <raa.lkml@xxxxxxxxx> writes: > > Otherwise the i18n is used in the scripts even with NO_GETTEXT set. > > It is very unexpected. > > ... > > But the result of the patch looks almost unreadable. could we restructure > the script like this instead? > ... Done. I simplified the commentary on "poison" a little. Makefile | 1 + git-sh-i18n.sh | 102 +++++++++++++++++++++++++++----------------------------- 2 files changed, 50 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index a782409..d82ea6a 100644 --- a/Makefile +++ b/Makefile @@ -1887,6 +1887,7 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ -e 's|@@LOCALEDIR@@|$(localedir_SQ)|g' \ -e 's/@@NO_CURL@@/$(NO_CURL)/g' \ + -e 's/@@NO_GETTEXT@@/$(NO_GETTEXT)/g' \ -e $(BROKEN_PATH_FIX) \ $@.sh >$@+ endef diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh index b4575fb..1902fb1 100644 --- a/git-sh-i18n.sh +++ b/git-sh-i18n.sh @@ -16,61 +16,44 @@ else fi export TEXTDOMAINDIR -if test -z "$GIT_GETTEXT_POISON" +GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough +if test -n "@@NO_GETTEXT@@$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" +then + : no probing necessary +elif test -n "$GIT_GETTEXT_POISON" then - if test -z "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" && type gettext.sh >/dev/null 2>&1 - then - # This is GNU libintl's gettext.sh, we don't need to do anything - # else than setting up the environment and loading gettext.sh - GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu - export GIT_INTERNAL_GETTEXT_SH_SCHEME - - # Try to use libintl's gettext.sh, or fall back to English if we - # can't. - . gettext.sh - - elif test -z "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" && test "$(gettext -h 2>&1)" = "-h" - then - # We don't have gettext.sh, but there's a gettext binary in our - # path. This is probably Solaris or something like it which has a - # gettext implementation that isn't GNU libintl. - GIT_INTERNAL_GETTEXT_SH_SCHEME=solaris - export GIT_INTERNAL_GETTEXT_SH_SCHEME - - # Solaris has a gettext(1) but no eval_gettext(1) - eval_gettext () { - gettext "$1" | ( - export PATH $(git sh-i18n--envsubst --variables "$1"); - git sh-i18n--envsubst "$1" - ) - } - - else - # Since gettext.sh isn't available we'll have to define our own - # dummy pass-through functions. - - # Tell our tests that we don't have the real gettext.sh - GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough - export GIT_INTERNAL_GETTEXT_SH_SCHEME - - gettext () { - printf "%s" "$1" - } - - eval_gettext () { - printf "%s" "$1" | ( - export PATH $(git sh-i18n--envsubst --variables "$1"); - git sh-i18n--envsubst "$1" - ) - } - fi -else - # Emit garbage under GETTEXT_POISON=YesPlease. Unlike the C tests - # this relies on an environment variable - GIT_INTERNAL_GETTEXT_SH_SCHEME=poison - export GIT_INTERNAL_GETTEXT_SH_SCHEME +elif test -n type gettext.sh >/dev/null 2>&1 +then + # This is GNU libintl's gettext.sh, we don't need to do anything + # else than setting up the environment and loading gettext.sh + GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu +elif test "$(gettext -h 2>&1)" = "-h" +then + # We don't have gettext.sh, but there's a gettext binary in our + # path. This is probably Solaris or something like it which has a + # gettext implementation that isn't GNU libintl. + GIT_INTERNAL_GETTEXT_SH_SCHEME=solaris +fi +export GIT_INTERNAL_GETTEXT_SH_SCHEME +case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in +gnu) + # Try to use libintl's gettext.sh, or fall back to English if we + # can't. + . gettext.sh + ;; +solaris) + # Solaris has a gettext(1) but no eval_gettext(1) + eval_gettext () { + gettext "$1" | ( + export PATH $(git sh-i18n--envsubst --variables "$1"); + git sh-i18n--envsubst "$1" + ) + } + ;; +poison) + # Used in tests gettext () { printf "%s" "# GETTEXT POISON #" } @@ -78,7 +61,20 @@ else eval_gettext () { printf "%s" "# GETTEXT POISON #" } -fi + ;; +*) + gettext () { + printf "%s" "$1" + } + + eval_gettext () { + printf "%s" "$1" | ( + export PATH $(git sh-i18n--envsubst --variables "$1"); + git sh-i18n--envsubst "$1" + ) + } + ;; +esac # Git-specific wrapper functions gettextln () { -- 1.7.9.rc0.84.g0aa6c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html