Use GNU's gettext.sh in git-sh-setup if it's available, otherwise fallback on our own custom functions. A couple of strings in git-pull.sh are now translatable as a proof of concept, including a multiline string. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> --- Makefile | 7 +++++-- git-pull.sh | 15 ++++++++------- git-sh-setup.sh | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 4de0627..dce2faa 100644 --- a/Makefile +++ b/Makefile @@ -272,6 +272,7 @@ mandir = share/man infodir = share/info gitexecdir = libexec/git-core sharedir = $(prefix)/share +localedir = $(sharedir)/locale template_dir = share/git-core/templates htmldir = share/doc/git-doc ifeq ($(prefix),/usr) @@ -285,7 +286,7 @@ lib = lib # DESTDIR= pathsep = : -export prefix bindir sharedir sysconfdir +export prefix bindir sharedir localedir sysconfdir CC = gcc AR = ar @@ -1455,6 +1456,7 @@ htmldir_SQ = $(subst ','\'',$(htmldir)) prefix_SQ = $(subst ','\'',$(prefix)) sharedir_SQ = $(subst ','\'',$(sharedir)) +LOCALEDIR_SQ = $(subst ','\'',$(localedir)) SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH)) @@ -1548,6 +1550,7 @@ $(RM) $@ $@+ && \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ + -e 's|@@LOCALEDIR@@|$(LOCALEDIR_SQ)|g' \ -e 's/@@NO_CURL@@/$(NO_CURL)/g' \ -e $(BROKEN_PATH_FIX) \ $@.sh >$@+ @@ -1881,7 +1884,7 @@ cscope: $(FIND) . -name '*.[hcS]' -print | xargs cscope -b pot: - $(XGETTEXT) -k_ -o po/git.pot $(C_OBJ:o=c) + $(XGETTEXT) -k_ -o po/git.pot $(C_OBJ:o=c) $(SCRIPT_SH) POFILES := $(wildcard po/*.po) MOFILES := $(patsubst po/%.po,share/locale/%/LC_MESSAGES/git.mo,$(POFILES)) diff --git a/git-pull.sh b/git-pull.sh index 1a4729f..22a6da2 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -121,8 +121,8 @@ error_on_no_merge_candidates () { do case "$opt" in -t|--t|--ta|--tag|--tags) - echo "Fetching tags only, you probably meant:" - echo " git fetch --tags" + gettext "Fetching tags only, you probably meant:"; echo + gettext " git fetch --tags"; echo exit 1 esac done @@ -154,11 +154,12 @@ error_on_no_merge_candidates () { echo "a branch. Because this is not the default configured remote" echo "for your current branch, you must specify a branch on the command line." elif [ -z "$curr_branch" ]; then - echo "You are not currently on a branch, so I cannot use any" - echo "'branch.<branchname>.merge' in your configuration file." - echo "Please specify which remote branch you want to use on the command" - echo "line and try again (e.g. 'git pull <repository> <refspec>')." - echo "See git-pull(1) for details." + gettext "You are not currently on a branch, so I cannot use any +'branch.<branchname>.merge' in your configuration file. +Please specify which remote branch you want to use on the command +line and try again (e.g. 'git pull <repository> <refspec>'). +See git-pull(1) for details."; + echo elif [ -z "$upstream" ]; then echo "You asked me to pull without telling me which branch you" echo "want to $op_type $op_prep, and 'branch.${curr_branch}.merge' in" diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 6131670..c8010f2 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -211,3 +211,36 @@ case $(uname -s) in } ;; esac + +# Try to use libintl's gettext.sh, or fall back to English if we +# can't. +. gettext.sh +if test $? -ne 0 +then + TEXTDOMAIN=git + export TEXDTOMAIN + TEXTDOMAINDIR="@@LOCALEDIR@@" + export TEXTDOMAINDIR +else + # Since GNU gettext.sh isn't available we'll have to define our + # own dummy functions. + + # This code adapted from NessusClient-1.0.2's nessusclient-mkcert + # by Michel Arboi <arboi@xxxxxxxxxxxxx>. The original code is + # under the GPLv2. + + # Not everyone has echo -n + case $(echo -n) in + \-n) Xn= ; Xc='\c' ;; + *) Xn=-n ; Xc= + esac + + gettext () { + echo $Xn "$1" $Xc + } + + eval_gettext () { + eval_gettext_var="echo $1" + echo $Xn `eval $eval_gettext_var` $Xc + } +fi -- 1.7.1.248.gcd6d1 -- 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