# [PATCH] git-gui-i18n: Fix translation of the context menu

3 messages from 2007-07-22 to 2007-07-23. Participants: Johannes Schindelin, Shawn O. Pearce.
Thread: https://gitlist.dev/t/9143

## Johannes Schindelin, 2007-07-22 16:20

Subject: [PATCH] git-gui-i18n: Fix translation of the context menu
Message-ID: <Pine.LNX.4.64.0707221719430.14781@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0707221719430.14781%40racer.site

```

There is some funny code generation going on to make the context menu,
and the messages for this have to be doubly quoted.

Noticed by Harri Ilari Tapio Liusvaara

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 git-gui.sh |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index 075a2b9..52170ee 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -2457,9 +2457,9 @@ bind_button3 $ui_diff "
 	set cursorX %x
 	set cursorY %y
 	if {\$ui_index eq \$current_diff_side} {
-		$ctxm entryconf $ui_diff_applyhunk -label [mc {Unstage Hunk From Commit}]
+		$ctxm entryconf $ui_diff_applyhunk -label \"[mc "Unstage Hunk From Commit"]\"
 	} else {
-		$ctxm entryconf $ui_diff_applyhunk -label [mc {Stage Hunk For Commit}]
+		$ctxm entryconf $ui_diff_applyhunk -label \"[mc "Stage Hunk For Commit"]\"
 	}
 	tk_popup $ctxm %X %Y
 "
-- 
1.5.3.rc2.29.gc4640f

```

## Shawn O. Pearce, 2007-07-23 03:51

Subject: Re: [PATCH] git-gui-i18n: Fix translation of the context menu
Message-ID: <20070723035122.GB32566@spearce.org>
URL: https://gitlist.dev/e/20070723035122.GB32566%40spearce.org
In-Reply-To: <Pine.LNX.4.64.0707221719430.14781@racer.site>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> 
> There is some funny code generation going on to make the context menu,
> and the messages for this have to be doubly quoted.
> 
> Noticed by Harri Ilari Tapio Liusvaara
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  git-gui.sh |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)

I'll try to rewrite this hunk as a procedure, to get rid of the
double evaluation problem.  However...
 
> diff --git a/git-gui.sh b/git-gui.sh
> index 075a2b9..52170ee 100755
> --- a/git-gui.sh
> +++ b/git-gui.sh
> @@ -2457,9 +2457,9 @@ bind_button3 $ui_diff "
>  	set cursorX %x
>  	set cursorY %y
>  	if {\$ui_index eq \$current_diff_side} {
> -		$ctxm entryconf $ui_diff_applyhunk -label [mc {Unstage Hunk From Commit}]
> +		$ctxm entryconf $ui_diff_applyhunk -label \"[mc "Unstage Hunk From Commit"]\"

That's the wrong change to do here, as you are going to eval
the result of the translation.  If the translation had a Tcl
special character (\, $, [) in it then we'd actually execute that.
Instead the [ should be escaped:

> +		$ctxm entryconf $ui_diff_applyhunk -label \[mc "Unstage Hunk From Commit"\]

But you aren't a Tcl programmer, so its OK.  ;-)

-- 
Shawn.

```

## Johannes Schindelin, 2007-07-23 09:58

Subject: Re: [PATCH] git-gui-i18n: Fix translation of the context menu
Message-ID: <Pine.LNX.4.64.0707231057550.14781@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0707231057550.14781%40racer.site
In-Reply-To: <20070723035122.GB32566@spearce.org>

```
Hi,

On Sun, 22 Jul 2007, Shawn O. Pearce wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> > diff --git a/git-gui.sh b/git-gui.sh
> > index 075a2b9..52170ee 100755
> > --- a/git-gui.sh
> > +++ b/git-gui.sh
> > @@ -2457,9 +2457,9 @@ bind_button3 $ui_diff "
> >  	set cursorX %x
> >  	set cursorY %y
> >  	if {\$ui_index eq \$current_diff_side} {
> > -		$ctxm entryconf $ui_diff_applyhunk -label [mc {Unstage Hunk From Commit}]
> > +		$ctxm entryconf $ui_diff_applyhunk -label \"[mc "Unstage Hunk From Commit"]\"
> 
> That's the wrong change to do here, as you are going to eval
> the result of the translation.  If the translation had a Tcl
> special character (\, $, [) in it then we'd actually execute that.
> Instead the [ should be escaped:
> 
> > +		$ctxm entryconf $ui_diff_applyhunk -label \[mc "Unstage Hunk From Commit"\]
> 
> But you aren't a Tcl programmer, so its OK.  ;-)

Heh.

Thanks,
Dscho

```
