Merge ../gitk
authorJunio C Hamano <gitster@pobox.com>
Fri, 11 Jan 2008 08:51:30 +0000 (00:51 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 11 Jan 2008 08:51:30 +0000 (00:51 -0800)
* ../gitk:
  gitk: Update German translation.
  gitk: Fix typo in user message.
  gitk: Fix the Makefile to cope with systems lacking msgfmt

1  2 
gitk-git/Makefile
gitk-git/gitk
gitk-git/po/.gitignore
gitk-git/po/de.po
gitk-git/po/po2msg.sh

index 6158504,0000000..ae2b80b
mode 100644,000000..100644
--- /dev/null
@@@ -1,58 -1,0 +1,63 @@@
- MSGFMT     ?= msgfmt
 +# The default target of this Makefile is...
 +all::
 +
 +prefix ?= $(HOME)
 +bindir ?= $(prefix)/bin
 +sharedir ?= $(prefix)/share
 +gitk_libdir   ?= $(sharedir)/gitk/lib
 +msgsdir    ?= $(gitk_libdir)/msgs
 +msgsdir_SQ  = $(subst ','\'',$(msgsdir))
 +
 +TCLTK_PATH ?= wish
 +INSTALL ?= install
 +RM ?= rm -f
 +
 +DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
 +bindir_SQ = $(subst ','\'',$(bindir))
 +TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
 +
 +## po-file creation rules
 +XGETTEXT   ?= xgettext
++ifdef NO_MSGFMT
++      MSGFMT ?= $(TCL_PATH) po/po2msg.sh
++else
++      MSGFMT ?= msgfmt
++endif
++
 +PO_TEMPLATE = po/gitk.pot
 +ALL_POFILES = $(wildcard po/*.po)
 +ALL_MSGFILES = $(subst .po,.msg,$(ALL_POFILES))
 +
 +ifndef V
 +      QUIET          = @
 +      QUIET_GEN      = $(QUIET)echo '   ' GEN $@ &&
 +endif
 +
 +all:: gitk-wish $(ALL_MSGFILES)
 +
 +install:: all
 +      $(INSTALL) gitk-wish '$(DESTDIR_SQ)$(bindir_SQ)'/gitk
 +      $(INSTALL) -d '$(DESTDIR_SQ)$(msgsdir_SQ)'
 +      $(foreach p,$(ALL_MSGFILES), $(INSTALL) $p '$(DESTDIR_SQ)$(msgsdir_SQ)' &&) true
 +
 +uninstall::
 +      $(foreach p,$(ALL_MSGFILES), $(RM) '$(DESTDIR_SQ)$(msgsdir_SQ)'/$(notdir $p) &&) true
 +      $(RM) '$(DESTDIR_SQ)$(bindir_SQ)'/gitk
 +
 +clean::
 +      $(RM) gitk-wish po/*.msg
 +
 +gitk-wish: gitk
 +      $(QUIET_GEN)$(RM) $@ $@+ && \
 +      sed -e '1,3s|^exec .* "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' <gitk >$@+ && \
 +      chmod +x $@+ && \
 +      mv -f $@+ $@
 +
 +$(PO_TEMPLATE): gitk
 +      $(XGETTEXT) -kmc -LTcl -o $@ gitk
 +update-po:: $(PO_TEMPLATE)
 +      $(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; )
 +$(ALL_MSGFILES): %.msg : %.po
 +      @echo Generating catalog $@
 +      $(MSGFMT) --statistics --tcl $< -l $(basename $(notdir $<)) -d $(dir $@)
 +
diff --cc gitk-git/gitk
index 801a5a9,b3cb8e8..b3cb8e8
mode 100644,100755..100644
--- 2/gitk
index 0000000,e358dd1..e358dd1
mode 000000,100644..100644
--- /dev/null
Simple merge
index 0000000,0000000..c63248e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,133 @@@
++#!/bin/sh
++# Tcl ignores the next line -*- tcl -*- \
++exec tclsh "$0" -- "$@"
++
++# This is a really stupid program, which serves as an alternative to
++# msgfmt.  It _only_ translates to Tcl mode, does _not_ validate the
++# input, and does _not_ output any statistics.
++
++proc u2a {s} {
++      set res ""
++      foreach i [split $s ""] {
++              scan $i %c c
++              if {$c<128} {
++                      # escape '[', '\' and ']'
++                      if {$c == 0x5b || $c == 0x5d} {
++                              append res "\\"
++                      }
++                      append res $i
++              } else {
++                      append res \\u[format %04.4x $c]
++              }
++      }
++      return $res
++}
++
++set output_directory "."
++set lang "dummy"
++set files [list]
++set show_statistics 0
++
++# parse options
++for {set i 0} {$i < $argc} {incr i} {
++      set arg [lindex $argv $i]
++      if {$arg == "--statistics"} {
++              incr show_statistics
++              continue
++      }
++      if {$arg == "--tcl"} {
++              # we know
++              continue
++      }
++      if {$arg == "-l"} {
++              incr i
++              set lang [lindex $argv $i]
++              continue
++      }
++      if {$arg == "-d"} {
++              incr i
++              set tmp [lindex $argv $i]
++              regsub "\[^/\]$" $tmp "&/" output_directory
++              continue
++      }
++      lappend files $arg
++}
++
++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
++      }
++
++      if {$msgid == ""} {
++              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"]
++      fconfigure $in -encoding utf-8
++      set out [open $outfile "w"]
++
++      set mode ""
++      while {[gets $in line] >= 0} {
++              if {[regexp "^#" $line]} {
++                      if {[regexp ", fuzzy" $line]} {
++                              set fuzzy 1
++                      } else {
++                              flush_msg
++                      }
++                      continue
++              } elseif {[regexp "^msgid \"(.*)\"$" $line dummy match]} {
++                      flush_msg
++                      set msgid $match
++                      set mode "msgid"
++              } elseif {[regexp "^msgstr \"(.*)\"$" $line dummy match]} {
++                      set msgstr $match
++                      set mode "msgstr"
++              } elseif {$line == ""} {
++                      flush_msg
++              } elseif {[regexp "^\"(.*)\"$" $line dummy match]} {
++                      if {$mode == "msgid"} {
++                              append msgid $match
++                      } elseif {$mode == "msgstr"} {
++                              append msgstr $match
++                      } else {
++                              puts stderr "I do not know what to do: $match"
++                      }
++              } else {
++                      puts stderr "Cannot handle $line"
++              }
++      }
++      flush_msg
++      close $in
++      close $out
++}
++
++if {$show_statistics} {
++      puts [concat "$translated_count translated messages, " \
++              "$fuzzy_count fuzzy ones, " \
++              "$not_translated_count untranslated ones."]
++}