From: Alex Riesen <raa.lkml@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH] i18n: disable i18n for shell scripts if NO_GETTEXT defined
Date: Wed, 18 Jan 2012 20:54:38 +0100 [thread overview]
Message-ID: <20120118195438.GA18892@blimp.dmz> (raw)
In-Reply-To: <7vfwfervt9.fsf@alter.siamese.dyndns.org>
Otherwise the i18n is used in the scripts even with NO_GETTEXT set.
It is very unexpected.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
Junio C Hamano, Tue, Jan 17, 2012 20:08:34 +0100:
> Alex Riesen <raa.lkml@gmail.com> 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
next prev parent reply other threads:[~2012-01-18 20:00 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-17 13:42 [PATCH] i18n: disable i18n for shell scripts if NO_GETTEXT defined Alex Riesen
2012-01-17 19:08 ` Junio C Hamano
2012-01-18 14:25 ` Alex Riesen
2012-01-18 19:54 ` Alex Riesen [this message]
2012-01-19 0:12 ` Jonathan Nieder
2012-01-19 9:15 ` Alex Riesen
2012-01-18 15:22 ` Ævar Arnfjörð Bjarmason
2012-01-18 18:57 ` Alex Riesen
2012-01-18 23:18 ` Ævar Arnfjörð Bjarmason
2012-01-19 0:15 ` Jonathan Nieder
2012-01-19 0:17 ` Junio C Hamano
2012-01-19 7:13 ` Johannes Sixt
2012-01-19 18:30 ` Junio C Hamano
2012-01-20 9:50 ` Ævar Arnfjörð Bjarmason
2012-01-20 10:40 ` Alex Riesen
2012-01-20 12:49 ` [PATCH] git-sh-i18n: detect and avoid broken gettext(1) implementation Ævar Arnfjörð Bjarmason
2012-01-20 14:02 ` Alex Riesen
2012-01-20 20:00 ` Junio C Hamano
2012-01-20 20:13 ` Alex Riesen
2012-01-20 20:21 ` Junio C Hamano
2012-01-20 20:24 ` Alex Riesen
2012-01-20 20:26 ` Junio C Hamano
2012-01-20 20:33 ` Alex Riesen
2012-01-20 19:35 ` [PATCH] i18n: disable i18n for shell scripts if NO_GETTEXT defined Junio C Hamano
2012-01-20 19:45 ` Alex Riesen
2012-01-19 9:24 ` Alex Riesen
2012-01-19 9:13 ` Alex Riesen
2012-01-19 19:52 ` [PATCH] add a Makefile switch to avoid gettext translation in shell scripts Alex Riesen
2012-01-23 22:01 ` Junio C Hamano
2012-01-23 22:02 ` [PATCH 1/2] git-sh-i18n: restructure the logic to compute gettext.sh scheme Junio C Hamano
2012-01-23 22:04 ` [PATCH 2/2] add a Makefile switch to avoid gettext translation in shell scripts Junio C Hamano
2012-01-23 22:12 ` Jonathan Nieder
2012-01-23 22:23 ` Junio C Hamano
2012-01-23 22:40 ` Jonathan Nieder
2012-01-24 0:31 ` [PATCH/RFC 3/2] i18n: do not use gettext.sh by default when NO_GETTEXT is set Jonathan Nieder
2012-01-24 20:06 ` Alex Riesen
2012-01-24 0:39 ` [PATCH 2/2] add a Makefile switch to avoid gettext translation in shell scripts Ævar Arnfjörð Bjarmason
2012-01-24 19:59 ` Alex Riesen
2012-01-24 20:00 ` Alex Riesen
2012-01-24 20:13 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120118195438.GA18892@blimp.dmz \
--to=raa.lkml@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.