diff -Nurp --exclude=CVS dogtail.orig/configure.in dogtail/configure.in
--- dogtail.orig/configure.in	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/configure.in	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1 @@
+GETTEXT_PACKAGE=dogtail
diff -Nurp --exclude=CVS dogtail.orig/dogtail/config.py dogtail/dogtail/config.py
--- dogtail.orig/dogtail/config.py	2006-09-21 13:21:28.000000000 -0400
+++ dogtail/dogtail/config.py	2006-11-20 13:04:52.000000000 -0500
@@ -7,6 +7,7 @@ import os
 import sys
 import locale
 
+GNOMELOCALEDIR="/usr/share/locale"
 def _scriptName():
     return os.path.basename(sys.argv[0]).replace('.py','')
 
diff -Nurp --exclude=CVS dogtail.orig/dogtail/utils.py dogtail/dogtail/utils.py
--- dogtail.orig/dogtail/utils.py	2006-10-02 14:21:53.000000000 -0400
+++ dogtail/dogtail/utils.py	2006-11-20 13:09:19.000000000 -0500
@@ -12,11 +12,15 @@ David Malcolm <dmalcolm@redhat.com>
 
 import os
 import re
+import gettext
 from config import config
 from time import sleep
 from logging import debugLogger as logger
 from logging import TimeStamp
 from errors import DependencyNotFoundError
+gettext.bindtextdomain('dogtail')
+gettext.textdomain('dogtail')
+_ = gettext.gettext
 
 def screenshot(file = 'screenshot.png', timeStamp = True):
     """
@@ -182,15 +186,15 @@ def checkForA11yInteractively():
     """
     if isA11yEnabled(): return
     import gtk
-    dialog = gtk.Dialog('Enable Assistive Technology Support?',
+    dialog = gtk.Dialog(_('Enable Assistive Technology Support?'),
                      None,
                      gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                      (gtk.STOCK_QUIT, gtk.RESPONSE_CLOSE, 
-                         "_Enable", gtk.RESPONSE_ACCEPT))
-    question = """Dogtail requires that Assistive Technology Support be enabled for it to function. Would you like to enable Assistive Technology support now?
+                         _("_Enable"), gtk.RESPONSE_ACCEPT))
+    question = _("""Dogtail requires that Assistive Technology Support be enabled for it to function. Would you like to enable Assistive Technology support now?
 
 Note that you will have to log out for the change to fully take effect.
-    """.strip()
+    """).strip()
     dialog.set_default_response(gtk.RESPONSE_ACCEPT)
     questionLabel = gtk.Label(question)
     questionLabel.set_line_wrap(True)
diff -Nurp --exclude=CVS dogtail.orig/Makefile dogtail/Makefile
--- dogtail.orig/Makefile	2006-07-28 13:51:47.000000000 -0400
+++ dogtail/Makefile	2006-11-20 13:04:52.000000000 -0500
@@ -1,9 +1,17 @@
 # dogtail *development* Makefile
 
+SUBDIRS = po recorder sniff
+
 all:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	(cd $$subdir && $(MAKE) all) \
+	done; \
 	python setup.py build_ext --inplace
 
 install:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	(cd $$subdir && $(MAKE) DESTDIR=$(DESTDIR) install) \
+	done; \
 	python setup.py install
 
 clean:
diff -Nurp --exclude=CVS dogtail.orig/po/Makefile dogtail/po/Makefile
--- dogtail.orig/po/Makefile	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/po/Makefile	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,55 @@
+GETTEXT_PACKAGE = dogtail
+
+SHELL = /bin/sh
+
+srcdir = .
+top_srcdir = ..
+top_builddir = ..
+prefix = /usr
+DATADIRNAME = share
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+
+INSTALL = /jds/cbe/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+mkdir_p = /jds/cbe/bin/install -d -m 755 -o root -g other
+GMSGFMT = /usr/bin/msgfmt
+MSGFMT = /usr/bin/msgfmt
+ALL_LINGUAS =
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+
+POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES: .gmo
+
+%.gmo: %.po
+	file=`echo $* | sed 's,.*/,,'`.gmo \
+	&& rm -f $$file && $(GMSGFMT) -o $$file $<
+
+all: all-yes
+
+all-yes: $(CATALOGS)
+
+install: install-data-yes
+install-data-yes: all
+	$(mkdir_p) $(DESTDIR)$(itlocaledir)
+	        if test -n "$(PO_LINGUAS)"; then \
+	  linguas="$(PO_LINGUAS)"; \
+	else \
+	  linguas="$(ALL_LINGUAS)"; \
+	fi; \
+	for lang in $$linguas; do \
+	  dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $$dir; \
+	  if test -r $$lang.gmo; then \
+	    $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+	  else \
+	    $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $(srcdir)/$$lang.gmo as" \
+	         "$$dir/$(GETTEXT_PACKAGE).mo"; \
+	  fi; \
+	done
+
diff -Nurp --exclude=CVS dogtail.orig/po/POTFILES.in dogtail/po/POTFILES.in
--- dogtail.orig/po/POTFILES.in	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/po/POTFILES.in	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,8 @@
+build/lib/dogtail/utils.py
+dogtail/utils.py
+recorder/dogtail-recorder
+recorder/dogtail-recorder.desktop.in
+recorder/recorder.glade
+sniff/sniff
+sniff/sniff.desktop.in
+sniff/sniff.glade
diff -Nurp --exclude=CVS dogtail.orig/recorder/dogtail-recorder dogtail/recorder/dogtail-recorder
--- dogtail.orig/recorder/dogtail-recorder	2006-10-12 17:56:07.000000000 -0400
+++ dogtail/recorder/dogtail-recorder	2006-11-20 13:10:21.000000000 -0500
@@ -4,9 +4,11 @@ appName = 'Script Recorder'
 import os
 os.environ['GTK_MODULES']=''
 
+from dogtail import config
 from dogtail.utils import checkForA11yInteractively
 checkForA11yInteractively()
 
+import gettext
 import atspi
 import dogtail.tree
 import gtk.gdk
@@ -26,6 +28,11 @@ class PlaybackThread(threading.Thread):
 import gobject
 import gnome
 import gtk.glade
+gtk.glade.bindtextdomain('dogtail', config.GNOMELOCALEDIR)
+gtk.glade.textdomain('dogtail')
+gettext.bindtextdomain('dogtail', config.GNOMELOCALEDIR)
+gettext.textdomain('dogtail')
+_ = gettext.gettext
 
 try:
     import gtksourceview
@@ -104,9 +111,9 @@ class RecorderGUI(gnome.Program):
 
     def setWriterClass (self, comboBox):
         selected = comboBox.get_active_text()
-        if selected == "Procedural":
+        if selected == _("Procedural"):
             recorder.writerClass = ProceduralScriptWriter
-        elif selected == "Object-Oriented":
+        elif selected == _("Object-Oriented"):
             recorder.writerClass = OOScriptWriter
         else:
             print selected, "isn't a ScriptWriter, but it is selected. How?"
@@ -165,7 +172,7 @@ class RecorderGUI(gnome.Program):
         """
         Brings up a file chooser dialog asking where to save the script.
         """
-        self.saveFileChooser = gtk.FileChooserDialog("Save Script...", None, \
+        self.saveFileChooser = gtk.FileChooserDialog(_("Save Script..."), None, \
             gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, \
             gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK))
         self.saveFileChooser.set_default_response(gtk.RESPONSE_OK)
diff -Nurp --exclude=CVS dogtail.orig/recorder/dogtail-recorder.desktop dogtail/recorder/dogtail-recorder.desktop
--- dogtail.orig/recorder/dogtail-recorder.desktop	2006-08-21 14:03:30.000000000 -0400
+++ dogtail/recorder/dogtail-recorder.desktop	1969-12-31 19:00:00.000000000 -0500
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Dogtail Script Recorder
-Name[en_CA]=Dogtail Script Recorder
-Name[en_GB]=Dogtail Script Recorder
-Comment=Automate your desktop using Dogtail
-Comment[en_CA]=Automate your desktop using Dogtail
-Comment[en_GB]=Automate your desktop using Dogtail
-Exec=dogtail-recorder
-Terminal=false
-Type=Application
-Icon=dogtail-head.svg
-StartupNotify=true
-Categories=Application;Development;
diff -Nurp --exclude=CVS dogtail.orig/recorder/Makefile dogtail/recorder/Makefile
--- dogtail.orig/recorder/Makefile	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/recorder/Makefile	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,34 @@
+srcdir = .
+top_srcdir = ..
+top_builddir = ..
+datadir = /usr/share
+
+INTLTOOL_MERGE = ../intltool-merge
+
+desktopdir       = $(datadir)/applications
+desktop_in_files = dogtail-recorder.desktop.in
+desktop_DATA     = $(desktop_in_files:.desktop.in=.desktop)
+
+EXTRA_DIST = \
+	$(desktop_in_files) \
+	$(desktop_DATA)
+
+CLEANFILES = $(desktop_DATA)
+
+all: 
+	$(MAKE) $(DATA)
+
+DATA = $(desktop_DATA)
+
+install: all
+
+.PHONY: all DATA
+
+$(INTLTOOL_MERGE): $(INTLTOOL_MERGE).in
+	-sed -e 's|@INTLTOOL_PERL@|/usr/bin/perl|'\
+	     -e 's|@INTLTOOL_ICONV@|/usr/bin/iconv|'\
+	     -e 's|@INTLTOOL_LIBDIR@|/usr/share/locale|'\
+	$< > $@
+	-chmod a+x $@
+%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+.NOEXPORT:
diff -Nurp --exclude=CVS dogtail.orig/recorder/Makefile.am dogtail/recorder/Makefile.am
--- dogtail.orig/recorder/Makefile.am	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/recorder/Makefile.am	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,13 @@
+@INTLTOOL_DESKTOP_RULE@
+
+desktopdir       = $(datadir)/applications
+desktop_DATA     = $(desktop_in_files:.desktop.in=.desktop)
+desktop_in_files = \
+	dogtail-recorder.desktop.in
+
+EXTRA_DIST = \
+	$(desktop_in_files) \
+	$(desktop_DATA)
+
+CLEANFILES $(desktop_DATA)
+
diff -Nurp --exclude=CVS dogtail.orig/recorder/recorder.desktop.in dogtail/recorder/recorder.desktop.in
--- dogtail.orig/recorder/recorder.desktop.in	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/recorder/recorder.desktop.in	2006-11-20 17:35:28.000000000 -0500
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+_Name=Dogtail Script Recorder
+_Comment=Automate your desktop using Dogtail
+Exec=dogtail-recorder
+Terminal=false
+Type=Application
+Icon=dogtail-head.svg
+StartupNotify=true
+Categories=Application;Development;
diff -Nurp --exclude=CVS dogtail.orig/sniff/Makefile dogtail/sniff/Makefile
--- dogtail.orig/sniff/Makefile	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/sniff/Makefile	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,34 @@
+srcdir = .
+top_srcdir = ..
+top_builddir = ..
+datadir = /usr/share
+
+INTLTOOL_MERGE = ../intltool-merge
+
+desktopdir       = $(datadir)/applications
+desktop_in_files = sniff.desktop.in
+desktop_DATA     = $(desktop_in_files:.desktop.in=.desktop)
+
+EXTRA_DIST = \
+	$(desktop_in_files) \
+	$(desktop_DATA)
+
+CLEANFILES = $(desktop_DATA)
+
+all: 
+	$(MAKE) $(DATA)
+
+DATA = $(desktop_DATA)
+
+install: all
+
+.PHONY: all DATA
+
+$(INTLTOOL_MERGE): $(INTLTOOL_MERGE).in
+	-sed -e 's|@INTLTOOL_PERL@|/usr/bin/perl|'\
+	     -e 's|@INTLTOOL_ICONV@|/usr/bin/iconv|'\
+	     -e 's|@INTLTOOL_LIBDIR@|/usr/share/locale|'\
+	$< > $@
+	-chmod a+x $@
+%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@
+.NOEXPORT:
diff -Nurp --exclude=CVS dogtail.orig/sniff/Makefile.am dogtail/sniff/Makefile.am
--- dogtail.orig/sniff/Makefile.am	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/sniff/Makefile.am	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,13 @@
+@INTLTOOL_DESKTOP_RULE@
+
+desktopdir       = $(datadir)/applications
+desktop_DATA     = $(desktop_in_files:.desktop.in=.desktop)
+desktop_in_files = \
+	sniff.desktop.in
+
+EXTRA_DIST = \
+	$(desktop_in_files) \
+	$(desktop_DATA)
+
+CLEANFILES $(desktop_DATA)
+
diff -Nurp --exclude=CVS dogtail.orig/sniff/sniff dogtail/sniff/sniff
--- dogtail.orig/sniff/sniff	2006-09-26 17:17:19.000000000 -0400
+++ dogtail/sniff/sniff	2006-11-20 13:04:52.000000000 -0500
@@ -9,11 +9,19 @@ checkForA11yInteractively()
 
 from dogtail import tree
 from dogtail import utils
+from dogtail import config
+import gettext
 import gobject
 import gnome
 import atspi
-program = gnome.program_init(appName, '0.1')
 import gtk.glade
+import gnome.ui
+gtk.glade.bindtextdomain('dogtail', config.GNOMELOCALEDIR)
+gtk.glade.textdomain('dogtail')
+gettext.bindtextdomain('dogtail', config.GNOMELOCALEDIR)
+gettext.textdomain('dogtail')
+program = gnome.program_init(appName, '0.1')
+_ = gettext.gettext
 
 import os
 if os.path.exists('sniff.glade'):
@@ -60,7 +68,7 @@ def showAbout(*args):
     about = gtk.AboutDialog()
     about.set_name(appName)
     about.set_authors(appAuthors)
-    about.set_comments('Explore your desktop with Dogtail')
+    about.set_comments(_("Explore your desktop with Dogtail"))
     about.set_website('http://people.redhat.com/zcerza/dogtail/')
     about.show_all()
 
@@ -382,7 +390,7 @@ def main():
     col.pack_end(cellRenderer, expand = False)
     col.set_cell_data_func(cellRenderer, getNodeAttr, 'name')
 
-    col.set_title('Name')
+    col.set_title(_("Name"))
 
     view.insert_column(col, -1)
     #view.insert_column_with_data_func(-1, "Role Name", \
diff -Nurp --exclude=CVS dogtail.orig/sniff/sniff.desktop.in dogtail/sniff/sniff.desktop.in
--- dogtail.orig/sniff/sniff.desktop.in	1969-12-31 19:00:00.000000000 -0500
+++ dogtail/sniff/sniff.desktop.in	2006-11-20 13:04:52.000000000 -0500
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+_Name=AT-SPI Browser
+_Comment=Browse your Assistive Technology-enabled desktop
+Exec=sniff
+Terminal=false
+Type=Application
+Icon=dogtail-head.svg
+StartupNotify=true
+Categories=Application;Development;
