Package: debgtd
Version: 1.2.1-1
Severity: wishlist
Tags: patch

Hi,

Please add support for gettext. A patch is attached, although I think some
of DebGTD's strings could do with some attention before anyone attempts a
serious translation.


Regards,

-- 
Chris Lamb, UK                                       [EMAIL PROTECTED]
                                                            GPG: 0x634F9A20
diff -urNad debgtd-1.2.1.orig/debgtd/gui.py debgtd-1.2.1/debgtd/gui.py
--- debgtd-1.2.1.orig/debgtd/gui.py     2008-08-09 22:28:39.000000000 +0100
+++ debgtd-1.2.1/debgtd/gui.py  2008-08-09 22:33:20.000000000 +0100
@@ -19,6 +19,10 @@
 import gtk.glade
 import os
 
+import locale
+import gettext
+import __builtin__
+
 import debgtd
 from debgtd.controller import Controller
 
@@ -33,10 +37,20 @@
 
                if os.path.isfile("debgtd.glade"):
                        self.gladefile = "debgtd.glade"
+                       locale_dir = ['mo']
                elif os.path.isfile("/usr/local/share/debgtd/debgtd.glade"):
                        self.gladefile = "/usr/local/share/debgtd/debgtd.glade"
+                       locale_dir = ['/usr/local/share/debgtd']
                else:
                        self.gladefile = "/usr/share/debgtd/debgtd.glade"
+                       locale_dir = []
+
+               locale.setlocale(locale.LC_ALL, '')
+               for module in gettext, gtk.glade:
+                       module.bindtextdomain('debgtd', *locale_dir)
+                       module.textdomain('debgtd')
+
+               __builtin__._ = gettext.gettext
 
                self.wTree = gtk.glade.XML(self.gladefile,"window1")
 
@@ -73,8 +87,8 @@
                ignored = len(model.get_ignored_bugs())
                interested = total - sleeping - ignored
 
-               label.set_text("%d bugs (%d sleeping; %d ignored)" % \
-                       (interested,sleeping,ignored))
+               label.set_text(_("%(interested)d bugs (%(sleeping)d sleeping; 
%(ignored)d ignored)") % \
+                       ({'interested': interested, 'sleeping': sleeping, 
'ignored': ignored}))
 
        def populate_treeview(self):
                model = self.controller.model
@@ -82,20 +96,20 @@
                treestore = gtk.TreeStore(int,str,str,str)
                tree.set_model(treestore)
 
-               column = gtk.TreeViewColumn('id')
+               column = gtk.TreeViewColumn(_('id'))
                tree.append_column(column)
                cell = gtk.CellRendererText()
                column.pack_start(cell, False)
                column.add_attribute(cell, "text", 0)
 
-               column = gtk.TreeViewColumn('package')
+               column = gtk.TreeViewColumn(_('package'))
                tree.append_column(column)
                cell = gtk.CellRendererText()
                column.pack_start(cell, False)
                column.add_attribute(cell, "text", 1)
                column.set_sort_column_id(1)
 
-               column = gtk.TreeViewColumn('severity')
+               column = gtk.TreeViewColumn(_('severity'))
                tree.append_column(column)
                cell = gtk.CellRendererText()
                column.pack_start(cell,False)
@@ -103,7 +117,7 @@
                column.set_sort_column_id(2)
                treestore.set_sort_func(2, self.severity_sort_cb)
 
-               column = gtk.TreeViewColumn('subject')
+               column = gtk.TreeViewColumn(_('subject'))
                tree.append_column(column)
                cell = gtk.CellRendererText()
                column.pack_start(cell,False)
@@ -142,7 +156,7 @@
 
        def bug_added(self, bug):
                treestore = self.tree.get_model()
-               self.wTree.get_widget("refresh_data_button").set_label("Update")
+               
self.wTree.get_widget("refresh_data_button").set_label(_("Update"))
                if not bug.sleeping() and not bug.ignoring() and not 
bug.is_done():
                        treestore.append(None, [bug['id'],
                        bug['package'],
@@ -162,7 +176,7 @@
 
        def clear(self):
                treestore = self.tree.get_model()
-               self.wTree.get_widget("refresh_data_button").set_label("Fetch")
+               
self.wTree.get_widget("refresh_data_button").set_label(_("Fetch"))
                treestore.clear()
                # XXX: should clear the user too?
 
diff -urNad debgtd-1.2.1.orig/debgtd.glade debgtd-1.2.1/debgtd.glade
--- debgtd-1.2.1.orig/debgtd.glade      2008-08-09 22:28:39.000000000 +0100
+++ debgtd-1.2.1/debgtd.glade   2008-08-09 22:33:20.000000000 +0100
@@ -20,7 +20,7 @@
                     <child>
                       <widget class="GtkImageMenuItem" id="quit_menu_item">
                         <property name="visible">True</property>
-                        <property name="label" 
translatable="yes">gtk-quit</property>
+                        <property name="label">gtk-quit</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                       </widget>
diff -urNad debgtd-1.2.1.orig/debian/control debgtd-1.2.1/debian/control
--- debgtd-1.2.1.orig/debian/control    2008-08-09 22:28:39.000000000 +0100
+++ debgtd-1.2.1/debian/control 2008-08-09 22:33:20.000000000 +0100
@@ -6,7 +6,7 @@
 Standards-Version: 3.8.0
 Homepage: http://jmtd.net/computing/software/debgtd/
 Vcs-Git: http://alcopop.org/code/debian/gtd/git
-Build-Depends: debhelper (>= 7), python-support (>= 0.8.1), python (>= 2.5), m4
+Build-Depends: debhelper (>= 7), python-support (>= 0.8.1), python (>= 2.5), 
m4, gettext
 
 Package: debgtd
 Architecture: all
diff -urNad debgtd-1.2.1.orig/Makefile debgtd-1.2.1/Makefile
--- debgtd-1.2.1.orig/Makefile  2008-08-09 22:28:39.000000000 +0100
+++ debgtd-1.2.1/Makefile       2008-08-09 22:33:20.000000000 +0100
@@ -12,7 +12,10 @@
 debgtd.desktop: debgtd.desktop.in
        m4 -DPREFIX=$(BINDIR) < $< > $@
 
-install:
+update-mo:
+       po/update-mo.sh
+
+install: update-mo
        install -D -m 0755 debgtd.py $(DESTDIR)$(BINDIR)/debgtd
        install -D -m 0644 debgtd.glade 
$(DESTDIR)$(SHAREDIR)/debgtd/debgtd.glade
        install -D -m 0644 debgtd/controller.py 
$(DESTDIR)$(LIBDIR)/debgtd/controller.py
@@ -21,12 +24,19 @@
        install -D -m 0644 debgtd/__init__.py 
$(DESTDIR)$(LIBDIR)/debgtd/__init__.py
        install -D -m 0644 debgtd.1 $(DESTDIR)$(MANDIR)/man1/debgtd.1
        install -D -m 0644 debgtd.desktop $(DESTDIR)$(DESKTOPDIR)/debgtd.desktop
+       
+       set -e; if ls mo/* >/dev/null 2>&1; then \
+               install -m 0755 -d $(DESTDIR)$(SHAREDIR)/locale; \
+               cp -r mo/* $(DESTDIR)$(SHAREDIR)/locale; \
+               chmod 755 $(DESTDIR)$(SHAREDIR)/locale; \
+       fi
 
 clean:
-       rm -f *.pyc debgtd/*.pyc debgtd.desktop
+       rm -rf *.pyc debgtd/*.pyc debgtd.desktop mo/
 
 FILES=$(DESTDIR)$(BINDIR)/debgtd \
                $(DESTDIR)$(SHAREDIR)/debgtd/debgtd.glade \
+               $(DESTDIR)$(SHAREDIR)/locale \
                $(DESTDIR)$(LIBDIR)/debgtd/model.py \
                $(DESTDIR)$(LIBDIR)/debgtd/controller.py \
                $(DESTDIR)$(LIBDIR)/debgtd/gui.py \
@@ -38,6 +48,6 @@
        ls -dl $(FILES)
 
 uninstall:
-       rm -f $(FILES)
+       rm -rf $(FILES)
 
-.PHONY: default install list uninstall
+.PHONY: default install list uninstall update-mo
diff -urNad debgtd-1.2.1.orig/po/debgtd.pot debgtd-1.2.1/po/debgtd.pot
--- debgtd-1.2.1.orig/po/debgtd.pot     1970-01-01 01:00:00.000000000 +0100
+++ debgtd-1.2.1/po/debgtd.pot  2008-08-09 22:33:20.000000000 +0100
@@ -0,0 +1,73 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <[EMAIL PROTECTED]>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: debgtd\n"
+"Report-Msgid-Bugs-To: [EMAIL PROTECTED]"
+"POT-Creation-Date: 2008-08-09 22:33+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <[EMAIL PROTECTED]>\n"
+"Language-Team: LANGUAGE <[EMAIL PROTECTED]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: debgtd/gui.py:90
+#, python-format
+msgid "%(interested)d bugs (%(sleeping)d sleeping; %(ignored)d ignored)"
+msgstr ""
+
+#: debgtd/gui.py:99
+msgid "id"
+msgstr ""
+
+#: debgtd/gui.py:105
+msgid "package"
+msgstr ""
+
+#: debgtd/gui.py:112
+msgid "severity"
+msgstr ""
+
+#: debgtd/gui.py:120
+msgid "subject"
+msgstr ""
+
+#: debgtd/gui.py:159
+msgid "Update"
+msgstr ""
+
+#: debgtd/gui.py:179 debgtd.glade:92
+msgid "Fetch"
+msgstr ""
+
+#: debgtd.glade:15
+msgid "_File"
+msgstr ""
+
+#: debgtd.glade:35
+msgid "_Edit"
+msgstr ""
+
+#: debgtd.glade:43
+msgid "Slee_p"
+msgstr ""
+
+#: debgtd.glade:51
+msgid "_Ignore"
+msgstr ""
+
+#: debgtd.glade:71
+msgid "user e-mail:"
+msgstr ""
+
+#: debgtd.glade:133
+msgid "Sleep bug"
+msgstr ""
+
+#: debgtd.glade:146
+msgid "Ignore bug"
+msgstr ""
diff -urNad debgtd-1.2.1.orig/po/gettext-config debgtd-1.2.1/po/gettext-config
--- debgtd-1.2.1.orig/po/gettext-config 1970-01-01 01:00:00.000000000 +0100
+++ debgtd-1.2.1/po/gettext-config      2008-08-09 22:33:20.000000000 +0100
@@ -0,0 +1,4 @@
+APPLICATION="debgtd"
+EMAIL="[EMAIL PROTECTED]"
+EXTENSIONS="py glade"
+DIRS="."
diff -urNad debgtd-1.2.1.orig/po/update-mo.sh debgtd-1.2.1/po/update-mo.sh
--- debgtd-1.2.1.orig/po/update-mo.sh   1970-01-01 01:00:00.000000000 +0100
+++ debgtd-1.2.1/po/update-mo.sh        2008-08-09 22:33:20.000000000 +0100
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+set -eu
+
+. po/gettext-config
+
+Msgfmt () {
+       echo msgfmt "$@"
+       msgfmt "$@"
+}
+
+rm -rf mo
+
+if ! ls po/*.po >/dev/null 2>&1
+then
+       exit 0
+fi
+
+for FILENAME in po/*.po
+do
+       LANG="$(basename ${FILENAME} .po)"
+       DIR="mo/${LANG}/LC_MESSAGES"
+       mkdir -p "${DIR}"
+       Msgfmt "${FILENAME}" -o "${DIR}/${APPLICATION}.mo"
+done
diff -urNad debgtd-1.2.1.orig/po/update-pot.sh debgtd-1.2.1/po/update-pot.sh
--- debgtd-1.2.1.orig/po/update-pot.sh  1970-01-01 01:00:00.000000000 +0100
+++ debgtd-1.2.1/po/update-pot.sh       2008-08-09 22:33:20.000000000 +0100
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+set -eu
+
+. po/gettext-config
+
+if [ ! -d po/ ] && [ -d ../po/ ]
+then
+       cd ..
+fi
+
+FILES="$(mktemp)"
+trap 'rm -f ${FILES}' EXIT
+
+find ${DIRS} -type f -printf "%p\n" > ${FILES}
+
+REGEX="$(echo ${EXTENSIONS} | sed 's@ @\\|@g')"
+sed -i -n -e '/\('"${REGEX}"'\)$/p' ${FILES}
+
+exec xgettext \
+       --files-from=${FILES} \
+       --default-domain=${APPLICATION} \
+       --force-po \
+       --foreign-user \
+       --package-name=${APPLICATION} \
+       --msgid-bugs-address=${EMAIL} \
+       --output=po/${APPLICATION}.pot

Attachment: signature.asc
Description: PGP signature

Reply via email to