Git development
 help / color / mirror / Atom feed
* Re: git-gui-i18n: Make "Revert changes in these $n files" translatable.
@ 2007-07-27  6:41 Brett Schwarz
  2007-07-27 11:49 ` Christian Stimming
  0 siblings, 1 reply; 5+ messages in thread
From: Brett Schwarz @ 2007-07-27  6:41 UTC (permalink / raw)
  To: Christian Stimming, Harri Ilari Tapio Liusvaara
  Cc: Shawn O. Pearce, git, Paul Mackerras, Junio C Hamano

> 
> 
> ----- Original Message ----
> From: Christian Stimming <stimming@tuhh.de>
> To: Harri Ilari Tapio Liusvaara <hliusvaa@cc.hut.fi>
> Cc: Shawn O. Pearce <spearce@spearce.org>; Brett Schwarz <brett_schwarz@yahoo.com>; git@vger.kernel.org; Paul Mackerras <paulus@samba.org>; Junio C Hamano <gitster@pobox.com>
> Sent: Thursday, July 26, 2007 5:34:49 AM
> Subject: Re: git-gui-i18n: Make "Revert changes in these $n files" translatable.
> 
> Quoting Harri Ilari Tapio Liusvaara <hliusvaa@cc.hut.fi>:
> > On Thu, Jul 26, 2007 at 10:47:23AM +0200, Christian Stimming wrote:
> >> The issue with plural forms is even more complicated than that.
> >


<snip>

> > - Buttons in hard reset confirmation (branch->revert or merge->abort,
> >   and it is yes/no dialog).
> 
> I see this in translated form (German Ja/Nein), and also the button  
> text (translated or not) doesn't appear in the git-gui source code.  
> Maybe those need to be translated in the tcl/tk system libraries?
> 

These are indeed in the Tk libs. Unfortunately, there is no straight forward way to change the button text for tk_messageBox. I'll probably submit a patch to Tcl core for this.

In the mean time, if this is important, there are 2 ways around this:

1) override the button text in the msgcat. Tk does it's own msgcat internally (under the Tk namespace), and that's what prevents msgcat from changing these. You can see these under msgs directory where Tk is installed (/usr/local/tk8.4/msgs on my system). So, you would have to override for each language specified in that directory (if it warrants overriding). So, somewhere in the git-gui, you would have to do something like:
    namespace eval ::Tk {
      ::msgcat::mcset en_us &OK <new_term>
      ::msgcat::mcset en_us &Cancel <new_term>
      ::msgcat::mcset en_us &Yes <new_term>
      ::msgcat::mcset en_us &No <new_term>
      <continue for each language, if needed>
    }

2) Re-write the tk_messageBox, to include an option to specify the button text. This wouldn't be too hard actually, but this would live with git-gui.

I don't think option #1 is robust enough, but would be the easiest approach. Note also that this would only be for unix platforms, since for windows and Mac, it calls the platform's equivalent.

HTH,

    --brett






       
____________________________________________________________________________________
Building a website is a piece of cake. Yahoo! Small Business gives you all the tools to get online.
http://smallbusiness.yahoo.com/webhosting 

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: git-gui-i18n: Make "Revert changes in these $n files" translatable.
@ 2007-07-26  8:47 Christian Stimming
       [not found] ` <20070726115301.GA27821@cc.hut.fi>
  0 siblings, 1 reply; 5+ messages in thread
From: Christian Stimming @ 2007-07-26  8:47 UTC (permalink / raw)
  To: Harri Ilari Tapio Liusvaara
  Cc: Shawn O. Pearce, Brett Schwarz, git, Paul Mackerras,
	Junio C Hamano

Dear Harri, (responding to the commit in the mob branch)

thanks for discovering this message that was missed from translation.  
I'd like to use the opportunity to explain shortly the situation with  
plural form translations. You wrote:

+	# Split question between singular and plural cases, because
+	# such distinction is needed in some languages.

The issue with plural forms is even more complicated than that. In  
fact, the gettext library in C has the separate function ngettext()  
solely for the purpose of dealing with plural forms correctly; see  
http://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html#Plural-forms for the (lengthy but interesting) explanation. All one has to know is this: There are many languages out there that have not only one singular and one plural form, but much more of them, depending on the actual number of items being talked about. (Example: Three forms, with special cases for 1 and 2, 3, 4, in Slovak and  
Czech)

Unfortunately the msgcat package of Tcl is missing all support for a  
meaningful implementation of plural forms. (IMHO that's quite a  
shortcoming of msgcat and quite a big advantage of gettext, but there  
isn't an easy solution in sight. Whatever.) For that reason we have to  
refrain from using any plural-form-depending messages at all.

Enough of this discussion.

In this *particular* commit, the plural-form discussion misses the  
point with the message in question. In this particular message, if  
$n==1 (one single file to be reverted), the *file name* should be  
printed in the message. If $n > 1, the *number of files* should be  
printed in the message. The i18n error that had to be fixed is that  
the English message used to be built up from several parts, which is a  
no-no for translatable strings, and you have fixed that correctly.

Nevertheless the last [mc...] message in your commit doesn't end up  
that nicely for the translator. As you have the first sentence already  
in another language and translated separately, I would suggest to have  
the second sentence translated separately as well, and then appending  
these together in the actual message being shown. Like the patch below.

Thanks again for spotting this error.

Christian


diff --git a/lib/index.tcl b/lib/index.tcl
index 9080ac6..e1bda52 100644
--- a/lib/index.tcl
+++ b/lib/index.tcl
@@ -350,17 +350,15 @@ proc revert_helper {txt paths} {
                 unlock_index
                 return
         } elseif {$n == 1} {
-               set s "[short_path [lindex $pathList]]"
+               set query [mc "Revert changes in file %s?" [short_path  
[lindex $pathList]]]
         } else {
-               set s "these $n files"
+               set query [mc "Revert changes in these %i files?" $n]
         }

         set reply [tk_dialog \
                 .confirm_revert \
                 "[appname] ([reponame])" \
-               [mc "Revert changes in %s?
-
-Any unadded changes will be permanently lost by the revert." $s] \
+               "$query\n\n[mc "Any unadded changes will be  
permanently lost by the revert."]" \
                 question \
                 1 \
                 [mc "Do Nothing"] \
--
1.5.3.rc2.12.gbc280

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-07-27 11:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-27  6:41 git-gui-i18n: Make "Revert changes in these $n files" translatable Brett Schwarz
2007-07-27 11:49 ` Christian Stimming
  -- strict thread matches above, loose matches on Subject: below --
2007-07-26  8:47 Christian Stimming
     [not found] ` <20070726115301.GA27821@cc.hut.fi>
2007-07-26 12:34   ` Christian Stimming
     [not found]     ` <20070726142152.GA5335@cc.hut.fi>
2007-07-26 14:53       ` Christian Stimming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox