i18n: git-sh-setup.sh: mark strings for translation
authorVasco Almeida <vascomalmeida@sapo.pt>
Fri, 17 Jun 2016 20:21:02 +0000 (20:21 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 17 Jun 2016 22:45:48 +0000 (15:45 -0700)
Positional arguments, such as $0, $1, etc, need to be stored on shell
variables for use in translatable strings, according to gettext manual
[1].

Add git-sh-setup.sh to LOCALIZED_SH variable in Makefile to enable
extraction of string marked for translation by xgettext.

Source git-sh-i18n in git-sh-setup.sh for gettext support.
git-sh-setup.sh is a shell library to be sourced by other shell scripts.
In order to avoid other scripts from sourcing git-sh-i18n twice, remove
line that sources it from them. Not sourcing git-sh-i18n in any script
that uses gettext would lead to failure due to, for instance, gettextln
not being found.

[1] http://www.gnu.org/software/gettext/manual/html_node/Preparing-Shell-Scripts.html

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
git-bisect.sh
git-merge-octopus.sh
git-rebase.sh
git-sh-setup.sh
git-stash.sh
git-submodule.sh
index 0d59718bf72a8f033f2d2a5be7d260b52039408e..4e0c4ebf5e77bcb86216a02f4ce4d3467d2062b2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2062,7 +2062,9 @@ XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \
        --keyword=gettextln --keyword=eval_gettextln
 XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl
 LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
-LOCALIZED_SH = $(SCRIPT_SH) git-parse-remote.sh
+LOCALIZED_SH = $(SCRIPT_SH)
+LOCALIZED_SH += git-parse-remote.sh
+LOCALIZED_SH += git-sh-setup.sh
 LOCALIZED_PERL = $(SCRIPT_PERL)
 
 ifdef XGETTEXT_INCLUDE_TESTS
index 737bf05127e8cfbc3ff9172828b6143d980abbf1..30d01bb2dcdfaae2fe0ffade83bd15080f5e81fa 100755 (executable)
@@ -33,7 +33,6 @@ Please use "git help bisect" to get the full man page.'
 
 OPTIONS_SPEC=
 . git-sh-setup
-. git-sh-i18n
 
 _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
index d79fc84029293818e7baf14c414eaa3ca3989ac6..308eafd1d38422ce5e9d4c8d90050a28795479f9 100755 (executable)
@@ -6,7 +6,6 @@
 #
 
 . git-sh-setup
-. git-sh-i18n
 
 LF='
 '
index 9ba21ab6a1254a513995ac35fd78724cd15ea906..04f6e44bc8c779d7f4c60c19066820533279324a 100755 (executable)
@@ -45,7 +45,6 @@ skip!              skip current patch and continue
 edit-todo!         edit the todo list during an interactive rebase
 "
 . git-sh-setup
-. git-sh-i18n
 set_reflog_action rebase
 require_work_tree_exists
 cd_to_toplevel
index c48139a49420ea2318e23d8667eb20bae9772463..2eda134800b08e3dfcdc2084b221280b8d95e178 100644 (file)
@@ -2,6 +2,9 @@
 # to set up some variables pointing at the normal git directories and
 # a few helper shell functions.
 
+# Source git-sh-i18n for gettext support.
+. git-sh-i18n
+
 # Having this variable in your environment would break scripts because
 # you would cause "cd" to be taken to unexpected places.  If you
 # like CDPATH, define it for your interactive shell sessions without
@@ -83,16 +86,16 @@ if test -n "$OPTIONS_SPEC"; then
 else
        dashless=$(basename -- "$0" | sed -e 's/-/ /')
        usage() {
-               die "usage: $dashless $USAGE"
+               die "$(eval_gettext "usage: \$dashless \$USAGE")"
        }
 
        if [ -z "$LONG_USAGE" ]
        then
-               LONG_USAGE="usage: $dashless $USAGE"
+               LONG_USAGE="$(eval_gettext "usage: \$dashless \$USAGE")"
        else
-               LONG_USAGE="usage: $dashless $USAGE
+               LONG_USAGE="$(eval_gettext "usage: \$dashless \$USAGE
 
-$LONG_USAGE"
+$LONG_USAGE")"
        fi
 
        case "$1" in
@@ -182,7 +185,7 @@ is_bare_repository () {
 cd_to_toplevel () {
        cdup=$(git rev-parse --show-toplevel) &&
        cd "$cdup" || {
-               echo >&2 "Cannot chdir to $cdup, the toplevel of the working tree"
+               gettextln "Cannot chdir to \$cdup, the toplevel of the working tree" >&2
                exit 1
        }
 }
@@ -190,13 +193,16 @@ cd_to_toplevel () {
 require_work_tree_exists () {
        if test "z$(git rev-parse --is-bare-repository)" != zfalse
        then
-               die "fatal: $0 cannot be used without a working tree."
+               program_name=$0
+               die "$(gettext "fatal: \$program_name cannot be used without a working tree.")"
        fi
 }
 
 require_work_tree () {
-       test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true ||
-       die "fatal: $0 cannot be used without a working tree."
+       test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true || {
+               program_name=$0
+               die "$(gettext "fatal: \$program_name cannot be used without a working tree.")"
+       }
 }
 
 require_clean_work_tree () {
@@ -206,24 +212,49 @@ require_clean_work_tree () {
 
        if ! git diff-files --quiet --ignore-submodules
        then
-               echo >&2 "Cannot $1: You have unstaged changes."
+               action=$1
+               case "$action" in
+               rebase)
+                       gettextln "Cannot rebase: You have unstaged changes." >&2
+                       ;;
+               "rewrite branches")
+                       gettextln "Cannot rewrite branches: You have unstaged changes." >&2
+                       ;;
+               "pull with rebase")
+                       gettextln "Cannot pull with rebase: You have unstaged changes." >&2
+                       ;;
+               *)
+                       eval_gettextln "Cannot \$action: You have unstaged changes." >&2
+                       ;;
+               esac
                err=1
        fi
 
        if ! git diff-index --cached --quiet --ignore-submodules HEAD --
        then
-               if [ $err = 0 ]
+               if test $err = 0
                then
-                   echo >&2 "Cannot $1: Your index contains uncommitted changes."
+                       action=$1
+                       case "$action" in
+                       rebase)
+                               gettextln "Cannot rebase: Your index contains uncommitted changes." >&2
+                               ;;
+                       "pull with rebase")
+                               gettextln "Cannot pull with rebase: Your index contains uncommitted changes." >&2
+                               ;;
+                       *)
+                               eval_gettextln "Cannot \$action: Your index contains uncommitted changes." >&2
+                               ;;
+                       esac
                else
-                   echo >&2 "Additionally, your index contains uncommitted changes."
+                   gettextln "Additionally, your index contains uncommitted changes." >&2
                fi
                err=1
        fi
 
-       if [ $err = 1 ]
+       if test $err = 1
        then
-               test -n "$2" && echo >&2 "$2"
+               test -n "$2" && echo "$2" >&2
                exit 1
        fi
 }
@@ -336,12 +367,12 @@ git_dir_init () {
        then
                test -z "$(git rev-parse --show-cdup)" || {
                        exit=$?
-                       echo >&2 "You need to run this command from the toplevel of the working tree."
+                       gettextln "You need to run this command from the toplevel of the working tree." >&2
                        exit $exit
                }
        fi
        test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || {
-               echo >&2 "Unable to determine absolute path of git directory"
+               gettextln "Unable to determine absolute path of git directory" >&2
                exit 1
        }
        : ${GIT_OBJECT_DIRECTORY="$(git rev-parse --git-path objects)"}
index c7509e8da47cf296143e3fa53a7f431f7672d78e..22fb8bcba67b9b051bfa56a6082a749c81f163eb 100755 (executable)
@@ -15,7 +15,6 @@ SUBDIRECTORY_OK=Yes
 OPTIONS_SPEC=
 START_DIR=$(pwd)
 . git-sh-setup
-. git-sh-i18n
 require_work_tree
 cd_to_toplevel
 
index 5a4dec050b2ebdbe8f9674666ddaabb4c0e193f2..de7ddb67e4281336878275680742fb3fd37308b6 100755 (executable)
@@ -16,7 +16,6 @@ USAGE="[--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <re
 OPTIONS_SPEC=
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
-. git-sh-i18n
 . git-parse-remote
 require_work_tree
 wt_prefix=$(git rev-parse --show-prefix)