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

4 messages from 2012-06-02 to 2012-06-03. Participants: Vincent van Ravesteijn, Jiang Xin, Andreas Schwab.
Thread: https://gitlist.dev/t/30686

## Vincent van Ravesteijn, 2012-06-02 11:35

Subject: i18n: git-submodule message does not appear in git.pot
Message-ID: <4FC9FA97.7020908@lyx.org>
URL: https://gitlist.dev/e/4FC9FA97.7020908%40lyx.org

```
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, 2012-06-03 08:05

Subject: Re: i18n: git-submodule message does not appear in git.pot
Message-ID: <CANYiYbFrdNGpyTy3sVHPfm9R0bK-0S0Yh8BxxK4WkAbaaQRaNA@mail.gmail.com>
URL: https://gitlist.dev/e/CANYiYbFrdNGpyTy3sVHPfm9R0bK-0S0Yh8BxxK4WkAbaaQRaNA%40mail.gmail.com
In-Reply-To: <4FC9FA97.7020908@lyx.org>

```
2012/6/2 Vincent van Ravesteijn <vfr@lyx.org>:
> 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, 2012-06-03 08:24

Subject: Re: i18n: git-submodule message does not appear in git.pot
Message-ID: <m2r4tw3isb.fsf@linux-m68k.org>
URL: https://gitlist.dev/e/m2r4tw3isb.fsf%40linux-m68k.org
In-Reply-To: <CANYiYbFrdNGpyTy3sVHPfm9R0bK-0S0Yh8BxxK4WkAbaaQRaNA@mail.gmail.com>

```
Jiang Xin <worldhello.net@gmail.com> writes:

>  	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, 2012-06-03 09:14

Subject: Re: i18n: git-submodule message does not appear in git.pot
Message-ID: <CANYiYbH3p8Ti02CCri+ZxkcNgxzFqb-cqUchSXF_Py_OFOhQXg@mail.gmail.com>
URL: https://gitlist.dev/e/CANYiYbH3p8Ti02CCri%2BZxkcNgxzFqb-cqUchSXF_Py_OFOhQXg%40mail.gmail.com
In-Reply-To: <m2r4tw3isb.fsf@linux-m68k.org>

```
2012/6/3 Andreas Schwab <schwab@linux-m68k.org>:
>>       gettext () {
>> +             # Bypass options, such as '--'.
>> +             while test $# -gt 1
>> +             do
>> +                     shift
>> +             done
>
>                shift $(($#-1))

That's better.

-- 
Jiang Xin

```
