Skip to contentSkip to conversation

i18n: git-submodule message does not appear in git.pot

DISCUSSION Vincent van Ravesteijn 3 participants 4 messages Jun 15, 2016 Kbuild

lore
Share & tools
lore
#0 lore raw

In commit b9b9c22f [1] the string "--cached cannot be used with --files" is translated using an extra "--" between "gettext" and the string. This does not work because in the current git.pot file there is now:

#: git-submodule.sh:713
msgid "--"
msgstr ""

Removing this exta "--" fixes the problem for me (GNU gettext v0.18.1)

[1] b9b9c22f; Aevar Arnfjord Bjarmason; Sat May 21 2011; i18n: git-submodule "cached cannot be used" message.

Kind regards,

Vincent

#1 lore raw

2012/6/2 Vincent van Ravesteijn <[email protected]>:

Quoted 8 lines

In commit b9b9c22f [1] the string "--cached cannot be used with --files" is translated using an extra "--" between "gettext" and the string. This does not work because in the current git.pot file there is now:

#: git-submodule.sh:713
msgid "--"
msgstr ""

It's really a trouble.

Quoted 1 line

Removing this exta "--" fixes the problem for me (GNU gettext v0.18.1)

You can not remove the extra '--', or gettext report error:

    $ gettext "--cached cannot be used with --files"
    gettext: unrecognized option '--cached cannot be used with --files'
    Try `gettext --help' for more information.

My fix is call gettextln in here instead of gettext, and in the gettextln function, we pass a extra '--' option between gettext and the message id.

git-sh-i18n.sh +12 -2
index 6a27f..dbabf 100644
@@ -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,20 @@ poison)
 	;;
 *)
 	gettext () {
+		# Bypass options, such as '--'.
+		while test $# -gt 1
+		do
+			shift
+		done
 		printf "%s" "$1"
 	}
 
 	eval_gettext () {
+		# Bypass options, such as '--'.
+		while test $# -gt 1
+		do
+			shift
+		done
 		printf "%s" "$1" | (
 			export PATH $(git sh-i18n--envsubst --variables "$1");
 			git sh-i18n--envsubst "$1"
@@ -82,7 +92,7 @@ esac
 
 # Git-specific wrapper functions
 gettextln () {
-	gettext "$1"
+	gettext -- "$1"
 	echo
 }
 
git-submodule.sh +1 -1
index 5c61a..bb9f6 100755
@@ -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
Quoted 2 lines
Quoted 1 line

[1] b9b9c22f; Aevar Arnfjord Bjarmason; Sat May 21 2011; i18n: git-submodule

"cached cannot be used" message.

In commit b9b9c22f, Ævar described this problem clearly.

commit b9b9c22f6db3e3c089098ba04fbc885e2cb4f4dd

Author: Ævar Arnfjörð Bjarmason <[email protected]>
Date:   Sat May 21 18:44:03 2011 +0000

i18n: git-submodule "cached cannot be used" message

Gettextize the "--cached cannot be used with --files" message. Since this message starts with "--" we have to pass "--" as the first argument. This works with both GNU gettext 0.18.1 (as expected), and the gettext(1) on Solaris 10.

And I found another issue: since we have two extra gettext wrapper gettextln and eval_gettextln, we should do somthing for xgettext in Makefile, or messages marked by gettextln and eval_gettextln would not extract to 'po/git.pot'.

Makefile +2 -1
index 4592f..dc3fd 100644
@@ -2333,7 +2333,8 @@ XGETTEXT_FLAGS = \
        --from-code=UTF-8
 XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \
        --keyword=_ --keyword=N_ --keyword="Q_:1,2"
-XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell
+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) $(XDIFF_H) $(VCSSVN_H) $(MISC_H)
 LOCALIZED_SH := $(SCRIPT_SH)
Signature · 1 line
Jiang Xin
#2 lore raw

git-sh-i18n.sh poison) · line 75

Quoted 6 lines · Jiang Xin
git-sh-i18n.sh +5 -0
 	gettext () {
+		# Bypass options, such as '--'.
+		while test $# -gt 1
+		do
+			shift
+		done
                shift $(($#-1))

Andreas.

Signature · 3 lines
Andreas Schwab, [email protected]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
#3 lore raw

2012/6/3 Andreas Schwab <[email protected]>:

Quoted 8 lines
Quoted 6 lines

      gettext () {
+             # Bypass options, such as '--'.
+             while test $# -gt 1
+             do
+                     shift
+             done

               shift $(($#-1))

That's better.

Signature · 1 line
Jiang Xin