# [GIT-GUI PATCH 0/3] po2msg fixes

7 messages from 2007-10-30 to 2007-10-31. Participants: Johannes Schindelin, Junio C Hamano, Christian Stimming.
Thread: https://gitlist.dev/t/10527

## Johannes Schindelin, 2007-10-30 11:24

Subject: [GIT-GUI PATCH 0/3] po2msg fixes
Message-ID: <Pine.LNX.4.64.0710301122300.4362@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710301122300.4362%40racer.site

```
Hi,

this series of 3 patches fixes the following:

- fuzzy translations are ignored
- empty translations are ignored
- the --statistics option is implemented

Ciao,
Dscho

```

## Johannes Schindelin, 2007-10-30 11:24

Subject: [GIT-GUI PATCH 1/3] po2msg: ignore entries marked with "fuzzy"
Message-ID: <Pine.LNX.4.64.0710301124220.4362@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710301124220.4362%40racer.site
In-Reply-To: <Pine.LNX.4.64.0710301122300.4362@racer.site>

```

As Christian Stimming pointed out, entries which are "fuzzy" need to
be checked by human translators, and cannot be used.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 po/po2msg.sh |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/po/po2msg.sh b/po/po2msg.sh
index da0765d..48a2669 100644
--- a/po/po2msg.sh
+++ b/po/po2msg.sh
@@ -48,12 +48,16 @@ for {set i 1} {$i < $argc} {incr i} {
 }
 
 proc flush_msg {} {
-	global msgid msgstr mode lang out
+	global msgid msgstr mode lang out fuzzy
 
 	if {![info exists msgid] || $mode == ""} {
 		return
 	}
 	set mode ""
+	if {$fuzzy == 1} {
+		set fuzzy 0
+		return
+	}
 
 	if {$msgid == ""} {
 		set prefix "set ::msgcat::header"
@@ -64,6 +68,7 @@ proc flush_msg {} {
 	puts $out "$prefix \"[u2a $msgstr]\""
 }
 
+set fuzzy 0
 foreach file $files {
 	regsub "^.*/\(\[^/\]*\)\.po$" $file "$output_directory\\1.msg" outfile
 	set in [open $file "r"]
@@ -73,7 +78,11 @@ foreach file $files {
 	set mode ""
 	while {[gets $in line] >= 0} {
 		if {[regexp "^#" $line]} {
-			flush_msg
+			if {[regexp ", fuzzy" $line]} {
+				set fuzzy 1
+			} else {
+				flush_msg
+			}
 			continue
 		} elseif {[regexp "^msgid \"(.*)\"$" $line dummy match]} {
 			flush_msg
-- 
1.5.3.4.1423.g7c7a7

```

## Johannes Schindelin, 2007-10-30 11:24

Subject: [GIT-GUI PATCH 2/3] po2msg: ignore untranslated messages
Message-ID: <Pine.LNX.4.64.0710301124450.4362@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710301124450.4362%40racer.site
In-Reply-To: <Pine.LNX.4.64.0710301122300.4362@racer.site>

```

Do not generate translations when the translated message is empty.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 po/po2msg.sh |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/po/po2msg.sh b/po/po2msg.sh
index 48a2669..91d420b 100644
--- a/po/po2msg.sh
+++ b/po/po2msg.sh
@@ -62,6 +62,9 @@ proc flush_msg {} {
 	if {$msgid == ""} {
 		set prefix "set ::msgcat::header"
 	} else {
+		if {$msgstr == ""} {
+			return
+		}
 		set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
 	}
 
-- 
1.5.3.4.1423.g7c7a7

```

## Johannes Schindelin, 2007-10-30 11:25

Subject: [GIT-GUI PATCH 3/3] po2msg: actually output statistics
Message-ID: <Pine.LNX.4.64.0710301124590.4362@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710301124590.4362%40racer.site
In-Reply-To: <Pine.LNX.4.64.0710301122300.4362@racer.site>

```

The "--statistics" option was ignored so far; no longer.  Now we have
a message similar to that of msgfmt.  (Untranslated, though ;-)

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 po/po2msg.sh |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/po/po2msg.sh b/po/po2msg.sh
index 91d420b..78e49cc 100644
--- a/po/po2msg.sh
+++ b/po/po2msg.sh
@@ -26,11 +26,17 @@ proc u2a {s} {
 set output_directory "."
 set lang "dummy"
 set files [list]
+set show_statistics 0
 
 # parse options
-for {set i 1} {$i < $argc} {incr i} {
+for {set i 0} {$i < $argc} {incr i} {
 	set arg [lindex $argv $i]
-	if {$arg == "--statistics" || $arg == "--tcl"} {
+	if {$arg == "--statistics"} {
+		incr show_statistics
+		continue
+	}
+	if {$arg == "--tcl"} {
+		# we know
 		continue
 	}
 	if {$arg == "-l"} {
@@ -49,12 +55,14 @@ for {set i 1} {$i < $argc} {incr i} {
 
 proc flush_msg {} {
 	global msgid msgstr mode lang out fuzzy
+	global translated_count fuzzy_count not_translated_count
 
 	if {![info exists msgid] || $mode == ""} {
 		return
 	}
 	set mode ""
 	if {$fuzzy == 1} {
+		incr fuzzy_count
 		set fuzzy 0
 		return
 	}
@@ -63,15 +71,20 @@ proc flush_msg {} {
 		set prefix "set ::msgcat::header"
 	} else {
 		if {$msgstr == ""} {
+			incr not_translated_count
 			return
 		}
 		set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
+		incr translated_count
 	}
 
 	puts $out "$prefix \"[u2a $msgstr]\""
 }
 
 set fuzzy 0
+set translated_count 0
+set fuzzy_count 0
+set not_translated_count 0
 foreach file $files {
 	regsub "^.*/\(\[^/\]*\)\.po$" $file "$output_directory\\1.msg" outfile
 	set in [open $file "r"]
@@ -113,3 +126,9 @@ foreach file $files {
 	close $out
 }
 
+puts $show_statistics
+if {$show_statistics} {
+	puts [concat "$translated_count translated messages, " \
+		"$fuzzy_count fuzzy ones, " \
+		"$not_translated_count untranslated ones."]
+}
-- 
1.5.3.4.1423.g7c7a7

```

## Junio C Hamano, 2007-10-30 19:27

Subject: Re: [GIT-GUI PATCH 2/3] po2msg: ignore untranslated messages
Message-ID: <7vabq0l7wn.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vabq0l7wn.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <Pine.LNX.4.64.0710301124450.4362@racer.site>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Do not generate translations when the translated message is empty.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  po/po2msg.sh |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/po/po2msg.sh b/po/po2msg.sh
> index 48a2669..91d420b 100644
> --- a/po/po2msg.sh
> +++ b/po/po2msg.sh
> @@ -62,6 +62,9 @@ proc flush_msg {} {
>  	if {$msgid == ""} {
>  		set prefix "set ::msgcat::header"
>  	} else {
> +		if {$msgstr == ""} {
> +			return
> +		}
>  		set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
>  	}

Is this change to fix some real issues?

Sometimes it is handy to be able to translate a non-empty string
into an empty one in one target language.

```

## Christian Stimming, 2007-10-30 20:44

Subject: Re: [GIT-GUI PATCH 2/3] po2msg: ignore untranslated messages
Message-ID: <200710302144.39149.stimming@tuhh.de>
URL: https://gitlist.dev/e/200710302144.39149.stimming%40tuhh.de
In-Reply-To: <7vabq0l7wn.fsf@gitster.siamese.dyndns.org>

```
Am Dienstag, 30. Oktober 2007 20:27 schrieb Junio C Hamano:
> > Do not generate translations when the translated message is empty.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> >  po/po2msg.sh |    3 +++
> >  1 files changed, 3 insertions(+), 0 deletions(-)
> >
> > diff --git a/po/po2msg.sh b/po/po2msg.sh
> > index 48a2669..91d420b 100644
> > --- a/po/po2msg.sh
> > +++ b/po/po2msg.sh
> > @@ -62,6 +62,9 @@ proc flush_msg {} {
> >  	if {$msgid == ""} {
> >  		set prefix "set ::msgcat::header"
> >  	} else {
> > +		if {$msgstr == ""} {
> > +			return
> > +		}
> >  		set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
> >  	}
>
> Is this change to fix some real issues?

I don't think to - it just makes the resulting foo.msg file smaller.

> Sometimes it is handy to be able to translate a non-empty string
> into an empty one in one target language.

Err... no, this is not the case. The semantics of an msgstr == "" is identical 
to saying "No translation exists to this source string".  Nothing more, 
nothing less. You can't specify a translation that should map a given string 
to an empty string. (If you make up a case when that would make some sense, 
usually the source string is rather weirdly chosen and should be reworded.)

Christian

```

## Johannes Schindelin, 2007-10-31 02:23

Subject: Re: [GIT-GUI PATCH 2/3] po2msg: ignore untranslated messages
Message-ID: <Pine.LNX.4.64.0710310222110.4362@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710310222110.4362%40racer.site
In-Reply-To: <7vabq0l7wn.fsf@gitster.siamese.dyndns.org>

```
Hi,

On Tue, 30 Oct 2007, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > Do not generate translations when the translated message is empty.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> >  po/po2msg.sh |    3 +++
> >  1 files changed, 3 insertions(+), 0 deletions(-)
> >
> > diff --git a/po/po2msg.sh b/po/po2msg.sh
> > index 48a2669..91d420b 100644
> > --- a/po/po2msg.sh
> > +++ b/po/po2msg.sh
> > @@ -62,6 +62,9 @@ proc flush_msg {} {
> >  	if {$msgid == ""} {
> >  		set prefix "set ::msgcat::header"
> >  	} else {
> > +		if {$msgstr == ""} {
> > +			return
> > +		}
> >  		set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
> >  	}
> 
> Is this change to fix some real issues?

Yes.  I compared the output of po2msg.sh with that of msgfmt, and only 
with this change (and 1/3) they came up identical.

Ciao,
Dscho

```
