mirror of
https://github.com/git/git.git
synced 2024-05-07 11:36:15 +02:00
42f16113ee
Instead of having a single long and complex chain of commands to decide what to do and carry out the decision, split the code so that we first decide which scheme to use, and in the second section define what exactly is done by the chosen scheme. It makes the code much easier to follow and update. Signed-off-by: Junio C Hamano <gitster@pobox.com>
90 lines
1.9 KiB
Bash
90 lines
1.9 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2010 Ævar Arnfjörð Bjarmason
|
|
#
|
|
# This is Git's interface to gettext.sh. See po/README for usage
|
|
# instructions.
|
|
|
|
# Export the TEXTDOMAIN* data that we need for Git
|
|
TEXTDOMAIN=git
|
|
export TEXTDOMAIN
|
|
if test -z "$GIT_TEXTDOMAINDIR"
|
|
then
|
|
TEXTDOMAINDIR="@@LOCALEDIR@@"
|
|
else
|
|
TEXTDOMAINDIR="$GIT_TEXTDOMAINDIR"
|
|
fi
|
|
export TEXTDOMAINDIR
|
|
|
|
# First decide what scheme to use...
|
|
GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough
|
|
if test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
|
|
then
|
|
: no probing necessary
|
|
elif test -n "$GIT_GETTEXT_POISON"
|
|
then
|
|
GIT_INTERNAL_GETTEXT_SH_SCHEME=poison
|
|
elif type gettext.sh >/dev/null 2>&1
|
|
then
|
|
# GNU libintl's gettext.sh
|
|
GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
|
|
elif test "$(gettext -h 2>&1)" = "-h"
|
|
then
|
|
# gettext binary exists but no gettext.sh. likely to be a gettext
|
|
# binary on a Solaris or something that is not GNU libintl and
|
|
# lack eval_gettext.
|
|
GIT_INTERNAL_GETTEXT_SH_SCHEME=gettext_without_eval_gettext
|
|
fi
|
|
export GIT_INTERNAL_GETTEXT_SH_SCHEME
|
|
|
|
# ... and then follow that decision.
|
|
case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in
|
|
gnu)
|
|
# Use libintl's gettext.sh, or fall back to English if we can't.
|
|
. gettext.sh
|
|
;;
|
|
gettext_without_eval_gettext)
|
|
# 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)
|
|
# Emit garbage so that tests that incorrectly rely on translatable
|
|
# strings will fail.
|
|
gettext () {
|
|
printf "%s" "# GETTEXT POISON #"
|
|
}
|
|
|
|
eval_gettext () {
|
|
printf "%s" "# GETTEXT POISON #"
|
|
}
|
|
;;
|
|
*)
|
|
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 () {
|
|
gettext "$1"
|
|
echo
|
|
}
|
|
|
|
eval_gettextln () {
|
|
eval_gettext "$1"
|
|
echo
|
|
}
|