[PATCH 2/2] i18n: Add extra -- to seperate gettext and message
In commit b9b9c22, Ævar addressed a issue when gettextized a message started with "--", such as "--cached cannot be used with --files", the first word in the message would be treated as an option of gettext, and might raise a bad option error.
The solution Ævar provided is to add a extra "--" option between gettext and the message. But Vincent fount out later that the extra "--" was extracted as gettext message by xgettext instead of the real message. See:
* http://thread.gmane.org/gmane.comp.version-control.git/199042
In order to fix this dilemma, we move the extra "--" option from gettext to gettext wrapper (gettextln, and eval_gettext), and gettextize the message using the wrapper function instead of gettext itself.
But for system with libintl's gettext.sh, eval_gettext and eval_gettextln won't have this fix.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
---
git-sh-i18n.sh | 8 ++++++--
git-submodule.sh | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
Show changes to 2 files +7 −3
git-sh-i18n.sh, git-submodule.sh
diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
index 6a27f..1c61e4 100644
--- a/git-sh-i18n.sh
+++ b/git-sh-i18n.sh
@@ -49,7 +49,7 @@ gnu)
gettext_without_eval_gettext)
# Solaris has a gettext(1) but no eval_gettext(1)
eval_gettext () {
- gettext "$1" | (
+ gettext -- "$1" | (
export PATH $(git sh-i18n--envsubst --variables "$1");
git sh-i18n--envsubst "$1"
)
@@ -68,10 +68,14 @@ poison)
;;
*)
gettext () {
+ # Bypass options, such as '--'.
+ shift $(($# - 1))
printf "%s" "$1"
}
eval_gettext () {
+ # Bypass options, such as '--'.
+ shift $(($# - 1))
printf "%s" "$1" | (
export PATH $(git sh-i18n--envsubst --variables "$1");
git sh-i18n--envsubst "$1"
@@ -82,7 +86,7 @@ esac
# Git-specific wrapper functions
gettextln () {
- gettext "$1"
+ gettext -- "$1"
echo
}
diff --git a/git-submodule.sh b/git-submodule.sh
index 5c61a..bb9f6 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -710,7 +710,7 @@ cmd_summary() {
if [ -n "$files" ]
then
test -n "$cached" &&
- die "$(gettext -- "--cached cannot be used with --files")"
+ die "$(gettextln "--cached cannot be used with --files")"
diff_cmd=diff-files
head=
fi
--
1.7.10.2.559.g0ba0f00