threads / discuss / 30686

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

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

## tl;dr

4 messages between Jun 2, 2012 and Jun 3, 2012.

replies: 3people: 3as markdown or json

Vincent van Ravesteijn· Jun 2, 2012, 11:35 UTC · lore

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
Jiang Xin· Jun 3, 2012, 08:05 UTC · re: Vincent van Ravesteijn · lore

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

2012/6/2 Vincent van Ravesteijn <vfr@lyx.org>:
Show 8 quoted 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.
> 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.

diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
index 6a27f..dbabf 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,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
 }

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] 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 <avarab@gmail.com>
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.

    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>


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'.

diff --git a/Makefile b/Makefile
index 4592f..dc3fd 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
-- 
Jiang Xin
Andreas Schwab· Jun 3, 2012, 08:24 UTC · re: Jiang Xin · lore

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

Jiang Xin <worldhello.net@gmail.com> writes:
Show 6 quoted lines
>  	gettext () {
> +		# Bypass options, such as '--'.
> +		while test $# -gt 1
> +		do
> +			shift
> +		done
                shift $(($#-1))
Andreas.
-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Jiang Xin· Jun 3, 2012, 09:14 UTC · re: Andreas Schwab · lore

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

2012/6/3 Andreas Schwab <schwab@linux-m68k.org>:
Show 8 quoted lines
>>       gettext () {
>> +             # Bypass options, such as '--'.
>> +             while test $# -gt 1
>> +             do
>> +                     shift
>> +             done
>
>                shift $(($#-1))
That's better.
-- 
Jiang Xin

← back to recent threads