git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] Internationalization of git-gui
@ 2007-07-19 17:33 Brett Schwarz
  2007-07-20  5:04 ` Shawn O. Pearce
  2007-07-20  9:03 ` [PATCH] " Christian Stimming
  0 siblings, 2 replies; 69+ messages in thread
From: Brett Schwarz @ 2007-07-19 17:33 UTC (permalink / raw)
  To: Christian Stimming, git; +Cc: Paul Mackerras, Shawn O. Pearce

This is a good idea. However, I assume the _ proc is just sugar. It might be better to follow a more "standard" way for this, and just import the msgcat namespace, and then you can just use [mc]. For example:

package require msgcat
namespace import ::msgcat::*
  .
  .
  .
.mbar add cascade -label [mc Repository] -menu .mbar.repository

Also, if the message catalogs are in a common location, then it might be worth looking into having gitk utilize these msg catalogs as well.

Thanks,
    --brett


p.s. the frink tool (http://wiki.tcl.tk/2611) is supposed to be able to convert -text and -label switches to use msgcat...it might be worth looking into, instead of manually editing git-gui/gitk


----- Original Message ----
From: Christian Stimming <stimming@tuhh.de>
To: git@vger.kernel.org
Sent: Thursday, July 19, 2007 3:56:57 AM
Subject: [PATCH] Internationalization of git-gui

This is an initial patch of how internationalization (i18n) in git  
could be done, starting with the git-gui application (because I need  
that one in German to convince my workplace of switching to git).

Does this implementation look okay? If yes, I'd happily i18n'ize the  
rest of git-gui and provide a full German translation as well.

Thanks,

Christian Stimming





       
____________________________________________________________________________________
Sick sense of humor? Visit Yahoo! TV's 
Comedy with an Edge to see what's on, when. 
http://tv.yahoo.com/collections/222

^ permalink raw reply	[flat|nested] 69+ messages in thread
* Re: [PATCH] Internationalization of git-gui
@ 2007-07-21 16:29 Brett Schwarz
  0 siblings, 0 replies; 69+ messages in thread
From: Brett Schwarz @ 2007-07-21 16:29 UTC (permalink / raw)
  To: Christian Stimming
  Cc: Paolo Ciarrocchi, Shawn O. Pearce, Johannes Schindelin, git


> ----- Original Message ----
> From: Christian Stimming <stimming@tuhh.de>
> To: Brett Schwarz <brett_schwarz@yahoo.com>
> Cc: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>; Shawn O. Pearce <spearce@spearce.org>; Johannes Schindelin <Johannes.Schindelin@gmx.de>; git@vger.kernel.org
> Sent: Friday, July 20, 2007 2:40:27 PM
> Subject: Re: [PATCH] Internationalization of git-gui
> 
> Am Freitag, 20. Juli 2007 20:34 schrieb Brett Schwarz:
> > After the glossary of terms has been create, it is easy to create the
> > catalog file (assuming we use Tcl's standard mechanism). Each locale should
> > have it's own file, named <locale_name>.msg (for example, es.msg for
> > spanish). Inside that file, you just create entries for each glossary term
> > (the below assumes that the msgcat namespace was imported):
> >
> >   mcset es Hello Hola
> >   mcset es "Hello %s" "Hola %s"
> 
> I beg your pardon, but I think you grossly misunderstood what I meant
> by "glossary". So before we end up in further confusion, let me clarify how
> the general translation approach works. I'll use gettext wording because
> that's what I know (from being the i18n guy in the gnucash project), but you
> can easily insert any other wording you like here.
> 

Ok, perhaps I did misunderstand you. From below, now I do understand...thanks.

 
> #1 For the translation in general, there is the set of all user-visible
> strings in the source language (here: english). In gettext terms this is
> called the "PO template file", git-gui.pot, also called the message template
> file. This set of to-be-translated strings needs to be extracted from the
> source code, which can be done by the xgettext program.
> 
> #2 For each target language, there is a human-readable mapping file that maps
> each source string (english) into the target language. In gettext terms this
> is the "PO file", de.po and it.po and ja.po and whatnot, also called the
> translation file. This is the *only* file translators actually work with.
> Gettext uses its PO file format here and a plethora of different tools exist
> to help translators editing these files. (Examples: emacs po-mode,
> KBabel, ...)
> 
> #3 For each target language, the translation files are converted to a
> (potentially not human-readable) "compiled" mapping file, which is then read
> at program runtime and used for the actual translation. For the gettext po
> file format, the msgfmt program can convert this to Tcl's .msg files.
> 
> If I understand correctly, your above suggestion implies that for Tcl msgcat,
> the file in #2 and #3 are one and the same? In my opinion this might make
> sense if and only if that file format is supported by at least as many
> translation tools and offers as flexible translation updates as gettext's po
> file format does. From my experience the po file format indeed offers a bunch
> of features that other translation file formats are missing but which are of
> significant help to the translator. That's why I would strongly suggest to do
> the actual translation inside a po file, and have it converted to the msg
> file afterwards.
> 

Yes, for the msgcat files, you create just the mapping files...that's it. No intermediate steps. So, a workflow would look something like this:

1) Somebody creates the initial "template" file. This is usually in the source's language (i.e. english). This too is just a msgcat file. Note that this file is not strictly necessary, but helps other translators.

2) A translator copies the template file, to their target language file, and edits the text:
    # cp en.msg es.msg
    # vi es.msg
    this
        mcset en Hello Hello
    get's changed to this
        mcset es Hello Hola
    etc

That's it. There is no compilation needed, and no need for a makefile entry.

Now, even though I think this approach is alot more simplier and straight forward, I do recognize that alot of people are probably accustomed to the po format, and since the actual generation of the msgcat files are only done by the maintainer, I don't really have anything against using the po format.

I know it's already been decided to use the po format, but I just wanted to make sure to follow up on this email.

Thanks,
    --brett




       
____________________________________________________________________________________
Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow  

^ permalink raw reply	[flat|nested] 69+ messages in thread
* Re: [PATCH] Internationalization of git-gui
@ 2007-07-20 18:34 Brett Schwarz
  2007-07-20 21:40 ` Christian Stimming
  0 siblings, 1 reply; 69+ messages in thread
From: Brett Schwarz @ 2007-07-20 18:34 UTC (permalink / raw)
  To: Paolo Ciarrocchi, Shawn O. Pearce
  Cc: Johannes Schindelin, Christian Stimming, git

After the glossary of terms has been create, it is easy to create the catalog file (assuming we use Tcl's standard mechanism). Each locale should have it's own file, named <locale_name>.msg (for example, es.msg for spanish). Inside that file, you just create entries for each glossary term (the below assumes that the msgcat namespace was imported):

  mcset es Hello Hola
  mcset es "Hello %s" "Hola %s"
    .
    .
    .

You can find more out here if you like http://wiki.tcl.tk/msgcat

HTH,
    --brett


----- Original Message ----
From: Paolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
To: Shawn O. Pearce <spearce@spearce.org>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>; Christian Stimming <stimming@tuhh.de>; git@vger.kernel.org
Sent: Friday, July 20, 2007 10:32:24 AM
Subject: Re: [PATCH] Internationalization of git-gui

On 7/20/07, Shawn O. Pearce <spearce@spearce.org> wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > On Thu, 19 Jul 2007, Christian Stimming wrote:
> >
> > > Does this implementation look okay?
> >
> > This is valuable work, but unfortunately, it does not follow the
> > recommendation in Documentation/SubmittingPatches at all.
> >
> > For starters, please send the patches inlined, one per mail.  And you
> > might want to Cc the maintainer of git-gui (Shawn Pearce), too...
>
> I agree that internationalization of git-gui is worth doing.
> I've thought about working on it, but haven't yet because nobody
> else has seemed interested in having it done.  Apparently someone
> is, so patches towards that end are most welcome.

Hi Shawn,
I volunteer to translate all the git-gui messages in Italian.

Just let me if you are interested and please give me an hint on how to
produce the translation so that you can incorporate it.

Thanks.

Regards,

-- 
Paolo
"Tutto cio' che merita di essere fatto,merita di essere fatto bene"
Philip Stanhope IV conte di Chesterfield
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html





       
____________________________________________________________________________________
Yahoo! oneSearch: Finally, mobile search 
that gives answers, not web links. 
http://mobile.yahoo.com/mobileweb/onesearch?refer=1ONXIC

^ permalink raw reply	[flat|nested] 69+ messages in thread
* Re: [PATCH] Internationalization of git-gui
@ 2007-07-20 18:15 Brett Schwarz
  0 siblings, 0 replies; 69+ messages in thread
From: Brett Schwarz @ 2007-07-20 18:15 UTC (permalink / raw)
  To: Christian Stimming; +Cc: git, Paul Mackerras, Shawn O. Pearce

[my apologies about top posting...my mail reader sucks]


Sure, I wasn't saying there would be for sure an advantage in re-using catalogs. That's why I said it *might* be worth looking into. Just a suggestion.

I agree that a glossary should be created first. That way, translators have a common set to work with.

Just a note about string substitution. msgcat has substitution built-in, so instead of this:

    .mbar.apple add command -label [format [_ "About %s"] [appname]] \

You can do this:

    .mbar.apple add command -label [_ "About %s" [appname]] \


Thanks,
    --brett


----- Original Message ----
From: Christian Stimming <stimming@tuhh.de>
To: Brett Schwarz <brett_schwarz@yahoo.com>
Cc: git@vger.kernel.org; Paul Mackerras <paulus@samba.org>; Shawn O. Pearce <spearce@spearce.org>
Sent: Friday, July 20, 2007 2:03:54 AM
Subject: Re: [PATCH] Internationalization of git-gui

Quoting Brett Schwarz <brett_schwarz@yahoo.com>:
> Also, if the message catalogs are in a common location, then it   
> might be worth looking into having gitk utilize these msg catalogs   
> as well.

You mean you suggest to re-use existing msg catalogs in addition to  
ones that are created on our own? Well, from the i18n coordination  
work in another project (gnucash) I wouldn't expect any noticable  
benefit from doing so. The re-usable parts of translations are rather  
limited, basically limited to the standard menu entries and some more  
single-word strings (Yes/No/Cancel...). But even then re-using other  
translations might already decrease the quality of your own  
translation, because other translators of packages might already have  
chosen a different translation for e.g. "Cancel". For that reason I  
strongly suggest using one single msg catalog for one single project,  
so that the translator is even able to make sure each word is  
translated into the same translation throughout the project.

(I also strongly suggest creating and translating a glossary of the  
important terms before starting to translate the msg catalog itself,  
but that's a different issue.)

> p.s. the frink tool (http://wiki.tcl.tk/2611) is supposed to be able  
>  to convert -text and -label switches to use msgcat...it might be   
> worth looking into, instead of manually editing git-gui/gitk

Thanks for the pointer. However, the -text and -label switches can be  
found and edited rather easily by keyboard macros and such. More  
important than this are some changes that are necessary in order to  
obtain strings that are actually translatable, such as

-    .mbar.apple add command -label "About [appname]" \
+    .mbar.apple add command -label [format [_ "About %s"] [appname]] \

and you will agree those can only be done manually anyway.

Christian





      ____________________________________________________________________________________
Fussy? Opinionated? Impossible to please? Perfect.  Join Yahoo!'s user panel and lay it on us. http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7 

^ permalink raw reply	[flat|nested] 69+ messages in thread
* [PATCH] Internationalization of git-gui
@ 2007-07-19 10:56 Christian Stimming
  2007-07-19 12:25 ` Johannes Schindelin
  0 siblings, 1 reply; 69+ messages in thread
From: Christian Stimming @ 2007-07-19 10:56 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 370 bytes --]

This is an initial patch of how internationalization (i18n) in git  
could be done, starting with the git-gui application (because I need  
that one in German to convince my workplace of switching to git).

Does this implementation look okay? If yes, I'd happily i18n'ize the  
rest of git-gui and provide a full German translation as well.

Thanks,

Christian Stimming

[-- Attachment #2: 0001-Initialize-msgcat-gettext.patch --]
[-- Type: text/x-patch, Size: 851 bytes --]

>From ea66070d95061e623cb5430fe88efea653e511e0 Mon Sep 17 00:00:00 2001
From: Christian Stimming <stimming@tuhh.de>
Date: Thu, 19 Jul 2007 12:48:08 +0200
Subject: [PATCH] Initialize msgcat (gettext).

---
 git-gui/git-gui.sh |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 2077261..c56a3f1 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -108,6 +108,12 @@ if {$idx ne {}} {
 }
 unset -nocomplain oguirel idx fd
 
+## Internationalization (i18n) through gettext. See
+## http://www.gnu.org/software/gettext/manual/html_node/Tcl.html
+package require msgcat
+::msgcat::mcload [file join $oguilib msgs]
+proc _ {s} {return [::msgcat::mc $s]}
+
 ######################################################################
 ##
 ## read only globals
-- 
1.5.3.rc2.4.g726f9


[-- Attachment #3: 0002-Mark-strings-for-translation.patch --]
[-- Type: text/x-patch, Size: 16181 bytes --]

>From 154d29786bdda205357595e22b3385d7cdb77453 Mon Sep 17 00:00:00 2001
From: Christian Stimming <stimming@tuhh.de>
Date: Thu, 19 Jul 2007 12:49:09 +0200
Subject: [PATCH] Mark strings for translation

---
 git-gui/git-gui.sh |  154 ++++++++++++++++++++++++++--------------------------
 1 files changed, 77 insertions(+), 77 deletions(-)

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index c56a3f1..45b7ef1 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -1618,18 +1618,18 @@ set ui_comm {}
 # -- Menu Bar
 #
 menu .mbar -tearoff 0
-.mbar add cascade -label Repository -menu .mbar.repository
-.mbar add cascade -label Edit -menu .mbar.edit
+.mbar add cascade -label [_ Repository] -menu .mbar.repository
+.mbar add cascade -label [_ Edit] -menu .mbar.edit
 if {[is_enabled branch]} {
-	.mbar add cascade -label Branch -menu .mbar.branch
+	.mbar add cascade -label [_ Branch] -menu .mbar.branch
 }
 if {[is_enabled multicommit] || [is_enabled singlecommit]} {
-	.mbar add cascade -label Commit -menu .mbar.commit
+	.mbar add cascade -label [_ Commit] -menu .mbar.commit
 }
 if {[is_enabled transport]} {
-	.mbar add cascade -label Merge -menu .mbar.merge
-	.mbar add cascade -label Fetch -menu .mbar.fetch
-	.mbar add cascade -label Push -menu .mbar.push
+	.mbar add cascade -label [_ Merge] -menu .mbar.merge
+	.mbar add cascade -label [_ Fetch] -menu .mbar.fetch
+	.mbar add cascade -label [_ Push] -menu .mbar.push
 }
 . configure -menu .mbar
 
@@ -1638,75 +1638,75 @@ if {[is_enabled transport]} {
 menu .mbar.repository
 
 .mbar.repository add command \
-	-label {Browse Current Branch} \
+	-label [_ {Browse Current Branch}] \
 	-command {browser::new $current_branch}
 trace add variable current_branch write ".mbar.repository entryconf [.mbar.repository index last] -label \"Browse \$current_branch\" ;#"
 .mbar.repository add separator
 
 .mbar.repository add command \
-	-label {Visualize Current Branch} \
+	-label [_ {Visualize Current Branch}]  \
 	-command {do_gitk $current_branch}
 trace add variable current_branch write ".mbar.repository entryconf [.mbar.repository index last] -label \"Visualize \$current_branch\" ;#"
 .mbar.repository add command \
-	-label {Visualize All Branches} \
+	-label [_ {Visualize All Branches}] \
 	-command {do_gitk --all}
 .mbar.repository add separator
 
 if {[is_enabled multicommit]} {
-	.mbar.repository add command -label {Database Statistics} \
+	.mbar.repository add command -label [_ {Database Statistics}] \
 		-command do_stats
 
-	.mbar.repository add command -label {Compress Database} \
+	.mbar.repository add command -label [_ {Compress Database}] \
 		-command do_gc
 
-	.mbar.repository add command -label {Verify Database} \
+	.mbar.repository add command -label [_ {Verify Database}] \
 		-command do_fsck_objects
 
 	.mbar.repository add separator
 
 	if {[is_Cygwin]} {
 		.mbar.repository add command \
-			-label {Create Desktop Icon} \
+			-label [_ {Create Desktop Icon}] \
 			-command do_cygwin_shortcut
 	} elseif {[is_Windows]} {
 		.mbar.repository add command \
-			-label {Create Desktop Icon} \
+			-label [_ {Create Desktop Icon}] \
 			-command do_windows_shortcut
 	} elseif {[is_MacOSX]} {
 		.mbar.repository add command \
-			-label {Create Desktop Icon} \
+			-label [_ {Create Desktop Icon}] \
 			-command do_macosx_app
 	}
 }
 
-.mbar.repository add command -label Quit \
+.mbar.repository add command -label [_ Quit] \
 	-command do_quit \
 	-accelerator $M1T-Q
 
 # -- Edit Menu
 #
 menu .mbar.edit
-.mbar.edit add command -label Undo \
+.mbar.edit add command -label [_ Undo] \
 	-command {catch {[focus] edit undo}} \
 	-accelerator $M1T-Z
-.mbar.edit add command -label Redo \
+.mbar.edit add command -label [_ Redo] \
 	-command {catch {[focus] edit redo}} \
 	-accelerator $M1T-Y
 .mbar.edit add separator
-.mbar.edit add command -label Cut \
+.mbar.edit add command -label [_ Cut] \
 	-command {catch {tk_textCut [focus]}} \
 	-accelerator $M1T-X
-.mbar.edit add command -label Copy \
+.mbar.edit add command -label [_ Copy] \
 	-command {catch {tk_textCopy [focus]}} \
 	-accelerator $M1T-C
-.mbar.edit add command -label Paste \
+.mbar.edit add command -label [_ Paste] \
 	-command {catch {tk_textPaste [focus]; [focus] see insert}} \
 	-accelerator $M1T-V
-.mbar.edit add command -label Delete \
+.mbar.edit add command -label [_ Delete] \
 	-command {catch {[focus] delete sel.first sel.last}} \
 	-accelerator Del
 .mbar.edit add separator
-.mbar.edit add command -label {Select All} \
+.mbar.edit add command -label [_ {Select All}] \
 	-command {catch {[focus] tag add sel 0.0 end}} \
 	-accelerator $M1T-A
 
@@ -1715,29 +1715,29 @@ menu .mbar.edit
 if {[is_enabled branch]} {
 	menu .mbar.branch
 
-	.mbar.branch add command -label {Create...} \
+	.mbar.branch add command -label [_ {Create...}] \
 		-command branch_create::dialog \
 		-accelerator $M1T-N
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label {Checkout...} \
+	.mbar.branch add command -label [_ {Checkout...}] \
 		-command branch_checkout::dialog \
 		-accelerator $M1T-O
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label {Rename...} \
+	.mbar.branch add command -label [_ {Rename...}] \
 		-command branch_rename::dialog
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label {Delete...} \
+	.mbar.branch add command -label [_ {Delete...}] \
 		-command branch_delete::dialog
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label {Reset...} \
+	.mbar.branch add command -label [_ {Reset...}] \
 		-command merge::reset_hard
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
@@ -1749,7 +1749,7 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 	menu .mbar.commit
 
 	.mbar.commit add radiobutton \
-		-label {New Commit} \
+		-label [_ {New Commit}] \
 		-command do_select_commit_type \
 		-variable selected_commit_type \
 		-value new
@@ -1757,7 +1757,7 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
 	.mbar.commit add radiobutton \
-		-label {Amend Last Commit} \
+		-label [_ {Amend Last Commit}] \
 		-command do_select_commit_type \
 		-variable selected_commit_type \
 		-value amend
@@ -1766,40 +1766,40 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 
 	.mbar.commit add separator
 
-	.mbar.commit add command -label Rescan \
+	.mbar.commit add command -label [_ Rescan] \
 		-command do_rescan \
 		-accelerator F5
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label {Add To Commit} \
+	.mbar.commit add command -label [_ {Add To Commit}] \
 		-command do_add_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label {Add Existing To Commit} \
+	.mbar.commit add command -label [_ {Add Existing To Commit}] \
 		-command do_add_all \
 		-accelerator $M1T-I
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label {Unstage From Commit} \
+	.mbar.commit add command -label [_ {Unstage From Commit}] \
 		-command do_unstage_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label {Revert Changes} \
+	.mbar.commit add command -label [_ {Revert Changes}] \
 		-command do_revert_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
 	.mbar.commit add separator
 
-	.mbar.commit add command -label {Sign Off} \
+	.mbar.commit add command -label [_ {Sign Off}] \
 		-command do_signoff \
 		-accelerator $M1T-S
 
-	.mbar.commit add command -label Commit \
+	.mbar.commit add command -label [_ Commit] \
 		-command do_commit \
 		-accelerator $M1T-Return
 	lappend disable_on_lock \
@@ -1810,11 +1810,11 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 #
 if {[is_enabled branch]} {
 	menu .mbar.merge
-	.mbar.merge add command -label {Local Merge...} \
+	.mbar.merge add command -label [_ {Local Merge...}] \
 		-command merge::dialog
 	lappend disable_on_lock \
 		[list .mbar.merge entryconf [.mbar.merge index last] -state]
-	.mbar.merge add command -label {Abort Merge...} \
+	.mbar.merge add command -label [_ {Abort Merge...}] \
 		-command merge::reset_hard
 	lappend disable_on_lock \
 		[list .mbar.merge entryconf [.mbar.merge index last] -state]
@@ -1827,28 +1827,28 @@ if {[is_enabled transport]} {
 	menu .mbar.fetch
 
 	menu .mbar.push
-	.mbar.push add command -label {Push...} \
+	.mbar.push add command -label [_ {Push...}] \
 		-command do_push_anywhere \
 		-accelerator $M1T-P
-	.mbar.push add command -label {Delete...} \
+	.mbar.push add command -label [_ {Delete...}] \
 		-command remote_branch_delete::dialog
 }
 
 if {[is_MacOSX]} {
 	# -- Apple Menu (Mac OS X only)
 	#
-	.mbar add cascade -label Apple -menu .mbar.apple
+	.mbar add cascade -label [_ Apple] -menu .mbar.apple
 	menu .mbar.apple
 
-	.mbar.apple add command -label "About [appname]" \
+	.mbar.apple add command -label [format [_ "About %s"] [appname]] \
 		-command do_about
-	.mbar.apple add command -label "Options..." \
+	.mbar.apple add command -label [_ "Options..."] \
 		-command do_options
 } else {
 	# -- Edit Menu
 	#
 	.mbar.edit add separator
-	.mbar.edit add command -label {Options...} \
+	.mbar.edit add command -label [_ {Options...}] \
 		-command do_options
 
 	# -- Tools Menu
@@ -1870,9 +1870,9 @@ if {[is_MacOSX]} {
 			rescan ui_ready
 		}
 	}
-	.mbar add cascade -label Tools -menu .mbar.tools
+	.mbar add cascade -label [_ Tools] -menu .mbar.tools
 	menu .mbar.tools
-	.mbar.tools add command -label "Migrate" \
+	.mbar.tools add command -label [_ "Migrate"] \
 		-command do_miga
 	lappend disable_on_lock \
 		[list .mbar.tools entryconf [.mbar.tools index last] -state]
@@ -1881,11 +1881,11 @@ if {[is_MacOSX]} {
 
 # -- Help Menu
 #
-.mbar add cascade -label Help -menu .mbar.help
+.mbar add cascade -label [_ Help] -menu .mbar.help
 menu .mbar.help
 
 if {![is_MacOSX]} {
-	.mbar.help add command -label "About [appname]" \
+	.mbar.help add command -label [format [_ "About %s"] [appname]] \
 		-command do_about
 }
 
@@ -1922,7 +1922,7 @@ if {[file isfile $doc_path]} {
 }
 
 if {$browser ne {}} {
-	.mbar.help add command -label {Online Documentation} \
+	.mbar.help add command -label [_ {Online Documentation}] \
 		-command [list exec $browser $doc_url &]
 }
 unset browser doc_path doc_url
@@ -2167,12 +2167,12 @@ label $ui_coml \
 proc trace_commit_type {varname args} {
 	global ui_coml commit_type
 	switch -glob -- $commit_type {
-	initial       {set txt {Initial Commit Message:}}
-	amend         {set txt {Amended Commit Message:}}
-	amend-initial {set txt {Amended Initial Commit Message:}}
-	amend-merge   {set txt {Amended Merge Commit Message:}}
-	merge         {set txt {Merge Commit Message:}}
-	*             {set txt {Commit Message:}}
+	initial       {set txt [_ {Initial Commit Message:}]}
+	amend         {set txt [_ {Amended Commit Message:}]}
+	amend-initial {set txt [_ {Amended Initial Commit Message:}]}
+	amend-merge   {set txt [_ {Amended Merge Commit Message:}]}
+	merge         {set txt [_ {Merge Commit Message:}]}
+	*             {set txt [_ {Commit Message:}]}
 	}
 	$ui_coml conf -text $txt
 }
@@ -2201,23 +2201,23 @@ pack .vpane.lower.commarea.buffer -side left -fill y
 set ctxm .vpane.lower.commarea.buffer.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label {Cut} \
+	-label [_ {Cut}] \
 	-command {tk_textCut $ui_comm}
 $ctxm add command \
-	-label {Copy} \
+	-label [_ {Copy}] \
 	-command {tk_textCopy $ui_comm}
 $ctxm add command \
-	-label {Paste} \
+	-label [_ {Paste}] \
 	-command {tk_textPaste $ui_comm}
 $ctxm add command \
-	-label {Delete} \
+	-label [_ {Delete}] \
 	-command {$ui_comm delete sel.first sel.last}
 $ctxm add separator
 $ctxm add command \
-	-label {Select All} \
+	-label [_ {Select All}] \
 	-command {focus $ui_comm;$ui_comm tag add sel 0.0 end}
 $ctxm add command \
-	-label {Copy All} \
+	-label [_ {Copy All}] \
 	-command {
 		$ui_comm tag add sel 0.0 end
 		tk_textCopy $ui_comm
@@ -2225,7 +2225,7 @@ $ctxm add command \
 	}
 $ctxm add separator
 $ctxm add command \
-	-label {Sign Off} \
+	-label [_ {Sign Off}] \
 	-command do_signoff
 bind_button3 $ui_comm "tk_popup $ctxm %X %Y"
 
@@ -2275,7 +2275,7 @@ pack .vpane.lower.diff.header.path -fill x
 set ctxm .vpane.lower.diff.header.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label {Copy} \
+	-label [_ {Copy}] \
 	-command {
 		clipboard clear
 		clipboard append \
@@ -2343,19 +2343,19 @@ $ui_diff tag raise sel
 set ctxm .vpane.lower.diff.body.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label {Refresh} \
+	-label [_ {Refresh}] \
 	-command reshow_diff
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label {Copy} \
+	-label [_ {Copy}] \
 	-command {tk_textCopy $ui_diff}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label {Select All} \
+	-label [_ {Select All}] \
 	-command {focus $ui_diff;$ui_diff tag add sel 0.0 end}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label {Copy All} \
+	-label [_ {Copy All}] \
 	-command {
 		$ui_diff tag add sel 0.0 end
 		tk_textCopy $ui_diff
@@ -2364,44 +2364,44 @@ $ctxm add command \
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
 $ctxm add command \
-	-label {Apply/Reverse Hunk} \
+	-label [_ {Apply/Reverse Hunk}] \
 	-command {apply_hunk $cursorX $cursorY}
 set ui_diff_applyhunk [$ctxm index last]
 lappend diff_actions [list $ctxm entryconf $ui_diff_applyhunk -state]
 $ctxm add separator
 $ctxm add command \
-	-label {Decrease Font Size} \
+	-label [_ {Decrease Font Size}] \
 	-command {incr_font_size font_diff -1}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label {Increase Font Size} \
+	-label [_ {Increase Font Size}] \
 	-command {incr_font_size font_diff 1}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
 $ctxm add command \
-	-label {Show Less Context} \
+	-label [_ {Show Less Context}] \
 	-command {if {$repo_config(gui.diffcontext) >= 1} {
 		incr repo_config(gui.diffcontext) -1
 		reshow_diff
 	}}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label {Show More Context} \
+	-label [_ {Show More Context}] \
 	-command {if {$repo_config(gui.diffcontext) < 99} {
 		incr repo_config(gui.diffcontext)
 		reshow_diff
 	}}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
-$ctxm add command -label {Options...} \
+$ctxm add command -label [_ {Options...}] \
 	-command do_options
 bind_button3 $ui_diff "
 	set cursorX %x
 	set cursorY %y
 	if {\$ui_index eq \$current_diff_side} {
-		$ctxm entryconf $ui_diff_applyhunk -label {Unstage Hunk From Commit}
+		$ctxm entryconf $ui_diff_applyhunk -label [_ {Unstage Hunk From Commit}]
 	} else {
-		$ctxm entryconf $ui_diff_applyhunk -label {Stage Hunk For Commit}
+		$ctxm entryconf $ui_diff_applyhunk -label [_ {Stage Hunk For Commit}]
 	}
 	tk_popup $ctxm %X %Y
 "
-- 
1.5.3.rc2.4.g726f9


[-- Attachment #4: 0003-Enclose-strings-in-quotes-not-in-braces-so-that-xg.patch --]
[-- Type: text/x-patch, Size: 12418 bytes --]

>From 3ff00ecdabb82448b95ad3b9e738441236c0eb11 Mon Sep 17 00:00:00 2001
From: Christian Stimming <stimming@tuhh.de>
Date: Thu, 19 Jul 2007 12:49:11 +0200
Subject: [PATCH] Enclose strings in quotes, not in braces, so that xgettext finds them

---
 git-gui/git-gui.sh |  104 ++++++++++++++++++++++++++--------------------------
 1 files changed, 52 insertions(+), 52 deletions(-)

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 45b7ef1..5eef35d 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -1638,43 +1638,43 @@ if {[is_enabled transport]} {
 menu .mbar.repository
 
 .mbar.repository add command \
-	-label [_ {Browse Current Branch}] \
+	-label [_ "Browse Current Branch"] \
 	-command {browser::new $current_branch}
 trace add variable current_branch write ".mbar.repository entryconf [.mbar.repository index last] -label \"Browse \$current_branch\" ;#"
 .mbar.repository add separator
 
 .mbar.repository add command \
-	-label [_ {Visualize Current Branch}]  \
+	-label [_ "Visualize Current Branch"]  \
 	-command {do_gitk $current_branch}
 trace add variable current_branch write ".mbar.repository entryconf [.mbar.repository index last] -label \"Visualize \$current_branch\" ;#"
 .mbar.repository add command \
-	-label [_ {Visualize All Branches}] \
+	-label [_ "Visualize All Branches"] \
 	-command {do_gitk --all}
 .mbar.repository add separator
 
 if {[is_enabled multicommit]} {
-	.mbar.repository add command -label [_ {Database Statistics}] \
+	.mbar.repository add command -label [_ "Database Statistics"] \
 		-command do_stats
 
-	.mbar.repository add command -label [_ {Compress Database}] \
+	.mbar.repository add command -label [_ "Compress Database"] \
 		-command do_gc
 
-	.mbar.repository add command -label [_ {Verify Database}] \
+	.mbar.repository add command -label [_ "Verify Database"] \
 		-command do_fsck_objects
 
 	.mbar.repository add separator
 
 	if {[is_Cygwin]} {
 		.mbar.repository add command \
-			-label [_ {Create Desktop Icon}] \
+			-label [_ "Create Desktop Icon"] \
 			-command do_cygwin_shortcut
 	} elseif {[is_Windows]} {
 		.mbar.repository add command \
-			-label [_ {Create Desktop Icon}] \
+			-label [_ "Create Desktop Icon"] \
 			-command do_windows_shortcut
 	} elseif {[is_MacOSX]} {
 		.mbar.repository add command \
-			-label [_ {Create Desktop Icon}] \
+			-label [_ "Create Desktop Icon"] \
 			-command do_macosx_app
 	}
 }
@@ -1706,7 +1706,7 @@ menu .mbar.edit
 	-command {catch {[focus] delete sel.first sel.last}} \
 	-accelerator Del
 .mbar.edit add separator
-.mbar.edit add command -label [_ {Select All}] \
+.mbar.edit add command -label [_ "Select All"] \
 	-command {catch {[focus] tag add sel 0.0 end}} \
 	-accelerator $M1T-A
 
@@ -1715,29 +1715,29 @@ menu .mbar.edit
 if {[is_enabled branch]} {
 	menu .mbar.branch
 
-	.mbar.branch add command -label [_ {Create...}] \
+	.mbar.branch add command -label [_ "Create..."] \
 		-command branch_create::dialog \
 		-accelerator $M1T-N
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label [_ {Checkout...}] \
+	.mbar.branch add command -label [_ "Checkout..."] \
 		-command branch_checkout::dialog \
 		-accelerator $M1T-O
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label [_ {Rename...}] \
+	.mbar.branch add command -label [_ "Rename..."] \
 		-command branch_rename::dialog
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label [_ {Delete...}] \
+	.mbar.branch add command -label [_ "Delete..."] \
 		-command branch_delete::dialog
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
 
-	.mbar.branch add command -label [_ {Reset...}] \
+	.mbar.branch add command -label [_ "Reset..."] \
 		-command merge::reset_hard
 	lappend disable_on_lock [list .mbar.branch entryconf \
 		[.mbar.branch index last] -state]
@@ -1749,7 +1749,7 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 	menu .mbar.commit
 
 	.mbar.commit add radiobutton \
-		-label [_ {New Commit}] \
+		-label [_ "New Commit"] \
 		-command do_select_commit_type \
 		-variable selected_commit_type \
 		-value new
@@ -1757,7 +1757,7 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
 	.mbar.commit add radiobutton \
-		-label [_ {Amend Last Commit}] \
+		-label [_ "Amend Last Commit"] \
 		-command do_select_commit_type \
 		-variable selected_commit_type \
 		-value amend
@@ -1772,30 +1772,30 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label [_ {Add To Commit}] \
+	.mbar.commit add command -label [_ "Add To Commit"] \
 		-command do_add_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label [_ {Add Existing To Commit}] \
+	.mbar.commit add command -label [_ "Add Existing To Commit"] \
 		-command do_add_all \
 		-accelerator $M1T-I
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label [_ {Unstage From Commit}] \
+	.mbar.commit add command -label [_ "Unstage From Commit"] \
 		-command do_unstage_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
-	.mbar.commit add command -label [_ {Revert Changes}] \
+	.mbar.commit add command -label [_ "Revert Changes"] \
 		-command do_revert_selection
 	lappend disable_on_lock \
 		[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
 	.mbar.commit add separator
 
-	.mbar.commit add command -label [_ {Sign Off}] \
+	.mbar.commit add command -label [_ "Sign Off"] \
 		-command do_signoff \
 		-accelerator $M1T-S
 
@@ -1810,11 +1810,11 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 #
 if {[is_enabled branch]} {
 	menu .mbar.merge
-	.mbar.merge add command -label [_ {Local Merge...}] \
+	.mbar.merge add command -label [_ "Local Merge..."] \
 		-command merge::dialog
 	lappend disable_on_lock \
 		[list .mbar.merge entryconf [.mbar.merge index last] -state]
-	.mbar.merge add command -label [_ {Abort Merge...}] \
+	.mbar.merge add command -label [_ "Abort Merge..."] \
 		-command merge::reset_hard
 	lappend disable_on_lock \
 		[list .mbar.merge entryconf [.mbar.merge index last] -state]
@@ -1827,10 +1827,10 @@ if {[is_enabled transport]} {
 	menu .mbar.fetch
 
 	menu .mbar.push
-	.mbar.push add command -label [_ {Push...}] \
+	.mbar.push add command -label [_ "Push..."] \
 		-command do_push_anywhere \
 		-accelerator $M1T-P
-	.mbar.push add command -label [_ {Delete...}] \
+	.mbar.push add command -label [_ "Delete..."] \
 		-command remote_branch_delete::dialog
 }
 
@@ -1848,7 +1848,7 @@ if {[is_MacOSX]} {
 	# -- Edit Menu
 	#
 	.mbar.edit add separator
-	.mbar.edit add command -label [_ {Options...}] \
+	.mbar.edit add command -label [_ "Options..."] \
 		-command do_options
 
 	# -- Tools Menu
@@ -1922,7 +1922,7 @@ if {[file isfile $doc_path]} {
 }
 
 if {$browser ne {}} {
-	.mbar.help add command -label [_ {Online Documentation}] \
+	.mbar.help add command -label [_ "Online Documentation"] \
 		-command [list exec $browser $doc_url &]
 }
 unset browser doc_path doc_url
@@ -2167,12 +2167,12 @@ label $ui_coml \
 proc trace_commit_type {varname args} {
 	global ui_coml commit_type
 	switch -glob -- $commit_type {
-	initial       {set txt [_ {Initial Commit Message:}]}
-	amend         {set txt [_ {Amended Commit Message:}]}
-	amend-initial {set txt [_ {Amended Initial Commit Message:}]}
-	amend-merge   {set txt [_ {Amended Merge Commit Message:}]}
-	merge         {set txt [_ {Merge Commit Message:}]}
-	*             {set txt [_ {Commit Message:}]}
+	initial       {set txt [_ "Initial Commit Message:"]}
+	amend         {set txt [_ "Amended Commit Message:"]}
+	amend-initial {set txt [_ "Amended Initial Commit Message:"]}
+	amend-merge   {set txt [_ "Amended Merge Commit Message:"]}
+	merge         {set txt [_ "Merge Commit Message:"]}
+	*             {set txt [_ "Commit Message:"]}
 	}
 	$ui_coml conf -text $txt
 }
@@ -2201,23 +2201,23 @@ pack .vpane.lower.commarea.buffer -side left -fill y
 set ctxm .vpane.lower.commarea.buffer.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label [_ {Cut}] \
+	-label [_ Cut] \
 	-command {tk_textCut $ui_comm}
 $ctxm add command \
-	-label [_ {Copy}] \
+	-label [_ Copy] \
 	-command {tk_textCopy $ui_comm}
 $ctxm add command \
-	-label [_ {Paste}] \
+	-label [_ Paste] \
 	-command {tk_textPaste $ui_comm}
 $ctxm add command \
-	-label [_ {Delete}] \
+	-label [_ Delete] \
 	-command {$ui_comm delete sel.first sel.last}
 $ctxm add separator
 $ctxm add command \
-	-label [_ {Select All}] \
+	-label [_ "Select All"] \
 	-command {focus $ui_comm;$ui_comm tag add sel 0.0 end}
 $ctxm add command \
-	-label [_ {Copy All}] \
+	-label [_ "Copy All"] \
 	-command {
 		$ui_comm tag add sel 0.0 end
 		tk_textCopy $ui_comm
@@ -2225,7 +2225,7 @@ $ctxm add command \
 	}
 $ctxm add separator
 $ctxm add command \
-	-label [_ {Sign Off}] \
+	-label [_ "Sign Off"] \
 	-command do_signoff
 bind_button3 $ui_comm "tk_popup $ctxm %X %Y"
 
@@ -2275,7 +2275,7 @@ pack .vpane.lower.diff.header.path -fill x
 set ctxm .vpane.lower.diff.header.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label [_ {Copy}] \
+	-label [_ Copy] \
 	-command {
 		clipboard clear
 		clipboard append \
@@ -2343,19 +2343,19 @@ $ui_diff tag raise sel
 set ctxm .vpane.lower.diff.body.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
-	-label [_ {Refresh}] \
+	-label [_ Refresh] \
 	-command reshow_diff
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label [_ {Copy}] \
+	-label [_ Copy] \
 	-command {tk_textCopy $ui_diff}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label [_ {Select All}] \
+	-label [_ "Select All"] \
 	-command {focus $ui_diff;$ui_diff tag add sel 0.0 end}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label [_ {Copy All}] \
+	-label [_ "Copy All"] \
 	-command {
 		$ui_diff tag add sel 0.0 end
 		tk_textCopy $ui_diff
@@ -2364,36 +2364,36 @@ $ctxm add command \
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
 $ctxm add command \
-	-label [_ {Apply/Reverse Hunk}] \
+	-label [_ "Apply/Reverse Hunk"] \
 	-command {apply_hunk $cursorX $cursorY}
 set ui_diff_applyhunk [$ctxm index last]
 lappend diff_actions [list $ctxm entryconf $ui_diff_applyhunk -state]
 $ctxm add separator
 $ctxm add command \
-	-label [_ {Decrease Font Size}] \
+	-label [_ "Decrease Font Size"] \
 	-command {incr_font_size font_diff -1}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label [_ {Increase Font Size}] \
+	-label [_ "Increase Font Size"] \
 	-command {incr_font_size font_diff 1}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
 $ctxm add command \
-	-label [_ {Show Less Context}] \
+	-label [_ "Show Less Context"] \
 	-command {if {$repo_config(gui.diffcontext) >= 1} {
 		incr repo_config(gui.diffcontext) -1
 		reshow_diff
 	}}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add command \
-	-label [_ {Show More Context}] \
+	-label [_ "Show More Context"] \
 	-command {if {$repo_config(gui.diffcontext) < 99} {
 		incr repo_config(gui.diffcontext)
 		reshow_diff
 	}}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 $ctxm add separator
-$ctxm add command -label [_ {Options...}] \
+$ctxm add command -label [_ "Options..."] \
 	-command do_options
 bind_button3 $ui_diff "
 	set cursorX %x
-- 
1.5.3.rc2.4.g726f9


[-- Attachment #5: 0004-Initial-German-translation-for-testing-of-i18n.patch --]
[-- Type: text/x-patch, Size: 5071 bytes --]

>From 9b7ef0f5d5627e65e5ab354cf99c8939770416d9 Mon Sep 17 00:00:00 2001
From: Christian Stimming <stimming@tuhh.de>
Date: Thu, 19 Jul 2007 12:50:19 +0200
Subject: [PATCH] Initial German translation for testing of i18n.

---
 git-gui/po/de.po |  249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 249 insertions(+), 0 deletions(-)
 create mode 100644 git-gui/po/de.po

diff --git a/git-gui/po/de.po b/git-gui/po/de.po
new file mode 100644
index 0000000..7a74329
--- /dev/null
+++ b/git-gui/po/de.po
@@ -0,0 +1,249 @@
+# Translation of git-gui to German.
+# Copyright (C) 2007 Linux Thorvalds
+# This file is distributed under the same license as the git package.
+# Christian Stimming <stimming@tuhh.de>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: git-gui\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-07-18 18:27+0200\n"
+"PO-Revision-Date: 2007-07-19 11:45+0200\n"
+"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
+"Language-Team: German\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: git-gui.sh:1622
+msgid "Repository"
+msgstr ""
+
+#: git-gui.sh:1623
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: git-gui.sh:1625
+msgid "Branch"
+msgstr ""
+
+#: git-gui.sh:1628 git-gui.sh:1803
+msgid "Commit"
+msgstr ""
+
+#: git-gui.sh:1631
+msgid "Merge"
+msgstr ""
+
+#: git-gui.sh:1632
+msgid "Fetch"
+msgstr ""
+
+#: git-gui.sh:1633
+msgid "Push"
+msgstr ""
+
+#: git-gui.sh:1642
+msgid "Browse Current Branch"
+msgstr ""
+
+#: git-gui.sh:1648
+msgid "Visualize Current Branch"
+msgstr ""
+
+#: git-gui.sh:1652
+msgid "Visualize All Branches"
+msgstr ""
+
+#: git-gui.sh:1657
+msgid "Database Statistics"
+msgstr ""
+
+#: git-gui.sh:1660
+msgid "Compress Database"
+msgstr ""
+
+#: git-gui.sh:1663
+msgid "Verify Database"
+msgstr ""
+
+#: git-gui.sh:1670 git-gui.sh:1674 git-gui.sh:1678
+msgid "Create Desktop Icon"
+msgstr ""
+
+#: git-gui.sh:1683
+msgid "Quit"
+msgstr "Beenden"
+
+#: git-gui.sh:1690
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: git-gui.sh:1693
+msgid "Redo"
+msgstr ""
+
+#: git-gui.sh:1697 git-gui.sh:2205
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: git-gui.sh:1700 git-gui.sh:2208 git-gui.sh:2279 git-gui.sh:2351
+msgid "Copy"
+msgstr "Kopieren"
+
+#: git-gui.sh:1703 git-gui.sh:2211
+msgid "Paste"
+msgstr "Einfügen"
+
+#: git-gui.sh:1706 git-gui.sh:2214
+msgid "Delete"
+msgstr "Löschen"
+
+#: git-gui.sh:1710 git-gui.sh:2218 git-gui.sh:2355
+msgid "Select All"
+msgstr ""
+
+#: git-gui.sh:1719
+msgid "Create..."
+msgstr ""
+
+#: git-gui.sh:1725
+msgid "Checkout..."
+msgstr ""
+
+#: git-gui.sh:1731
+msgid "Rename..."
+msgstr ""
+
+#: git-gui.sh:1736 git-gui.sh:1834
+msgid "Delete..."
+msgstr "Löschen..."
+
+#: git-gui.sh:1741
+msgid "Reset..."
+msgstr ""
+
+#: git-gui.sh:1753
+msgid "New Commit"
+msgstr ""
+
+#: git-gui.sh:1761
+msgid "Amend Last Commit"
+msgstr ""
+
+#: git-gui.sh:1770
+msgid "Rescan"
+msgstr "Neu laden"
+
+#: git-gui.sh:1776
+msgid "Add To Commit"
+msgstr ""
+
+#: git-gui.sh:1781
+msgid "Add Existing To Commit"
+msgstr ""
+
+#: git-gui.sh:1787
+msgid "Unstage From Commit"
+msgstr ""
+
+#: git-gui.sh:1792
+msgid "Revert Changes"
+msgstr ""
+
+#: git-gui.sh:1799 git-gui.sh:2229
+msgid "Sign Off"
+msgstr ""
+
+#: git-gui.sh:1814
+msgid "Local Merge..."
+msgstr ""
+
+#: git-gui.sh:1818
+msgid "Abort Merge..."
+msgstr ""
+
+#: git-gui.sh:1831
+msgid "Push..."
+msgstr ""
+
+#: git-gui.sh:1841
+msgid "Apple"
+msgstr "Apple"
+
+#: git-gui.sh:1844 git-gui.sh:1889
+#, tcl-format
+msgid "About %s"
+msgstr ""
+
+#: git-gui.sh:1846 git-gui.sh:1852 git-gui.sh:2397
+msgid "Options..."
+msgstr ""
+
+#: git-gui.sh:1874
+msgid "Tools"
+msgstr "Werkzeuge"
+
+#: git-gui.sh:1876
+msgid "Migrate"
+msgstr ""
+
+#: git-gui.sh:1885
+msgid "Help"
+msgstr "Hilfe"
+
+#: git-gui.sh:1926
+msgid "Online Documentation"
+msgstr ""
+
+#: git-gui.sh:2171
+msgid "Initial Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2172
+msgid "Amended Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2173
+msgid "Amended Initial Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2174
+msgid "Amended Merge Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2175
+msgid "Merge Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2176
+msgid "Commit Message:"
+msgstr ""
+
+#: git-gui.sh:2221 git-gui.sh:2359
+msgid "Copy All"
+msgstr "Alle kopieren"
+
+#: git-gui.sh:2347
+msgid "Refresh"
+msgstr "Aktualisieren"
+
+#: git-gui.sh:2368
+msgid "Apply/Reverse Hunk"
+msgstr ""
+
+#: git-gui.sh:2374
+msgid "Decrease Font Size"
+msgstr "Schriftgröße verkleinern"
+
+#: git-gui.sh:2378
+msgid "Increase Font Size"
+msgstr "Schriftgröße vergrößern"
+
+#: git-gui.sh:2383
+msgid "Show Less Context"
+msgstr ""
+
+#: git-gui.sh:2390
+msgid "Show More Context"
+msgstr ""
-- 
1.5.3.rc2.4.g726f9


[-- Attachment #6: 0005-Makefile-rules-for-message-catalog-generation-and-in.patch --]
[-- Type: text/x-patch, Size: 2073 bytes --]

>From a91dc11906f6ced938dc79bded2fa46fcc147524 Mon Sep 17 00:00:00 2001
From: Christian Stimming <stimming@tuhh.de>
Date: Thu, 19 Jul 2007 12:50:32 +0200
Subject: [PATCH] Makefile rules for message catalog generation and installation.

---
 git-gui/Makefile |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/git-gui/Makefile b/git-gui/Makefile
index 1bac6fe..f6a6ce3 100644
--- a/git-gui/Makefile
+++ b/git-gui/Makefile
@@ -103,6 +103,19 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
 $(GITGUI_BUILT_INS): git-gui
 	$(QUIET_BUILT_IN)rm -f $@ && ln git-gui $@
 
+XGETTEXT   ?= xgettext
+msgsdir    ?= $(libdir)/msgs
+msgsdir_SQ  = $(subst ','\'',$(msgsdir))
+PO_TEMPLATE = po/git-gui.pot
+ALL_LINGUAS = de
+
+$(PO_TEMPLATE): $(SCRIPT_SH) $(ALL_LIBFILES)
+	$(XGETTEXT) -k_ -LTcl -o $@ $(SCRIPT_SH) $(ALL_LIBFILES)
+update-po:: $(PO_TEMPLATE)
+	( cd po ; for A in *.po ; do echo Updating $${A} ; msgmerge -U $${A} ../$(PO_TEMPLATE) ; done )
+catalogs:: $(PO_TEMPLATE)
+	( cd po ; for A in $(ALL_LINGUAS) ; do echo Generating catalog $${A} ; msgfmt --statistics --tcl $${A}.po -l $${A} -d . ; done )
+
 lib/tclIndex: $(ALL_LIBFILES)
 	$(QUIET_INDEX)if echo \
 	  $(foreach p,$(PRELOAD_FILES),source $p\;) \
@@ -136,7 +149,7 @@ GIT-GUI-VARS: .FORCE-GIT-GUI-VARS
 		echo 1>$@ "$$VARS"; \
 	fi
 
-all:: $(ALL_PROGRAMS) lib/tclIndex
+all:: $(ALL_PROGRAMS) lib/tclIndex catalogs
 
 install: all
 	$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1)
@@ -145,6 +158,8 @@ install: all
 	$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(INSTALL_D1)
 	$(QUIET)$(INSTALL_R0)lib/tclIndex $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)'
 	$(QUIET)$(foreach p,$(ALL_LIBFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' &&) true
+	$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(msgsdir_SQ)' $(INSTALL_D1)
+	$(QUIET)$(foreach p,$(ALL_LINGUAS), $(INSTALL_R0)po/$p.msg $(INSTALL_R1) '$(DESTDIR_SQ)$(msgsdir_SQ)' &&) true
 
 dist-version:
 	@mkdir -p $(TARDIR)
-- 
1.5.3.rc2.4.g726f9


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

end of thread, other threads:[~2007-07-24 14:57 UTC | newest]

Thread overview: 69+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-19 17:33 [PATCH] Internationalization of git-gui Brett Schwarz
2007-07-20  5:04 ` Shawn O. Pearce
2007-07-20  8:56   ` Christian Stimming
2007-07-21  2:17     ` Shawn O. Pearce
2007-07-21  7:50       ` Christian Stimming
2007-07-21  8:03         ` Shawn O. Pearce
2007-07-21 12:33           ` [PATCH 1/5] " Christian Stimming
2007-07-21 12:34             ` [PATCH 2/5] " Christian Stimming
2007-07-21 12:36               ` [PATCH 3/5] " Christian Stimming
2007-07-21 12:37                 ` Christian Stimming
2007-07-21 12:41                   ` [PATCH 5/5] " Christian Stimming
2007-07-21 13:46                   ` [PATCH 3/5] " David Kastrup
2007-07-21 16:27                     ` Simon 'corecode' Schubert
2007-07-21 17:41                       ` David Kastrup
2007-07-21 18:50                     ` Translation process (was: [PATCH 3/5] Internationalization of git-gui) Christian Stimming
2007-07-21 19:27                     ` German translations " Christian Stimming
2007-07-21 19:57                       ` German translations David Kastrup
2007-07-22 13:16                         ` Christian Stimming
2007-07-22 14:52                         ` Edgar Toernig
2007-07-23 19:20                           ` Christian Stimming
2007-07-21 20:09                       ` David Kastrup
2007-07-22  7:47                   ` [PATCH 3/5] Internationalization of git-gui Shawn O. Pearce
2007-07-22  8:05                     ` Junio C Hamano
2007-07-22 12:16                       ` Christian Stimming
2007-07-22 12:44                         ` Johannes Schindelin
2007-07-22 12:57                           ` Christian Stimming
2007-07-22 13:06                             ` Johannes Schindelin
2007-07-22  7:45               ` [PATCH 2/5] " Shawn O. Pearce
2007-07-22 12:24                 ` Christian Stimming
2007-07-21 14:22             ` [PATCH 1/5] " Johannes Schindelin
2007-07-21 19:41               ` Junio C Hamano
2007-07-21 19:50                 ` Christian Stimming
2007-07-21 21:20                   ` Johannes Schindelin
2007-07-21 21:28                   ` Junio C Hamano
2007-07-21 21:35                     ` Johannes Schindelin
2007-07-22 13:35                     ` Christian Stimming
2007-07-22 14:29                       ` Johannes Schindelin
2007-07-23 20:16                     ` [PATCH] Add glossary that can be converted into a po file for each language Christian Stimming
2007-07-24  1:48                       ` Junio C Hamano
2007-07-24  6:56                       ` Junio C Hamano
2007-07-24  9:34                         ` Christian Stimming
2007-07-21 21:12                 ` [PATCH 1/5] Internationalization of git-gui Johannes Schindelin
2007-07-21 22:36                   ` Junio C Hamano
2007-07-21 23:01                     ` Johannes Schindelin
2007-07-22  7:38             ` Shawn O. Pearce
2007-07-23 19:23               ` Christian Stimming
2007-07-24 14:57                 ` Shawn O. Pearce
2007-07-20  9:03 ` [PATCH] " Christian Stimming
  -- strict thread matches above, loose matches on Subject: below --
2007-07-21 16:29 Brett Schwarz
2007-07-20 18:34 Brett Schwarz
2007-07-20 21:40 ` Christian Stimming
2007-07-20 18:15 Brett Schwarz
2007-07-19 10:56 Christian Stimming
2007-07-19 12:25 ` Johannes Schindelin
2007-07-20  4:55   ` Shawn O. Pearce
2007-07-20 17:32     ` Paolo Ciarrocchi
2007-07-20 18:10       ` Junio C Hamano
2007-07-20 18:38         ` Johannes Schindelin
2007-07-20 18:47           ` Paolo Ciarrocchi
2007-07-20 19:06             ` Johannes Schindelin
2007-07-20 19:02         ` Sam Ravnborg
2007-07-20 19:16         ` Xudong Guan
2007-07-21  8:12         ` しらいしななこ
2007-07-21  8:22           ` Junio C Hamano
2007-07-21 13:21             ` Johannes Schindelin
2007-07-21 18:57             ` Paolo Ciarrocchi
2007-07-21 21:25               ` Johannes Schindelin
2007-07-21 22:57                 ` Junio C Hamano
2007-07-22  1:12                   ` Johannes Schindelin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).