The elements which aren't localized are all in the UpdateManager.ui file. I patched the gtk frontent init.py to load the localization for the ui file. And edited the ui file to use the 'repertoire' GTK Settings (gtk-preference) button. I also created a new pot file. Everything was tested with the german translation (po) file which I created from my modified pot file. And this patch was also added to the ZevenOS-Neptune distro (which is based upon debian squeeze/sid) and was tested and approved there.
Feel free to change it to your liking ;)
--- __init__.py 2009-12-28 12:06:13.000000000 +0100 +++ /home/leszek/Downloads/neptune-gnome/debs/update-manager-0.200.4neptune1/UpdateManager/Frontend/Gtk/__init__.py 2010-12-08 21:47:07.689646341 +0100 @@ -31,10 +31,13 @@ pygtk.require('2.0') import gtk import gobject +import gtk.glade +import gettext import logging import os.path import subprocess +import locale from gettext import gettext as _ @@ -62,7 +65,12 @@ def init_gettext(self, app_name, locale_dir): """ Gtk/Glade gettext initialization """ # Initializing glade gettext isn't needed for GtkBuilder anymore - pass + #pass + # Obviously not ! It needs the following to load the localization correctly somehow. + gtk.glade.bindtextdomain(app_name, locale_dir) + gtk.glade.textdomain(app_name) + gettext.bindtextdomain(app_name, locale_dir) + gettext.textdomain(app_name) def init_frontend(self): """ Gtk/Glade frontend initialization """
--- update-manager.pot 2009-09-23 21:49:16.000000000 +0200 +++ /home/leszek/Downloads/neptune-gnome/debs/update-manager-0.200.4neptune1/po/update-manager.pot 2010-12-08 21:58:06.666855699 +0100 @@ -7,25 +7,47 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: sebastian.heinl...@web.de\n" -"POT-Creation-Date: 2009-09-21 10:40+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-12-08 18:15+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <em...@address>\n" "Language-Team: LANGUAGE <l...@li.org>\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../UpdateManager/Application.py:127 + +#: ../data/ui/UpdateManager.ui:808 +msgid "Chec_k" +msgstr "" + +#: ../data/ui/UpdateManager.ui:388 +msgid "Description of update" +msgstr "" + +#: ../data/ui/UpdateManager.ui:353 +msgid "Description" +msgstr "" + +#: ../data/ui/UpdateManager.ui:250 +msgid "_Install Updates" +msgstr "" + +#: ../data/ui/UpdateManager.ui:101 +msgid "U_pgrade" +msgstr "" + +#: ../UpdateManager/Application.py:128 msgid "sets the log level" msgstr "" -#: ../UpdateManager/Application.py:130 +#: ../UpdateManager/Application.py:131 msgid "sets the log level to debug" msgstr "" -#: ../UpdateManager/Application.py:134 +#: ../UpdateManager/Application.py:135 msgid "starts an update check" msgstr "" @@ -81,30 +103,30 @@ msgstr[0] "" msgstr[1] "" -#: ../UpdateManager/Backend/PythonApt.py:675 +#: ../UpdateManager/Backend/PythonApt.py:722 msgid "Could not download packages information." msgstr "" -#: ../UpdateManager/Backend/PythonApt.py:809 +#: ../UpdateManager/Backend/PythonApt.py:862 msgid "" "Internal error: the commit progress handler did not handle " "requires_removal_or_installation correctly." msgstr "" -#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:78 -#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:85 +#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:86 +#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:93 msgid "A fatal error has been detected in update-manager." msgstr "" -#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:80 +#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:88 msgid "Do you want to submit a bug report?" msgstr "" -#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:81 +#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:89 msgid "Selecting No will close the application." msgstr "" -#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:86 +#: ../UpdateManager/Frontend/GtkCommon/GtkExceptionHandler.py:94 msgid "The program will now exit." msgstr "" @@ -128,280 +150,300 @@ msgid "Building Updates List" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ChangelogViewer.py:84 +#: ../UpdateManager/Frontend/Gtk/ChangelogViewer.py:86 msgid "Open Link in Browser" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ChangelogViewer.py:87 +#: ../UpdateManager/Frontend/Gtk/ChangelogViewer.py:89 msgid "Copy Link to Clipboard" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:159 +#: ../UpdateManager/Frontend/Gtk/ui.py:160 msgid "_Uncheck All" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:163 +#: ../UpdateManager/Frontend/Gtk/ui.py:164 msgid "_Check all" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:258 +#: ../UpdateManager/Frontend/Gtk/ui.py:259 #, python-format msgid "(Size: %s)" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:263 +#: ../UpdateManager/Frontend/Gtk/ui.py:264 #, python-format msgid "From version %(old_version)s to %(new_version)s" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:267 +#: ../UpdateManager/Frontend/Gtk/ui.py:268 #, python-format msgid "Version: %s" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:273 +#: ../UpdateManager/Frontend/Gtk/ui.py:274 msgid "Requires installation of: " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:275 -#: ../UpdateManager/Frontend/Gtk/ui.py:439 +#: ../UpdateManager/Frontend/Gtk/ui.py:276 +#: ../UpdateManager/Frontend/Gtk/ui.py:440 msgid "None" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:286 +#: ../UpdateManager/Frontend/Gtk/ui.py:287 msgid "Depends on: " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:295 +#: ../UpdateManager/Frontend/Gtk/ui.py:296 msgid "Depends on (strict): " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:304 +#: ../UpdateManager/Frontend/Gtk/ui.py:305 msgid "Is depended on by: " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:314 +#: ../UpdateManager/Frontend/Gtk/ui.py:315 msgid "Is depended on by (strict): " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:322 +#: ../UpdateManager/Frontend/Gtk/ui.py:323 msgid "Conflicts with: " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:443 +#: ../UpdateManager/Frontend/Gtk/ui.py:444 #, python-format msgid "Download size: %s" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:463 -#: ../UpdateManager/Frontend/Gtk/ui.py:530 +#: ../UpdateManager/Frontend/Gtk/ui.py:464 +#: ../UpdateManager/Frontend/Gtk/ui.py:531 msgid "Downloading list of changes..." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:493 +#: ../UpdateManager/Frontend/Gtk/ui.py:494 msgid "Downloading list of changes failed." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:585 +#: ../UpdateManager/Frontend/Gtk/ui.py:586 #, python-format msgid "Version %s: " msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:776 +#: ../UpdateManager/Frontend/Gtk/ui.py:785 msgid "Gathering information about updates..." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:802 +#: ../UpdateManager/Frontend/Gtk/ui.py:817 msgid "Upgrading may require removal or installation of new packages." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:804 +#: ../UpdateManager/Frontend/Gtk/ui.py:819 msgid "" "Do you want to perform a safe-upgrade, which does not remove packages or " "install new ones?" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:848 +#: ../UpdateManager/Frontend/Gtk/ui.py:864 msgid "Your system is up-to-date" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:873 +#: ../UpdateManager/Frontend/Gtk/ui.py:888 #, python-format msgid "Welcome to %s!" msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:874 +#: ../UpdateManager/Frontend/Gtk/ui.py:889 #, python-format msgid "These software updates have been issued since %s was released." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:883 +#: ../UpdateManager/Frontend/Gtk/ui.py:898 msgid "Software updates are available for this computer." msgstr "" -#: ../UpdateManager/Frontend/Gtk/ui.py:885 +#: ../UpdateManager/Frontend/Gtk/ui.py:900 msgid "" "If you don't want to install them now, choose \"Update Manager\" from the " "Administraion menu later." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:357 +#: ../UpdateManager/Frontend/Gtk/ui.py:921 +msgid "About Update Manager" +msgstr "" + +#: ../UpdateManager/Frontend/Gtk/ui.py:923 +#: ../data/update-manager.desktop.in.h:3 +msgid "Update Manager" +msgstr "" + +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:359 msgid "Progress" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:360 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:362 msgid "Source" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:362 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:364 msgid "Filename" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:366 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:368 msgid "Downloaded" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:372 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:374 msgid "Size" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:381 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:383 msgid "Checking for updates" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:432 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:451 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:433 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:452 msgid "Unknown" msgstr "" #. TRANSLATORS: This is the download rate in bytes, kilobytes #. or megabytes per second (hence the trailing /s). -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:471 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:472 #, python-format msgid "Download rate: %s/s" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:501 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:502 msgid "Checking for updates..." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:543 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:544 msgid "An internal error has occured and the operation has been aborted." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:546 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:827 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:921 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:547 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:833 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:927 msgid "Error message:" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:704 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:710 msgid "Downloading updates" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:722 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:728 msgid "Changes" msgstr "" #. ## TRANSLATORS: This is an entry in the package removal or #. new installation dialog's changes list. -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:728 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:734 #, python-format msgid "Remove %s" msgstr "" #. ## TRANSLATORS: This is an entry in the package removal or #. new installation dialog's changes list. -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:734 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:740 #, python-format msgid "Install %s" msgstr "" #. ... and now the dialog -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:738 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:744 msgid "Removal or installation of packages" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:747 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:753 msgid "" "Installation of the selected upgrades requires removal or installation of " "new packages." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:748 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:754 msgid "You can find a list of these changes below." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:749 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:755 msgid "Do you want to continue?" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:771 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:774 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:789 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:777 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:780 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:795 msgid "Preparing upgrade" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:775 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:781 msgid "This operation may take some time." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:803 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:809 msgid "Downloading finished" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:824 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:830 msgid "An error has occured and downloading has been aborted." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:851 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:967 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:857 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:975 msgid "Installing updates" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:852 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:858 msgid "Preparing installation..." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:886 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:892 #, python-format msgid "Applied %d update" msgid_plural "Applied %d updates" msgstr[0] "" msgstr[1] "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:894 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:900 msgid "Your system is now up-to-date." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:896 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:902 #, python-format msgid "There is %d more update available." msgid_plural "There are %d more updates available." msgstr[0] "" msgstr[1] "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:900 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:906 msgid "Software updates correct errors and eliminate security vulnerabilities." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:901 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:907 msgid "Please consider installing all available updates." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:918 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:924 msgid "An error has occured and installing has been aborted." msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:953 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:961 msgid "Show progress of individual files" msgstr "" -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:966 -#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:981 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:974 +#: ../UpdateManager/Frontend/Gtk/GtkProgress.py:989 msgid "Show terminal" msgstr "" +#: ../UpdateManager/Frontend/Gtk/__init__.py:125 +msgid "A fatal error has been detected" +msgstr "" + +#: ../UpdateManager/Frontend/Gtk/__init__.py:126 +#, python-format +msgid "" +"Exception:\n" +" %s" +msgstr "" + #: ../UpdateManager/DistSpecific/__init__.py:37 msgid "Important security updates" msgstr "" @@ -501,7 +543,3 @@ #: ../data/update-manager.desktop.in.h:2 msgid "Software Updates" msgstr "" - -#: ../data/update-manager.desktop.in.h:3 -msgid "Update Manager" -msgstr ""
--- UpdateManager.ui 2009-10-11 13:42:58.000000000 +0200 +++ /home/leszek/Downloads/neptune-gnome/debs/update-manager-0.200.4neptune1/data/ui/UpdateManager.ui 2010-12-08 12:18:12.147991740 +0100 @@ -407,12 +407,13 @@ <property name="spacing">12</property> <child> <object class="GtkButton" id="button_settings"> - <property name="label" translatable="yes">Settings…</property> + <property name="label">gtk-preferences</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> </object> <packing> <property name="expand">False</property> @@ -447,8 +448,8 @@ <property name="can_default">True</property> <property name="receives_default">False</property> <property name="use_stock">True</property> - <accelerator key="W" signal="clicked" modifiers="GDK_CONTROL_MASK"/> <accelerator key="Q" signal="clicked" modifiers="GDK_CONTROL_MASK"/> + <accelerator key="W" signal="clicked" modifiers="GDK_CONTROL_MASK"/> </object> <packing> <property name="expand">False</property>