git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Add glossary that can be converted into a po file for each language.

From
Christian Stimming <stimming@tuhh.de>
Date
Jul 23, 2007, 20:16 UTC
Message-ID
<200707232216.40300.stimming@tuhh.de>
In-Reply-To
<7vabtpv43d.fsf@assigned-by-dhcp.cox.net>
Signed-off-by: Christian Stimming <stimming@tuhh.de>
---
Am Samstag, 21. Juli 2007 23:28 schrieb Junio C Hamano:
Show 12 quoted lines
> >> I would suggest having one glossary file per language.
> >
> > Agreed. I propose to throw away the "add glossary" patch and I'll
> > resubmit, this time in a separate po/glossary/ directory, where each
> > language will get a po file for the glossary.
>
> Actually, I would even suggest that we should NOT have a
> separate glossary file at all, if gettext suite allows what I
> outline below.
>
> How about having it as a part of header comment in each of the
> xx.po file?

As I already wrote: Having a glossary in the header of the po file has some (IMHO serious) drawbacks. For that reason I've pushed this patch to the mob branch: It contains one tab-separated text file with the relevant terms *plus their definition* (for now, pulled from git/Documentation/glossary.txt). As an example, you also see the German glossary translation - and having the definition available there as well (and having it updated by running make update-po) is indeed a huge advantage.

 po/glossary/Makefile             |    9 ++
 po/glossary/de.po                |  151 ++++++++++++++++++++++++++++++++++++++
 po/glossary/git-gui-glossary.txt |   34 +++++++++
 po/glossary/txt-to-pot.sh        |   48 ++++++++++++
 4 files changed, 242 insertions(+), 0 deletions(-)
 create mode 100644 po/glossary/Makefile
 create mode 100644 po/glossary/de.po
 create mode 100644 po/glossary/git-gui-glossary.txt
 create mode 100755 po/glossary/txt-to-pot.sh
diff --git a/po/glossary/Makefile b/po/glossary/Makefile
new file mode 100644
index 0000000..749aa2e
--- /dev/null
+++ b/po/glossary/Makefile
@@ -0,0 +1,9 @@
+PO_TEMPLATE = git-gui-glossary.pot
+
+ALL_POFILES = $(wildcard *.po)
+
+$(PO_TEMPLATE): $(subst .pot,.txt,$(PO_TEMPLATE))
+	./txt-to-pot.sh $< > $@
+
+update-po:: git-gui-glossary.pot
+	$(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; )
diff --git a/po/glossary/de.po b/po/glossary/de.po
new file mode 100644
index 0000000..0d07f68
--- /dev/null
+++ b/po/glossary/de.po
@@ -0,0 +1,151 @@
+# Translation of git-gui glossary to German
+# Copyright (C) 2007 Shawn Pearce, et al.
+# 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 glossary\n"
+"PO-Revision-Date: 2007-07-23 22:07+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"
+
+#. "English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
+msgid ""
+"English Term (Dear translator: This file will never be visible to the user!)"
+msgstr "Deutsche Übersetzung"
+
+#. ""
+msgid "amend"
+msgstr "nachbessern (ergänzen)"
+
+#. ""
+msgid "annotate"
+msgstr "annotieren"
+
+#. "A 'branch' is an active line of development."
+msgid "branch [noun]"
+msgstr "Zweig"
+
+#. ""
+msgid "branch [verb]"
+msgstr "verzweigen"
+
+#. ""
+msgid "checkout [noun]"
+msgstr "Auscheck? Ausspielung? Abruf?"
+
+#. "The action of updating the working tree to a revision which was stored in the object database."
+msgid "checkout [verb]"
+msgstr "auschecken? ausspielen? abrufen?"
+
+#. "A single point in the git history."
+msgid "commit [noun]"
+msgstr "Übertragung (Sendung?, Übergabe?, Einspielung?, Ablagevorgang?)"
+
+#. "The action of storing a new snapshot of the project's state in the git history."
+msgid "commit [verb]"
+msgstr "übertragen (senden?, übergeben?, einspielen?, einpflegen?, ablegen?)"
+
+#. ""
+msgid "diff [noun]"
+msgstr "Vergleich"
+
+#. ""
+msgid "diff [verb]"
+msgstr "vergleichen"
+
+#. "A fast-forward is a special typ of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+msgid "fast forward merge"
+msgstr "Schnellzusammenführung"
+
+#. "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
+msgid "fetch"
+msgstr "anfordern (holen?)"
+
+#. "A collection of files. The index is a stored version of your working tree."
+msgid "index (in git-gui: staging area)"
+msgstr "Bereitstellung"
+
+#. "A successful merge results in the creation of a new commit representing the result of the merge."
+msgid "merge [noun]"
+msgstr "Zusammenführung"
+
+#. "To bring the contents of another branch into the current branch."
+msgid "merge [verb]"
+msgstr "zusammenführen"
+
+#. ""
+msgid "message"
+msgstr "Meldung (Nachricht?)"
+
+#. "Pulling a branch means to fetch it and merge it."
+msgid "pull"
+msgstr "übernehmen (ziehen?)"
+
+#. "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
+msgid "push"
+msgstr "ausliefern (hochladen? verschicken? schieben?)"
+
+#. ""
+msgid "redo"
+msgstr "wiederholen"
+
+#. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
+msgid "repository"
+msgstr "Projektarchiv"
+
+#. ""
+msgid "reset"
+msgstr "zurücksetzen"
+
+#. ""
+msgid "revert"
+msgstr "revidieren (aufheben?, zurückkehren?)"
+
+#. "A particular state of files and directories which was stored in the object database."
+msgid "revision"
+msgstr "Version? Revision?"
+
+#. ""
+msgid "sign off"
+msgstr "abzeichnen (gegenzeichnen?, freizeichnen?, absegnen?)"
+
+#. ""
+msgid "staging area"
+msgstr "Bereitstellung"
+
+#. ""
+msgid "status"
+msgstr "Status"
+
+#. "A ref pointing to a tag or commit object"
+msgid "tag [noun]"
+msgstr "Markierung"
+
+#. ""
+msgid "tag [verb]"
+msgstr "markieren"
+
+#. "A regular git branch that is used to follow changes from another repository."
+msgid "tracking branch"
+msgstr "? Entfernter Zweig? Folgezweig?"
+
+#. ""
+msgid "undo"
+msgstr "rückgängig"
+
+#. ""
+msgid "update"
+msgstr "aktualisieren"
+
+#. ""
+msgid "verify"
+msgstr "überprüfen"
+
+#. "The tree of actual checked out files."
+msgid "working copy, working tree"
+msgstr "Arbeitskopie"
diff --git a/po/glossary/git-gui-glossary.txt b/po/glossary/git-gui-glossary.txt
new file mode 100644
index 0000000..e079bb2
--- /dev/null
+++ b/po/glossary/git-gui-glossary.txt
@@ -0,0 +1,34 @@
+"English Term (Dear translator: This file will never be visible to the user!)"	"English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
+"amend"	""
+"annotate"	""
+"branch [noun]"	"A 'branch' is an active line of development."
+"branch [verb]"	""
+"checkout [noun]"	""
+"checkout [verb]"	"The action of updating the working tree to a revision which was stored in the object database."
+"commit [noun]"	"A single point in the git history."
+"commit [verb]"	"The action of storing a new snapshot of the project's state in the git history."
+"diff [noun]"	""
+"diff [verb]"	""
+"fast forward merge"	"A fast-forward is a special typ of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+"fetch"	"Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
+"index (in git-gui: staging area)"	"A collection of files. The index is a stored version of your working tree."
+"merge [noun]"	"A successful merge results in the creation of a new commit representing the result of the merge."
+"merge [verb]"	"To bring the contents of another branch into the current branch."
+"message"	""
+"pull"	"Pulling a branch means to fetch it and merge it."
+"push"	"Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
+"redo"	""
+"repository"	"A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
+"reset"	""
+"revert"	""
+"revision"	"A particular state of files and directories which was stored in the object database."
+"sign off"	""
+"staging area"	""
+"status"	""
+"tag [noun]"	"A ref pointing to a tag or commit object"
+"tag [verb]"	""
+"tracking branch"	"A regular git branch that is used to follow changes from another repository."
+"undo"	""
+"update"	""
+"verify"	""
+"working copy, working tree"	"The tree of actual checked out files."
diff --git a/po/glossary/txt-to-pot.sh b/po/glossary/txt-to-pot.sh
new file mode 100755
index 0000000..8a8f976
--- /dev/null
+++ b/po/glossary/txt-to-pot.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# This is a very, _very_, simple script to convert a tab-separated
+# .txt file into a .pot/.po.
+# Its not clever but it took me 2 minutes to write :)
+# Michael Twomey <michael.twomey@ireland.sun.com>
+# 23 March 2001
+# with slight GnuCash modifications by Christian Stimming <stimming@tuhh.de> 
+# 19 Aug 2001, 23 Jul 2007
+
+#check args
+if [ $# -eq 0 ]
+then
+	cat <<!
+Usage: `basename $0` git-gui-glossary.txt > git-gui-glossary.pot
+!
+	exit 1;
+fi
+
+GLOSSARY_CSV="$1";
+
+if [ ! -f "$GLOSSARY_CSV" ]
+then
+	echo "Can't find $GLOSSARY_CSV.";
+	exit 1;
+fi
+
+cat <<!
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: `date +'%Y-%m-%d %H:%M%z'`\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING\n"
+
+!
+
+#Yes this is the most simple awk script you've ever seen :)
+awk -F'\t' '{if ($2 != "") print "#. "$2; print "msgid "$1; print "msgstr \"\"\n"}' \
+$GLOSSARY_CSV
-- 
1.5.2
Previous: Johannes SchindelinNext: Junio C Hamano
Message 38 of 48 in “Re: [PATCH] Internationalization of git-gui”
  1. Brett SchwarzJul 19, 2007
  2. Shawn O. PearceJul 20, 2007
  3. Christian StimmingJul 20, 2007
  4. Shawn O. PearceJul 21, 2007
  5. Christian StimmingJul 21, 2007
  6. Shawn O. PearceJul 21, 2007
  7. Christian StimmingJul 21, 2007
  8. Christian StimmingJul 21, 2007
  9. Christian StimmingJul 21, 2007
  10. Christian StimmingJul 21, 2007
  11. Christian StimmingJul 21, 2007
  12. David KastrupJul 21, 2007
  13. Simon 'corecode' SchubertJul 21, 2007
  14. David KastrupJul 21, 2007
  15. Christian StimmingJul 21, 2007
  16. Christian StimmingJul 21, 2007
  17. David KastrupJul 21, 2007
  18. Christian StimmingJul 22, 2007
  19. Edgar ToernigJul 22, 2007
  20. Christian StimmingJul 23, 2007
  21. David KastrupJul 21, 2007
  22. Shawn O. PearceJul 22, 2007
  23. Junio C HamanoJul 22, 2007
  24. Christian StimmingJul 22, 2007
  25. Johannes SchindelinJul 22, 2007
  26. Christian StimmingJul 22, 2007
  27. Johannes SchindelinJul 22, 2007
  28. Shawn O. PearceJul 22, 2007
  29. Christian StimmingJul 22, 2007
  30. Johannes SchindelinJul 21, 2007
  31. Junio C HamanoJul 21, 2007
  32. Christian StimmingJul 21, 2007
  33. Johannes SchindelinJul 21, 2007
  34. Junio C HamanoJul 21, 2007
  35. Johannes SchindelinJul 21, 2007
  36. Christian StimmingJul 22, 2007
  37. Johannes SchindelinJul 22, 2007
  38. Add glossary that can be converted into a po file for each language.Christian Stimming, Jul 23, 2007
  39. Junio C HamanoJul 24, 2007
  40. Junio C HamanoJul 24, 2007
  41. Christian StimmingJul 24, 2007
  42. Johannes SchindelinJul 21, 2007
  43. Junio C HamanoJul 21, 2007
  44. Johannes SchindelinJul 21, 2007
  45. Shawn O. PearceJul 22, 2007
  46. Christian StimmingJul 23, 2007
  47. Shawn O. PearceJul 24, 2007
  48. Christian StimmingJul 20, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.