[PackageKit-commit] packagekit: Branch 'master' - 55 commits

Richard Hughes hughsient at kemper.freedesktop.org
Fri Sep 18 10:41:21 PDT 2009


 backends/aptcc/apt-utils.h                       |   11 
 backends/aptcc/apt.cpp                           |   56 
 backends/aptcc/apt.h                             |    6 
 backends/aptcc/pk-backend-aptcc.cpp              |  267 +--
 backends/dummy/pk-backend-dummy.c                |   28 
 backends/yum/pk-backend-yum.c                    |    2 
 backends/yum/yumBackend.py                       |    2 
 client/pk-console.c                              |   38 
 client/pk-generate-pack.c                        |    2 
 client/pk-monitor.c                              |  168 --
 configure.ac                                     |    2 
 contrib/PackageKit.spec.in                       |    2 
 contrib/command-not-found/egg-debug.c            |    2 
 contrib/command-not-found/egg-debug.h            |    2 
 contrib/command-not-found/egg-string.c           |    2 
 contrib/command-not-found/egg-string.h           |    2 
 contrib/command-not-found/pk-command-not-found.c |    2 
 contrib/debuginfo-install/pk-debuginfo-install.c |    8 
 contrib/gstreamer-plugin/Makefile.am             |    6 
 contrib/gstreamer-plugin/pk-gstreamer-install.c  |   12 
 lib/packagekit-glib/Makefile.am                  |   34 
 lib/packagekit-glib/egg-debug.c                  |  314 ----
 lib/packagekit-glib/egg-debug.h                  |   84 -
 lib/packagekit-glib/egg-string.c                 |  455 -----
 lib/packagekit-glib/egg-string.h                 |   49 
 lib/packagekit-glib/egg-test.c                   |  358 ----
 lib/packagekit-glib/egg-test.h                   |   49 
 lib/packagekit-glib2/Makefile.am                 |   13 
 lib/packagekit-glib2/egg-debug.c                 |    2 
 lib/packagekit-glib2/egg-debug.h                 |    2 
 lib/packagekit-glib2/egg-string.c                |    2 
 lib/packagekit-glib2/egg-string.h                |    2 
 lib/packagekit-glib2/egg-test.c                  |    2 
 lib/packagekit-glib2/egg-test.h                  |    2 
 lib/packagekit-glib2/packagekit-private.h        |    1 
 lib/packagekit-glib2/packagekit.h                |    3 
 lib/packagekit-glib2/pk-client-sync.c            |  311 ++--
 lib/packagekit-glib2/pk-client-sync.h            |   77 -
 lib/packagekit-glib2/pk-client.c                 |  683 +++++---
 lib/packagekit-glib2/pk-client.h                 |   10 
 lib/packagekit-glib2/pk-common.c                 |  334 ----
 lib/packagekit-glib2/pk-common.h                 |   11 
 lib/packagekit-glib2/pk-console-shared.c         |  155 ++
 lib/packagekit-glib2/pk-console-shared.h         |    1 
 lib/packagekit-glib2/pk-control-sync.c           |   90 +
 lib/packagekit-glib2/pk-control-sync.h           |   35 
 lib/packagekit-glib2/pk-control.c                |  584 +++++--
 lib/packagekit-glib2/pk-control.h                |    2 
 lib/packagekit-glib2/pk-package-id.c             |   36 
 lib/packagekit-glib2/pk-progress-bar.c           |    4 
 lib/packagekit-glib2/pk-progress-bar.h           |    2 
 lib/packagekit-glib2/pk-progress.c               |  136 +
 lib/packagekit-glib2/pk-progress.h               |   12 
 lib/packagekit-glib2/pk-results.c                |   18 
 lib/packagekit-glib2/pk-self-test.c              |    2 
 lib/packagekit-glib2/pk-task-text.c              |   24 
 lib/packagekit-glib2/pk-task-wrapper.c           |   20 
 lib/packagekit-glib2/pk-transaction-list.c       |  378 ++++
 lib/packagekit-glib2/pk-transaction-list.h       |   68 
 lib/packagekit-qt/src/transaction.cpp            |    5 
 lib/packagekit-qt/src/transactionprivate.cpp     |    2 
 po/es.po                                         |  732 ++++-----
 po/fi.po                                         | 1505 ++++++++++---------
 po/gu.po                                         |  503 ++++--
 po/nl.po                                         |  505 ++++--
 po/pa.po                                         |  499 ++++--
 po/pt.po                                         | 1771 ++++++++++++-----------
 po/pt_BR.po                                      | 1346 ++++++++++-------
 po/ta.po                                         |  648 +++++---
 po/uk.po                                         |  420 +++--
 src/Makefile.am                                  |    1 
 src/egg-debug.c                                  |  317 ++++
 src/egg-debug.h                                  |   84 +
 src/egg-string.c                                 |  455 +++++
 src/egg-string.h                                 |   49 
 src/egg-test.c                                   |  358 ++++
 src/egg-test.h                                   |   49 
 src/org.freedesktop.PackageKit.Transaction.xml   |  298 ++-
 src/org.freedesktop.PackageKit.xml               |   55 
 src/pk-backend-internal.h                        |    2 
 src/pk-backend-spawn.c                           |   86 +
 src/pk-backend.c                                 |  117 +
 src/pk-backend.h                                 |    3 
 src/pk-cache.c                                   |    1 
 src/pk-cache.h                                   |    1 
 src/pk-conf.c                                    |    1 
 src/pk-engine.c                                  |  106 +
 src/pk-file-monitor.c                            |    1 
 src/pk-lsof.c                                    |    2 
 src/pk-network-stack.h                           |    2 
 src/pk-network.h                                 |    2 
 src/pk-polkit-action-lookup.c                    |    5 
 src/pk-spawn.c                                   |    1 
 src/pk-syslog.h                                  |    1 
 src/pk-transaction-db.c                          |   37 
 src/pk-transaction-db.h                          |    2 
 src/pk-transaction-extra.c                       |    6 
 src/pk-transaction-list.c                        |    2 
 src/pk-transaction-list.h                        |    2 
 src/pk-transaction.c                             |  241 ++-
 src/pk-transaction.h                             |    2 
 101 files changed, 9216 insertions(+), 5994 deletions(-)

New commits:
commit 88d7bbcf0433dd57596340a21e9c35cb33c31a5f
Merge: c61f5a0... 23bbcc9...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Fri Sep 18 12:39:45 2009 -0300

    Merge branch 'master' of git+ssh://dantti@git.packagekit.org/srv/git/PackageKit

commit c61f5a04d1892f8551cb880f83ed7adc05451131
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Fri Sep 18 12:38:32 2009 -0300

    aptcc: Fix aptcc to work with glib2

diff --git a/backends/aptcc/apt-utils.h b/backends/aptcc/apt-utils.h
index 1a395b8..869a4d7 100644
--- a/backends/aptcc/apt-utils.h
+++ b/backends/aptcc/apt-utils.h
@@ -25,7 +25,7 @@
 
 #include <apt-pkg/pkgrecords.h>
 
-#include <packagekit-glib/packagekit.h>
+#include <packagekit-glib2/packagekit.h>
 #include <pk-backend.h>
 
 #include <string.h>
@@ -47,7 +47,11 @@ public:
 	bool operator()(const pair<pkgCache::PkgIterator, pkgCache::VerIterator> &a,
 			const pair<pkgCache::PkgIterator, pkgCache::VerIterator> &b)
 	{
-		return strcmp(a.first.Name(), b.first.Name()) < 0;
+		int ret = strcmp(a.first.Name(), b.first.Name());
+		if (ret == 0) {
+		    return strcmp(a.second.VerStr(), b.second.VerStr()) < 0;
+		}
+		return ret < 0;
 	}
 };
 
@@ -60,7 +64,8 @@ public:
 	bool operator()(const pair<pkgCache::PkgIterator, pkgCache::VerIterator> &a,
 			const pair<pkgCache::PkgIterator, pkgCache::VerIterator> &b)
 	{
-		return strcmp(a.first.Name(), b.first.Name()) == 0;
+		return strcmp(a.first.Name(), b.first.Name()) == 0 &&
+		       strcmp(a.second.VerStr(), b.second.VerStr()) == 0;
 	}
 };
 
diff --git a/backends/aptcc/apt.cpp b/backends/aptcc/apt.cpp
index 6e75e1a..a573d3f 100644
--- a/backends/aptcc/apt.cpp
+++ b/backends/aptcc/apt.cpp
@@ -58,10 +58,6 @@ bool aptcc::init()
 	gchar *proxy_http;
 	gchar *proxy_ftp;
 
-	// make sure we do not get a graphical debconf
-	setenv("DEBIAN_FRONTEND", "noninteractive", 1);
-	setenv("APT_LISTCHANGES_FRONTEND", "none", 1);
-
 	// set locale
 	if (locale = pk_backend_get_locale(m_backend)) {
 		setlocale(LC_ALL, locale);
@@ -150,6 +146,48 @@ aptcc::~aptcc()
 	delete Map;
 }
 
+pair<pkgCache::PkgIterator, pkgCache::VerIterator>
+		      aptcc::find_package_id(const gchar *package_id)
+{
+	gchar **parts;
+	pkgCache::VerIterator ver;
+	pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+
+	parts = pk_package_id_split (package_id);
+	pkg_ver.first = packageCache->FindPkg(parts[PK_PACKAGE_ID_NAME]);
+
+	// Ignore packages that could not be found or that exist only due to dependencies.
+	if (pkg_ver.first.end() == true ||
+	    (pkg_ver.first.VersionList().end() && pkg_ver.first.ProvidesList().end()))
+	{
+		g_strfreev (parts);
+		return pkg_ver;
+	}
+
+	ver = find_ver(pkg_ver.first);
+	// check to see if the provided package isn't virtual too
+	if (ver.end() == false &&
+	    strcmp(ver.VerStr(), parts[PK_PACKAGE_ID_VERSION]) == 0)
+	{
+		g_strfreev (parts);
+		pkg_ver.second = ver;
+		return pkg_ver;
+	}
+
+	ver = find_candidate_ver(pkg_ver.first);
+	// check to see if the provided package isn't virtual too
+	if (ver.end() == false &&
+	    strcmp(ver.VerStr(), parts[PK_PACKAGE_ID_VERSION]) == 0)
+	{
+		g_strfreev (parts);
+		pkg_ver.second = ver;
+		return pkg_ver;
+	}
+
+	g_strfreev (parts);
+	return pkg_ver;
+}
+
 pkgCache::VerIterator aptcc::find_candidate_ver(const pkgCache::PkgIterator &pkg)
 {
 	// get the candidate version iterator
@@ -377,7 +415,9 @@ void aptcc::emit_packages(vector<pair<pkgCache::PkgIterator, pkgCache::VerIterat
 			  PkBitfield filters,
 			  PkInfoEnum state)
 {
+	// Sort so we can remove the duplicated entries
 	sort(output.begin(), output.end(), compare());
+	// Remove the duplicated entries
 	output.erase(unique(output.begin(),
 			    output.end(),
 			    result_equality()),
@@ -589,14 +629,16 @@ vector<string> search_file (PkBackend *backend, const string &file_name, bool &_
 }
 
 // used to emit files it reads the info directly from the files
-void emit_files (PkBackend *backend, const PkPackageId *pi)
+void emit_files (PkBackend *backend, const gchar *pi)
 {
 	static string filelist;
 	string line;
 
 	filelist.erase(filelist.begin(), filelist.end());
 
-	string f = "/var/lib/dpkg/info/" + string(pi->name) + ".list";
+	string f = "/var/lib/dpkg/info/" +
+		   string(pk_package_id_split(pi)[PK_PACKAGE_ID_NAME]) +
+		   ".list";
 	if (FileExists(f)) {
 		ifstream in(f.c_str());
 		if (!in != 0) {
@@ -614,7 +656,7 @@ void emit_files (PkBackend *backend, const PkPackageId *pi)
 		}
 
 		if (!filelist.empty()) {
-			pk_backend_files (backend, pk_package_id_to_string(pi), filelist.c_str());
+			pk_backend_files (backend, pi, filelist.c_str());
 		}
 	}
 }
diff --git a/backends/aptcc/apt.h b/backends/aptcc/apt.h
index c3c4f82..2a63a76 100644
--- a/backends/aptcc/apt.h
+++ b/backends/aptcc/apt.h
@@ -36,7 +36,7 @@ using namespace std;
 /**
 *  Emits files of packages
 */
-void emit_files (PkBackend *backend, const PkPackageId *pi);
+void emit_files (PkBackend *backend, const gchar *pi);
 
 /**
 *  returns a list of packages names
@@ -53,6 +53,10 @@ public:
 
 	bool init();
 
+	// Check the returned VerIterator.end()
+	// if it's true we could not find it
+	pair<pkgCache::PkgIterator, pkgCache::VerIterator>
+			find_package_id(const gchar *package_id);
 	pkgCache::VerIterator find_ver(const pkgCache::PkgIterator &pkg);
 	pkgCache::VerIterator find_candidate_ver(const pkgCache::PkgIterator &pkg);
 	bool is_held(const pkgCache::PkgIterator &pkg);
diff --git a/backends/aptcc/pk-backend-aptcc.cpp b/backends/aptcc/pk-backend-aptcc.cpp
index 8994035..40c9d11 100644
--- a/backends/aptcc/pk-backend-aptcc.cpp
+++ b/backends/aptcc/pk-backend-aptcc.cpp
@@ -54,6 +54,10 @@ backend_initialize (PkBackend *backend)
 {
 	egg_debug ("APTcc Initializing");
 
+	// make sure we do not get a graphical debconf
+	setenv("DEBIAN_FRONTEND", "noninteractive", 1);
+	setenv("APT_LISTCHANGES_FRONTEND", "none", 1);
+
 	if (pkgInitConfig(*_config) == false ||
 	    pkgInitSystem(*_config, _system) == false)
 	{
@@ -106,7 +110,6 @@ backend_get_groups (PkBackend *backend)
 		PK_GROUP_ENUM_PUBLISHING,
 		PK_GROUP_ENUM_SCIENCE,
 		PK_GROUP_ENUM_SYSTEM,
-		PK_GROUP_ENUM_COLLECTIONS,
 		-1);
 }
 
@@ -121,7 +124,6 @@ backend_get_filters (PkBackend *backend)
 		PK_FILTER_ENUM_INSTALLED,
 		PK_FILTER_ENUM_DEVELOPMENT,
 		PK_FILTER_ENUM_FREE,
-// 		PK_FILTER_ENUM_COLLECTIONS,//FIXME see if this apply
 		-1);
 }
 
@@ -149,7 +151,7 @@ backend_get_depends_or_requires_thread (PkBackend *backend)
 {
 	gchar **package_ids;
 	PkBitfield filters;
-	PkPackageId *pi;
+	gchar *pi;
 	bool recursive;
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
@@ -175,38 +177,39 @@ backend_get_depends_or_requires_thread (PkBackend *backend)
 		if (_cancel) {
 			break;
 		}
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+					       pi);
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
-		pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(pi->name);
-		if (pkg.end() == true)
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pkg_ver = m_apt->find_package_id(pi);
+		if (pkg_ver.second.end() == true)
 		{
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package");
-			pk_package_id_free (pi);
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "Couldn't find package");
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
 		if (depends) {
-			m_apt->get_depends(output, pkg, recursive);
+			m_apt->get_depends(output, pkg_ver.first, recursive);
 		} else {
-			m_apt->get_requires(output, pkg, recursive);
+			m_apt->get_requires(output, pkg_ver.first, recursive);
 		}
-
-		pk_package_id_free (pi);
 	}
 
 	// It's faster to emmit the packages here than in the matching part
 	m_apt->emit_packages(output, filters);
 
 	delete m_apt;
-
 	pk_backend_finished (backend);
 	return true;
 }
@@ -237,11 +240,13 @@ static gboolean
 backend_get_files_thread (PkBackend *backend)
 {
 	gchar **package_ids;
-	PkPackageId *pi;
+	gchar *pi;
 
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (package_ids == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+				       "Invalid package id");
 		pk_backend_finished (backend);
 		return false;
 	}
@@ -257,31 +262,30 @@ backend_get_files_thread (PkBackend *backend)
 	}
 
 	for (uint i = 0; i < g_strv_length(package_ids); i++) {
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+					       pi);
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
-		pkgCache::PkgIterator Pkg = m_apt->packageCache->FindPkg(pi->name);
-		if (Pkg.end() == true)
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pkg_ver = m_apt->find_package_id(pi);
+		if (pkg_ver.second.end() == true)
 		{
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package");
-			pk_package_id_free (pi);
+			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "Couldn't find package");
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
 		emit_files (backend, pi);
-
-		pk_package_id_free (pi);
 	}
 
 	delete m_apt;
-
 	pk_backend_finished (backend);
 	return true;
 }
@@ -299,18 +303,19 @@ static gboolean
 backend_get_details_thread (PkBackend *backend)
 {
 	gchar **package_ids;
-	PkPackageId *pi;
+	gchar *pi;
 
 	bool updateDetail = pk_backend_get_bool (backend, "updateDetail");
 	package_ids = pk_backend_get_strv (backend, "package_ids");
 	if (package_ids == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+				       "Invalid package id");
 		pk_backend_finished (backend);
 		return false;
 	}
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
-
 	aptcc *m_apt = new aptcc(backend, _cancel, *apt_source_list);
 	if (m_apt->init()) {
 		egg_debug ("Failed to create apt cache");
@@ -319,37 +324,38 @@ backend_get_details_thread (PkBackend *backend)
 		return false;
 	}
 
-
 	for (uint i = 0; i < g_strv_length(package_ids); i++) {
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+					       pi);
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
-		pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(pi->name);
-		if (pkg.end() == true)
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pkg_ver = m_apt->find_package_id(pi);
+		if (pkg_ver.second.end() == true)
 		{
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package");
-			pk_package_id_free (pi);
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "couldn't find package");
+
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
 		if (updateDetail) {
-			m_apt->emit_update_detail(pkg);
+			m_apt->emit_update_detail(pkg_ver.first);
 		} else {
-			m_apt->emit_details(pkg);
+			m_apt->emit_details(pkg_ver.first);
 		}
-
-		pk_package_id_free (pi);
 	}
 
 	delete m_apt;
-
 	pk_backend_finished (backend);
 	return true;
 }
@@ -652,12 +658,14 @@ backend_download_packages_thread (PkBackend *backend)
 	// get a fetcher
 	pkgAcquire fetcher(&Stat);
 	string filelist;
-	PkPackageId *pi;
+	gchar *pi;
 
 	for (uint i = 0; i < g_strv_length(package_ids); i++) {
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+					       pi);
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
@@ -667,42 +675,38 @@ backend_download_packages_thread (PkBackend *backend)
 			break;
 		}
 
-		pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(pi->name);
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pkg_ver = m_apt->find_package_id(pi);
 		// Ignore packages that could not be found or that exist only due to dependencies.
-		if (pkg.end() == true || (pkg.VersionList().end() && pkg.ProvidesList().end()))
+		if (pkg_ver.second.end() == true)
 		{
-			_error->Error("Can't find a package named \"%s\"", pi->name);
-			pk_package_id_free(pi);
+			_error->Error("Can't find this package id \"%s\".", pi);
 			continue;
-		}
-
-		pkgCache::VerIterator ver;
-		ver = m_apt->find_ver(pkg);
-		// check to see if the provided package isn't virtual too
-		if (ver.end())
-		{
-			pk_package_id_free(pi);
-			continue;
-		}
-
-		if(!ver.Downloadable()) {
-			_error->Error("No downloadable files for %s version %s; perhaps it is a local or obsolete package?",
-				    pi->name, ver.VerStr());
-		}
-
-		string storeFileName;
-		if (get_archive(&fetcher, apt_source_list, m_apt->packageRecords,
-			    ver, directory, storeFileName))
-		{
-			Stat.addPackagePair(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
-		}
-		string destFile = directory + "/" + flNotDir(storeFileName);
-		if (filelist.empty()) {
-			filelist = destFile;
 		} else {
-			filelist.append(";" + destFile);
+			if(!pkg_ver.second.Downloadable()) {
+				_error->Error("No downloadable files for %s,"
+					      "perhaps it is a local or obsolete" "package?",
+					      pi);
+				continue;
+			}
+
+			string storeFileName;
+			if (get_archive(&fetcher,
+					apt_source_list,
+					m_apt->packageRecords,
+					pkg_ver.second,
+					directory,
+					storeFileName))
+			{
+				Stat.addPackagePair(pkg_ver);
+			}
+			string destFile = directory + "/" + flNotDir(storeFileName);
+			if (filelist.empty()) {
+				filelist = destFile;
+			} else {
+				filelist.append(";" + destFile);
+			}
 		}
-		pk_package_id_free(pi);
 	}
 
 	pk_backend_set_status(backend, PK_STATUS_ENUM_DOWNLOAD);
@@ -826,53 +830,48 @@ backend_resolve_thread (PkBackend *backend)
 		return false;
 	}
 
-	PkPackageId *pi;
+	gchar *pi;
+	vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator> > output;
 	for (uint i = 0; i < g_strv_length(package_ids); i++) {
 		if (_cancel) {
 			break;
 		}
 
-		pkgCache::PkgIterator pkg;
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pkg = m_apt->packageCache->FindPkg(package_ids[i]);
-		} else {
-			pkg = m_apt->packageCache->FindPkg(pi->name);
-		}
-
-		// Ignore packages that could not be found or that exist only due to dependencies.
-		if (pkg.end() == true || (pkg.VersionList().end() && pkg.ProvidesList().end()))
-		{
-			continue;
-		}
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pkg_ver.first = m_apt->packageCache->FindPkg(pi);
+			// Ignore packages that could not be found or that exist only due to dependencies.
+			if (pkg_ver.first.end() == true ||
+			    (pkg_ver.first.VersionList().end() && pkg_ver.first.ProvidesList().end()))
+			{
+				continue;
+			}
 
-		pkgCache::VerIterator ver;
-		ver = m_apt->find_ver(pkg);
-		// check to see if the provided package isn't virtual too
-		if (ver.end() == false)
-		{
-			if (pi == NULL) {
-				m_apt->emit_package(pkg, ver, filters);
-			} else {
-				if (strcmp(ver.VerStr(), pi->version) == 0) {
-					m_apt->emit_package(pkg, ver, filters);
-				}
+			pkg_ver.second = m_apt->find_ver(pkg_ver.first);
+			// check to see if the provided package isn't virtual too
+			if (pkg_ver.second.end() == false)
+			{
+				output.push_back(pkg_ver);
 			}
-		}
 
-		ver = m_apt->find_candidate_ver(pkg);
-		// check to see if the provided package isn't virtual too
-		if (ver.end() == false)
-		{
-			if (pi == NULL) {
-				m_apt->emit_package(pkg, ver, filters);
-			} else {
-				if (strcmp(ver.VerStr(), pi->version) == 0) {
-					m_apt->emit_package(pkg, ver, filters);
-				}
+			pkg_ver.second = m_apt->find_candidate_ver(pkg_ver.first);
+			// check to see if the provided package isn't virtual too
+			if (pkg_ver.second.end() == false)
+			{
+				output.push_back(pkg_ver);
+			}
+		} else {
+			pkg_ver = m_apt->find_package_id(pi);
+			// check to see if we found the package
+			if (pkg_ver.second.end() == false)
+			{
+				output.push_back(pkg_ver);
 			}
 		}
 	}
+	// It's faster to emmit the packages here rather than in the matching part
+	m_apt->emit_packages(output, filters);
 
 	delete m_apt;
 
@@ -913,6 +912,7 @@ backend_search_file_thread (PkBackend *backend)
 		}
 
 		vector<string> packages = search_file (backend, search, _cancel);
+		vector<pair<pkgCache::PkgIterator, pkgCache::VerIterator> > output;
 		for(vector<string>::iterator i = packages.begin();
 		    i != packages.end(); ++i)
 		{
@@ -925,8 +925,10 @@ backend_search_file_thread (PkBackend *backend)
 			{
 				continue;
 			}
-			m_apt->emit_package(pkg, ver, filters);
+			output.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
 		}
+		// It's faster to emmit the packages here rather than in the matching part
+		m_apt->emit_packages(output, filters);
 
 		delete m_apt;
 	}
@@ -956,7 +958,9 @@ backend_search_group_thread (PkBackend *backend)
 	pk_backend_set_allow_cancel (backend, true);
 
 	if (group == NULL) {
-		pk_backend_error_code (backend, PK_ERROR_ENUM_GROUP_NOT_FOUND, "Group is invalid.");
+		pk_backend_error_code (backend,
+				       PK_ERROR_ENUM_GROUP_NOT_FOUND,
+				       group);
 		pk_backend_finished (backend);
 		return false;
 	}
@@ -1191,7 +1195,7 @@ static gboolean
 backend_manage_packages_thread (PkBackend *backend)
 {
 	gchar **package_ids;
-	PkPackageId *pi;
+	gchar *pi;
 	bool simulate;
 	bool remove;
 
@@ -1217,31 +1221,30 @@ backend_manage_packages_thread (PkBackend *backend)
 			break;
 		}
 
-		pi = pk_package_id_new_from_string (package_ids[i]);
-		if (pi == NULL) {
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id");
+		pi = package_ids[i];
+		if (pk_package_id_check(pi) == false) {
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_ID_INVALID,
+					       pi);
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
 		}
 
-		pkgCache::PkgIterator pkg = m_apt->packageCache->FindPkg(pi->name);
+		pair<pkgCache::PkgIterator, pkgCache::VerIterator> pkg_ver;
+		pkg_ver = m_apt->find_package_id(pi);
 		// Ignore packages that could not be found or that exist only due to dependencies.
-		if (pkg.end() == true || (pkg.VersionList().end() && pkg.ProvidesList().end()))
+		if (pkg_ver.second.end() == true)
 		{
-			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package");
-			pk_package_id_free (pi);
+			pk_backend_error_code (backend,
+					       PK_ERROR_ENUM_PACKAGE_NOT_FOUND,
+					       "couldn't find package");
+
 			delete m_apt;
 			pk_backend_finished (backend);
 			return false;
-		}
-
-		pkgCache::VerIterator ver;
-		ver = m_apt->find_ver(pkg);
-		// check to see if the provided package isn't virtual too
-		if (ver.end() == false)
-		{
-			pkgs.push_back(pair<pkgCache::PkgIterator, pkgCache::VerIterator>(pkg, ver));
+		} else {
+			pkgs.push_back(pkg_ver);
 		}
 	}
 
commit 23bbcc9e19ff303f5b84b97a35d741101c41ae3d
Author: warrink <warrink at fedoraproject.org>
Date:   Fri Sep 18 15:37:26 2009 +0000

    Sending translation for Dutch

diff --git a/po/nl.po b/po/nl.po
index bd5dbab..63ec642 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,8 +5,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.nl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-10 16:42+0000\n"
-"PO-Revision-Date: 2009-09-11 00:33+0200\n"
+"POT-Creation-Date: 2009-09-18 14:40+0000\n"
+"PO-Revision-Date: 2009-09-18 17:36+0200\n"
 "Last-Translator: Geert Warrink <geert.warrink at onsnet.nu>\n"
 "Language-Team: nl <nl at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -17,115 +17,115 @@ msgstr ""
 "X-Generator: KBabel 1.11.4\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:143
+#: ../client/pk-console.c:142
 msgid "Transaction"
 msgstr "Transactie"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:145
+#: ../client/pk-console.c:144
 msgid "System time"
 msgstr "Systeemtijd"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "Succeeded"
 msgstr "Geslaagd"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "True"
 msgstr "Waar"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "False"
 msgstr "Niet waar"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
+#: ../client/pk-console.c:148 ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "Rol"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "Duration"
 msgstr "Duur"
 
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "(seconds)"
 msgstr "(seconden)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
+#: ../client/pk-console.c:157 ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "Commando regel"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:160
+#: ../client/pk-console.c:159
 msgid "User ID"
 msgstr "Gebruiker ID"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:167
+#: ../client/pk-console.c:166
 msgid "Username"
 msgstr "Gebruikernaam"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:171
+#: ../client/pk-console.c:170
 msgid "Real name"
 msgstr "Werkelijke naam"
 
-#: ../client/pk-console.c:179
+#: ../client/pk-console.c:178
 msgid "Affected packages:"
 msgstr "Betreffende pakketten"
 
-#: ../client/pk-console.c:181
+#: ../client/pk-console.c:180
 msgid "Affected packages: None"
 msgstr "Betreffende pakketten: Geen"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:201
+#: ../client/pk-console.c:200
 msgid "Distribution"
 msgstr "Distributie"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:203
+#: ../client/pk-console.c:202
 msgid "Type"
 msgstr "Type"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:205 ../client/pk-console.c:226
+#: ../client/pk-console.c:204 ../client/pk-console.c:225
 msgid "Summary"
 msgstr "Samenvatting"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:215
+#: ../client/pk-console.c:214
 msgid "Category"
 msgstr "Categorie"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:217
+#: ../client/pk-console.c:216
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:220
+#: ../client/pk-console.c:219
 msgid "Parent"
 msgstr "Ouder"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:223
+#: ../client/pk-console.c:222
 msgid "Name"
 msgstr "Naam"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:229
+#: ../client/pk-console.c:228
 msgid "Icon"
 msgstr "Icoon"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:243
+#: ../client/pk-console.c:242
 msgid "Details about the update:"
 msgstr "Details van de vernieuwing:"
 
@@ -133,153 +133,153 @@ msgstr "Details van de vernieuwing:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../client/pk-console.c:248 ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Pakket"
 msgstr[1] "Pakketten"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:251
 msgid "Updates"
 msgstr "Vernieuwingen"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:256
+#: ../client/pk-console.c:255
 msgid "Obsoletes"
 msgstr "Verouderde pakketten"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
+#: ../client/pk-console.c:259 ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "Verkoper"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:264
+#: ../client/pk-console.c:263
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:267
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:271
 msgid "Restart"
 msgstr "Herstarten"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:276
+#: ../client/pk-console.c:275
 msgid "Update text"
 msgstr "Vernieuw tekst"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:280
+#: ../client/pk-console.c:279
 msgid "Changes"
 msgstr "Veranderingen"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:284
+#: ../client/pk-console.c:283
 msgid "State"
 msgstr "Status"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:288
 msgid "Issued"
 msgstr "Uitgegeven"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:470
+#: ../client/pk-console.c:293 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Vernieuwd"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:312
+#: ../client/pk-console.c:311
 msgid "Enabled"
 msgstr "Aangezit"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:314
 msgid "Disabled"
 msgstr "Uitgezet"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:337
+#: ../client/pk-console.c:336
 msgid "System restart required by:"
 msgstr "Herstart systeem vereist door:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:339
 msgid "Session restart required:"
 msgstr "Het is vereist het systeem te herstarten:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:342
 msgid "System restart (security) required by:"
 msgstr "Herstart systeem (beveiliging) vereist door:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:346
+#: ../client/pk-console.c:345
 msgid "Session restart (security) required:"
 msgstr "Herstart sessie (beveiliging) vereist door:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:349
+#: ../client/pk-console.c:348
 msgid "Application restart required by:"
 msgstr "Herstart vereist door toepassing:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:365
 msgid "Package description"
 msgstr "Pakketomschrijving"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:383
 msgid "Message:"
 msgstr "Bericht:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:398
+#: ../client/pk-console.c:397
 msgid "No files"
 msgstr "Geen bestanden"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:403
+#: ../client/pk-console.c:402
 msgid "Package files"
 msgstr "Pakketbestanden"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:475
 msgid "Fatal error"
 msgstr "Fatale fout"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:488
 msgid "Transaction failed with no error"
 msgstr "De transactie faalde zonder fout"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:493
 msgid "The transaction failed"
 msgstr "De transactie faalde"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:567
 msgid "Please restart the computer to complete the update."
 msgstr "Herstart a.u.b de computer om de verneuwing af te maken."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:570
 msgid "Please logout and login to complete the update."
 msgstr "Log a.u.b uit en weer in om de vernieuwing af te maken."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:573
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -288,26 +288,26 @@ msgstr ""
 "beveiligings vernieuwingen geïnstaleerd zijn."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:576
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
 msgstr "Log a.u.b. uit en weer in om de verniewing af te maken."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:597
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Dit programma kon geen enkel beschikbaar pakket %s vinden."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:625
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Dit programma kon het geïinstallerde pakket %s niet vinden."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:653 ../client/pk-console.c:681
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Dit programma kon het pakket %s niet vinden."
@@ -316,38 +316,38 @@ msgstr "Dit programma kon het pakket %s niet vinden."
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:709 ../client/pk-console.c:737
+#: ../client/pk-console.c:765 ../client/pk-console.c:793
+#: ../client/pk-console.c:821
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Dit programma kon niet alle pakketten vinden: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:850
 msgid "The daemon crashed mid-transaction!"
 msgstr "De service is midden in de transactie gecrashed!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:884
 msgid "PackageKit Console Interface"
 msgstr "PackageKit console-interface"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:886
 msgid "Subcommands:"
 msgstr "Subopdrachten:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:965
 msgid "Failed to get the time since this action was last completed"
 msgstr ""
 "Verkrijgen van de tijd tussen laatste actie en deze actie is niet gelukt"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1000 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
@@ -355,132 +355,132 @@ msgid "Show extra debugging information"
 msgstr "Extra debuginformatie tonen"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1003 ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "Programmaversie tonen en sluiten"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1006
 msgid "Set the filter, e.g. installed"
 msgstr "Filter instellen, bijvoorbeeld geïnstalleerd"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1009
 msgid "Exit without waiting for actions to complete"
 msgstr "Afsluiten zonder te wachten tot de transacties zijn afgerond"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1034
 msgid "Failed to contact PackageKit"
 msgstr "Contact met PackageKit krijgen mislukte."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1086
 msgid "The filter specified was invalid"
 msgstr "De opgegeven filter was ongeldig"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1105
 msgid "A search type is required, e.g. name"
 msgstr "Een zoektype is verplicht, b.v. naam"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1112 ../client/pk-console.c:1124
+#: ../client/pk-console.c:1136 ../client/pk-console.c:1148
 msgid "A search term is required"
 msgstr "Een zoekterm is vereist"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1158
 msgid "Invalid search type"
 msgstr "Ongeldig zoektype"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1164
 msgid "A package name to install is required"
 msgstr "Een pakketnaam om te installeren is vereist"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1173
 msgid "A filename to install is required"
 msgstr "Een bestandsnaam om te installeren is vereist"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1185
 msgid "A type, key_id and package_id are required"
 msgstr "Er moet een type worden opgegeven, key_id of package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1196
 msgid "A package name to remove is required"
 msgstr "Een te verwijderen pakketnaam is vereist"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1205
 msgid "A destination directory and the package names to download are required"
 msgstr "Een doelmap en dan de namen van te downloaden pakketten zijn vereist"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1212
 msgid "Directory not found"
 msgstr "Map niet gevonden"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1221
 msgid "A licence identifier (eula-id) is required"
 msgstr "Een licentie indentificatie (eula-id) is vereis"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1232
 msgid "A transaction identifier (tid) is required"
 msgstr "Een transactie indentificatie (tid) is vereist"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1253
 msgid "A package name to resolve is required"
 msgstr "Een pakketnaam om te gebruiken is vereist"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1264 ../client/pk-console.c:1275
 msgid "A repository name is required"
 msgstr "Een naam van een repository is vereist"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1286
 msgid "A repo name, parameter and value are required"
 msgstr "Een repo naam, parameter en waarde zijn vereist"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1303
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Een actie, b.v. 'update-system' is vereist"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1310
 msgid "A correct role is required"
 msgstr "Een correcte rol is vereist"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1320 ../client/pk-console.c:1335
+#: ../client/pk-console.c:1344 ../client/pk-console.c:1364
+#: ../client/pk-console.c:1373 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "Een pakketnaam is vereist"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1353
 msgid "A package provide string is required"
 msgstr "Een pakket geleverde string is vereist"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1433
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Optie '%s' wordt niet ondersteund"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1443
 msgid "Command failed"
 msgstr "Opdracht mislukt"
 
@@ -597,16 +597,12 @@ msgstr "Servicepack aangemaakt '%s'"
 msgid "Failed to create '%s': %s"
 msgstr "'%s' aanmaken niet gelukt: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "Transactie lijst verkrijgen mislukte."
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "Daemon toestand verkrijgen mislukte."
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "PackageKit-monitor"
 
@@ -920,7 +916,7 @@ msgstr "Pakketten niet installeren in de simulatie mode"
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "Pakketten installeren"
@@ -1047,303 +1043,462 @@ msgstr "PackageKit Pakketlijst"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit-servicepack"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Voer een nummer in van 1 tot %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "Er zijn meerdere pakketten die overeenkomen:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "Kies alstublieft het juiste pakket: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "Onbekende toestand"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "Opstarten"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "Wachten in wachtrij"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "Draaiende"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "Informatie ophalen"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "Informatie krijgen"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "Pakketten verwijderen"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "Pakketten aan het downloaden"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "Software lijst verversen"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "Vernieuwingen installeren"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "Pakketten opschonen"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "Pakketten achterhaald maken"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "Afhankelijkheden oplossen"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "Ondertekeningen controleren"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "Terug draaien"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "Veranderingen testen"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "Veranderingen beschikbaar maken"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "Data aanvragen"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "Klaar"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "Afbreken"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "Repository informatie downloaden"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "Lijst van pakketten downloaden"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "Bestandslijsten downloaden"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "Lijst van veranderingen downloaden."
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "Groepen downloaden"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "Pakketinformatie downloaden"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "Bestanden opnieuw inpakken"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "Cache laden"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "Toepassingen doorzoeken"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "Pakketlijst aanmaken"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "Wachten op pakket beheerder blokkering"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "Wachten op authenticatie"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "Draaiende toepassingen vernieuwen"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "Controleren van toepassingen in gebruik"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "Controleren van bibliotheken in gebruik"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:372
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
 msgid "Trivial"
 msgstr "Triviaal"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:376
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
 msgid "Normal"
 msgstr "Normaal"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:380
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
 msgid "Important"
 msgstr "Belangrijk"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:384
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
 msgid "Security"
 msgstr "Beveiliging"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
 msgid "Bug fix "
 msgstr "Fout reparatie"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:392
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
 msgid "Enhancement"
 msgstr "Verbetering"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:396
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
 msgid "Blocked"
 msgstr "Geblokkeerd"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
-#: ../lib/packagekit-glib2/pk-console-shared.c:474
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
 msgid "Installed"
 msgstr "Geïnstalleerd"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:406
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
 msgid "Available"
 msgstr "Beschikbaar"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:424
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
 msgid "Downloading"
 msgstr "Downloaden"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:428
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
 msgid "Updating"
 msgstr "Vernieuwen"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:432
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "Installeren"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:436
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "Verwijderen"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:440
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
 msgid "Cleaning up"
 msgstr "Opschonen"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:444
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
 msgid "Obsoleting"
 msgstr "Verouderd maken"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
 msgid "Reinstalling"
 msgstr "Hergeïnstalleerd"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:466
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
 msgid "Downloaded"
 msgstr "Downloaden"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:478
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
 msgid "Removed"
 msgstr "Verwijderd"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:482
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
 msgid "Cleaned up"
 msgstr "Opgeruimd"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:486
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
 msgid "Obsoleted"
 msgstr "Verouderd"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:490
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
 msgid "Reinstalled"
 msgstr "Herge"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "Onbekend rol type"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "Afhankelijkheden ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "Vernieuwings details ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "Details ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "Vereisten ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "Vernieuwingen ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "Opzoeken volgens details"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "Opzoeken volgens bestand"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "Opzoeken volgens groepen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "Opzoeken volgens naam"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "Bestanden installeren"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "Cache verversen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "Pakketten vernieuwen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "Systeem vernieuwen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "Afbreken"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "Repositories ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "Repository aanzetten"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "Data instellen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "Oplossen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "Bestandslijst ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "Voorzieningen ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "Onderstekening installeren"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "Pakketten ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "EULA accepteren"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "Vernieuwingen ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "Categorieën ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "Transcaties ophalen"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "Installatie simuleren"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "Verwijderen simuleren"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "Vernieuwing simuleren"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1732,55 +1887,58 @@ msgstr "Er kan geen verbinding worden gelegd met de systeembus"
 msgid "Error trying to start:"
 msgstr "Fout bij het proberen te starten:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr ""
 "Om debug pakketten te installeren, moeten extra bronnen aangezet worden"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "De software is niet van een vertrouwde bron."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr ""
 "Vernieuw dit pakket niet behalve als je zeker weet dat het veilig is om te "
 "doen."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr ""
 "Vernieuw deze pakketten niet behalve als je zeker weet dat het veilig is om "
 "te doen."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr ""
 "Installeer dit pakket niet behalve als je zeker weet dat het veilig is om te "
 "doen."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr ""
 "Installeer deze pakketten niet behalve als je zeker weet dat het veilig is "
 "om te doen."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr "Kwaadwillige software kan je computer beschadigen of ander kwaad doen."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "Vele pakketten"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "Alleen vertrouwde"
 
+#~ msgid "Failed to get transaction list"
+#~ msgstr "Transactie lijst verkrijgen mislukte."
+
 #~ msgid "Percentage"
 #~ msgstr "Percentage"
 
@@ -1864,9 +2022,6 @@ msgstr "Alleen vertrouwde"
 #~ msgid "No new packages need to be installed"
 #~ msgstr "Er hoeven geen nieuwe pakketten te worden toegevoegd"
 
-#~ msgid "Searching for package: "
-#~ msgstr "Pakketten worden gezocht (kan even duren): "
-
 #~ msgid "not found."
 #~ msgstr "niet gevonden."
 
commit 8a980d984c8dce42ed4e8faeca7d663dc44c36b9
Author: beckerde <beckerde at fedoraproject.org>
Date:   Fri Sep 18 11:24:38 2009 +0000

    Sending translation for Spanish

diff --git a/po/es.po b/po/es.po
index 7aa90da..4c30af1 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,9 +10,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-10 16:42+0000\n"
-"PO-Revision-Date: 2009-09-10 19:42+0200\n"
-"Last-Translator: Fernando Gonzalez <fgonz at fedoraproject.org>\n"
+"POT-Creation-Date: 2009-09-17 15:49+0000\n"
+"PO-Revision-Date: 2009-09-18 08:24-0300\n"
+"Last-Translator: Domingo Becker <domingobecker at gmail.com>\n"
 "Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,115 +21,118 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:143
+#: ../client/pk-console.c:142
 msgid "Transaction"
 msgstr "Transacción"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:145
+#: ../client/pk-console.c:144
 msgid "System time"
 msgstr "Hora del sistema"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "Succeeded"
 msgstr "Existosa"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "True"
 msgstr "Verdadero"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "False"
 msgstr "Falso"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
+#: ../client/pk-console.c:148
+#: ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "Rol"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "Duration"
 msgstr "Duración"
 
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "(seconds)"
 msgstr "(segundos)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
+#: ../client/pk-console.c:157
+#: ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "Línea de comandos"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:160
+#: ../client/pk-console.c:159
 msgid "User ID"
 msgstr "ID del usuario"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:167
+#: ../client/pk-console.c:166
 msgid "Username"
 msgstr "Nombre de usuario"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:171
+#: ../client/pk-console.c:170
 msgid "Real name"
 msgstr "Nombre real"
 
-#: ../client/pk-console.c:179
+#: ../client/pk-console.c:178
 msgid "Affected packages:"
 msgstr "Paquete afectados:"
 
-#: ../client/pk-console.c:181
+#: ../client/pk-console.c:180
 msgid "Affected packages: None"
 msgstr "Paquetes afectados: Ninguno"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:201
+#: ../client/pk-console.c:200
 msgid "Distribution"
 msgstr "Distribución"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:203
+#: ../client/pk-console.c:202
 msgid "Type"
 msgstr "Tipo"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:205 ../client/pk-console.c:226
+#: ../client/pk-console.c:204
+#: ../client/pk-console.c:225
 msgid "Summary"
 msgstr "Resúmen"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:215
+#: ../client/pk-console.c:214
 msgid "Category"
 msgstr "Categoría"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:217
+#: ../client/pk-console.c:216
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:220
+#: ../client/pk-console.c:219
 msgid "Parent"
 msgstr "Padre"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:223
+#: ../client/pk-console.c:222
 msgid "Name"
 msgstr "Nombre"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:229
+#: ../client/pk-console.c:228
 msgid "Icon"
 msgstr "Icono"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:243
+#: ../client/pk-console.c:242
 msgid "Details about the update:"
 msgstr "Detalles acerca de la actualización:"
 
@@ -137,184 +140,179 @@ msgstr "Detalles acerca de la actualización:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../client/pk-console.c:248
+#: ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Paquete"
 msgstr[1] "Paquetes"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:251
 msgid "Updates"
 msgstr "Actualizaciones"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:256
+#: ../client/pk-console.c:255
 msgid "Obsoletes"
 msgstr "Sustituye"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
+#: ../client/pk-console.c:259
+#: ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "Fabricante"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:264
+#: ../client/pk-console.c:263
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:267
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:271
 msgid "Restart"
 msgstr "Reiniciar"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:276
+#: ../client/pk-console.c:275
 msgid "Update text"
 msgstr "Texto de actualización"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:280
+#: ../client/pk-console.c:279
 msgid "Changes"
 msgstr "Cambios"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:284
+#: ../client/pk-console.c:283
 msgid "State"
 msgstr "Estado"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:288
 msgid "Issued"
 msgstr "Emitido"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:470
+#: ../client/pk-console.c:293
+#: ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Actualizado"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:312
+#: ../client/pk-console.c:311
 msgid "Enabled"
 msgstr "Habilitado"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:314
 msgid "Disabled"
 msgstr "Deshabilitado"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:337
+#: ../client/pk-console.c:336
 msgid "System restart required by:"
 msgstr "Se necesita reiniciar el sistema debido a:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:339
 msgid "Session restart required:"
 msgstr "Se necesita reiniciar la sesión:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:342
 msgid "System restart (security) required by:"
 msgstr "Reinicio del sistema (seguridad) solicitado por:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:346
+#: ../client/pk-console.c:345
 msgid "Session restart (security) required:"
 msgstr "Reinicio de la sesión (seguridad) solicitado por:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:349
+#: ../client/pk-console.c:348
 msgid "Application restart required by:"
 msgstr "Se necesita reiniciar una aplicación debido a:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:365
 msgid "Package description"
 msgstr "Descripción del paquete"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:383
 msgid "Message:"
 msgstr "Mensaje:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:398
+#: ../client/pk-console.c:397
 msgid "No files"
 msgstr "No hay archivos"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:403
+#: ../client/pk-console.c:402
 msgid "Package files"
 msgstr "Archivos del paquete"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:475
 msgid "Fatal error"
 msgstr "Error fatal"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:488
 msgid "Transaction failed with no error"
 msgstr "La transacción fallida sin error"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:493
 msgid "The transaction failed"
 msgstr "La transacción no pudo realizarse"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:567
 msgid "Please restart the computer to complete the update."
 msgstr "Reinicie el equipo para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:570
 msgid "Please logout and login to complete the update."
 msgstr "Cierre la sesión y vuelva a entrar para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
-msgid ""
-"Please restart the computer to complete the update as important security "
-"updates have been installed."
-msgstr ""
-"Por favor, reinicie el equipo para completar la actualización, ya que se han "
-"instalado actualizaciones de seguridad importantes."
+#: ../client/pk-console.c:573
+msgid "Please restart the computer to complete the update as important security updates have been installed."
+msgstr "Por favor, reinicie el equipo para completar la actualización, ya que se han instalado actualizaciones de seguridad importantes."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
-msgid ""
-"Please logout and login to complete the update as important security updates "
-"have been installed."
-msgstr ""
-"Por favor, cierre la sesión y vuelva a registrarse para completar la "
-"actualización, ya que se han instalado actualizaciones de seguridad "
-"importantes."
+#: ../client/pk-console.c:576
+msgid "Please logout and login to complete the update as important security updates have been installed."
+msgstr "Por favor, cierre la sesión y vuelva a registrarse para completar la actualización, ya que se han instalado actualizaciones de seguridad importantes."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:597
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Esta herramienta no pudo encontrar ningún paquete disponible: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:625
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Esta herramienta no pudo encontrar el paquete instalado: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:653
+#: ../client/pk-console.c:681
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Esta herramienta no pudo encontrar el paquete: %s"
@@ -323,172 +321,181 @@ msgstr "Esta herramienta no pudo encontrar el paquete: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:709
+#: ../client/pk-console.c:737
+#: ../client/pk-console.c:765
+#: ../client/pk-console.c:793
+#: ../client/pk-console.c:821
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Esta herramienta no pudo encontrar todos los paquetes: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:850
 msgid "The daemon crashed mid-transaction!"
 msgstr "El demonio se colgó en medio de una transacción."
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:884
 msgid "PackageKit Console Interface"
 msgstr "Interfaz de consola de PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:886
 msgid "Subcommands:"
 msgstr "Subcomandos:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:965
 msgid "Failed to get the time since this action was last completed"
 msgstr "Falló al obtener la hora de la última vez que se completó esta acción"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1000
+#: ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
-#: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
+#: ../contrib/device-rebind/pk-device-rebind.c:293
+#: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Mostrar información extra de depuración"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1003
+#: ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1006
 msgid "Set the filter, e.g. installed"
 msgstr "Establecer el filtro, ej. instalado"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1009
 msgid "Exit without waiting for actions to complete"
 msgstr "Salir sin esperar que las acciones se completen"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1034
 msgid "Failed to contact PackageKit"
 msgstr "Falló al contactar con PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1086
 msgid "The filter specified was invalid"
 msgstr "El filtro especificado fue inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1105
 msgid "A search type is required, e.g. name"
 msgstr "Se necesita un tipo de búsqueda, por ejemplo, nombre"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1112
+#: ../client/pk-console.c:1124
+#: ../client/pk-console.c:1136
+#: ../client/pk-console.c:1148
 msgid "A search term is required"
 msgstr "Se necesita un término de búsqueda"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1158
 msgid "Invalid search type"
 msgstr "Tipo de búsqueda inválido"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1164
 msgid "A package name to install is required"
 msgstr "Se necesita un nombre de paquete a instalar"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1173
 msgid "A filename to install is required"
 msgstr "Se requiere un nombre de archivo a instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1185
 msgid "A type, key_id and package_id are required"
 msgstr "Se necesita un tipo, key_id y package_id"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1196
 msgid "A package name to remove is required"
 msgstr "Necesita un nombre de paquete para eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1205
 msgid "A destination directory and the package names to download are required"
-msgstr ""
-"Se necesita un directorio de destino y los nombres de los paquetes a "
-"descargar"
+msgstr "Se necesita un directorio de destino y los nombres de los paquetes a descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1212
 msgid "Directory not found"
 msgstr "Directorio no encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1221
 msgid "A licence identifier (eula-id) is required"
 msgstr "Se necesita un identificador de licencia (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1232
 msgid "A transaction identifier (tid) is required"
 msgstr "Se necesita un identificador de transacción (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1253
 msgid "A package name to resolve is required"
 msgstr "Se necesita un nombre de paquete para resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1264
+#: ../client/pk-console.c:1275
 msgid "A repository name is required"
 msgstr "Se necesita un nombre de repositorio"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1286
 msgid "A repo name, parameter and value are required"
 msgstr "Debe especificar un nombre de repositorio, parámetro y valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1303
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Debe especificar una acción, por ejemplo, «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1310
 msgid "A correct role is required"
 msgstr "Se necesita un rol correcto"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1320
+#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1344
+#: ../client/pk-console.c:1364
+#: ../client/pk-console.c:1373
+#: ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "Se necesita un nombre de paquete"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1353
 msgid "A package provide string is required"
 msgstr "Se necesita la cadena de lo que proporciona el paquete"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1433
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "La opción «%s» no está soportada"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1443
 msgid "Command failed"
 msgstr "Falló el comando"
 
@@ -499,10 +506,8 @@ msgstr "Establezca el nombre del archivo de dependencias para excluir"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:228
-msgid ""
-"The output file or directory (the current directory is used if ommitted)"
-msgstr ""
-"El directorio o archivo de salida (se usará si se omite el directorio actual)"
+msgid "The output file or directory (the current directory is used if ommitted)"
+msgstr "El directorio o archivo de salida (se usará si se omite el directorio actual)"
 
 #. TRANSLATORS: put a list of packages in the pack
 #: ../client/pk-generate-pack.c:231
@@ -536,25 +541,20 @@ msgstr "Fallo del demonio en el inicio"
 
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:322 ../client/pk-generate-pack.c:328
+#: ../client/pk-generate-pack.c:322
+#: ../client/pk-generate-pack.c:328
 msgid "The package manager cannot perform this type of operation."
 msgstr "El gestor de paquetes no puede realizar este tipo de operación."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
 #: ../client/pk-generate-pack.c:335
-msgid ""
-"Service packs cannot be created as PackageKit was not built with libarchive "
-"support."
-msgstr ""
-"No se pueden crear paquetes de servicio ya que PackageKit no se construyó "
-"con soporte para libarchive."
+msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
+msgstr "No se pueden crear paquetes de servicio ya que PackageKit no se construyó con soporte para libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
 #: ../client/pk-generate-pack.c:346
 msgid "If specifying a file, the service pack name must end with"
-msgstr ""
-"Si especifica un archivo, el nombre del paquete de servicio debe finalizar "
-"con"
+msgstr "Si especifica un archivo, el nombre del paquete de servicio debe finalizar con"
 
 #. TRANSLATORS: This is when file already exists
 #: ../client/pk-generate-pack.c:362
@@ -604,16 +604,12 @@ msgstr "Paquete de servicio «%s» creado"
 msgid "Failed to create '%s': %s"
 msgstr "Falló al crear «%s»: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "Falló al obtener la lista de transacciones"
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "Falló al obtener el estado del demonio"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "Monitor de PackageKit"
 
@@ -679,8 +675,7 @@ msgstr "Descargando detalles acerca de las fuentes de software"
 #. TRANSLATORS: downloading file lists so we can search
 #: ../contrib/command-not-found/pk-command-not-found.c:362
 msgid "Downloading filelists (this may take some time to complete)."
-msgstr ""
-"Descargando listas de archivo (esto podría tardar un tiempo en completarse)."
+msgstr "Descargando listas de archivo (esto podría tardar un tiempo en completarse)."
 
 #. TRANSLATORS: waiting for native lock
 #: ../contrib/command-not-found/pk-command-not-found.c:366
@@ -770,17 +765,12 @@ msgstr "Iniciando la instalación"
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:406
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
-msgstr ""
-"No se ha podido encontrar el paquete %s, o tal vez ya se encuentre "
-"instalado: %s"
+msgstr "No se ha podido encontrar el paquete %s, o tal vez ya se encuentre instalado: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:507
-msgid ""
-"Don't actually install any packages, only simulate what would be installed"
-msgstr ""
-"No se instala ningún paquete realmente, solo se indica cuáles serían "
-"instalados"
+msgid "Don't actually install any packages, only simulate what would be installed"
+msgstr "No se instala ningún paquete realmente, solo se indica cuáles serían instalados"
 
 #. command line argument, do we skip packages that depend on the ones specified
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:510
@@ -930,7 +920,7 @@ msgstr "No se instalan paquetes en modo de simulación"
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "Instalando paquetes"
@@ -1057,303 +1047,462 @@ msgstr "Lista de paquetes de PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Paquete de servicio de PackageKit"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Introduzca un número de 1 a %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "Coincide más de un paquete:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "Elija el paquete correcto: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "Estado desconocido"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "Comenzando"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "Esperando en cola"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "Corriendo"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "Consultando"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "Obteniendo.información"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "Eliminando paquetes"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "Descargando paquetes"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "Refrescando listado de software"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "Instalando actualizaciones"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "Limpiando paquetes"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "Paquetes obsoletos"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "Resolviendo dependencias"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "Comprobando firmas"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "Retrocediendo"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "Comprobando cambios"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "Realizando cambios"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "Solicitando datos"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "Finalizado"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "Cancelado"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "Descargando información del repositorio"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "Descargando listas de paquetes"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "Descargando listados de archivos"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "Descargando listas de cambios"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "Descargando grupos"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "Descargando información de la actualización"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "Empaquetando archivos"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "Cargando caché"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "Escaneando aplicaciones"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "Generando la lista de paquetes"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "Esperando bloqueo del administrador de paquetes"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "Esperando por la autentificación"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "Actualizando aplicaciones ejecutadas"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "Comprobando aplicaciones en uso"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "Comprobando Librerías en uso"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:372
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
 msgid "Trivial"
 msgstr "Trivial"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:376
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
 msgid "Normal"
 msgstr "Normal"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:380
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
 msgid "Important"
 msgstr "Importante"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:384
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
 msgid "Security"
 msgstr "Seguridad"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
 msgid "Bug fix "
 msgstr "Corrijiendo error"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:392
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
 msgid "Enhancement"
 msgstr "Mejora"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:396
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
 msgid "Blocked"
 msgstr "Bloqueado"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
-#: ../lib/packagekit-glib2/pk-console-shared.c:474
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
 msgid "Installed"
 msgstr "Instalado"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:406
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
 msgid "Available"
 msgstr "Disponible"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:424
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
 msgid "Downloading"
 msgstr "Descargando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:428
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
 msgid "Updating"
 msgstr "Actualizando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:432
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "Instalando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:436
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "Eliminando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:440
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
 msgid "Cleaning up"
 msgstr "Limpiando"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:444
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
 msgid "Obsoleting"
 msgstr "Obsoleto"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
 msgid "Reinstalling"
 msgstr "Reinstalando"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:466
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
 msgid "Downloaded"
 msgstr "Descargado"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:478
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
 msgid "Removed"
 msgstr "Eliminados"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:482
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
 msgid "Cleaned up"
 msgstr "Limpiados"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:486
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
 msgid "Obsoleted"
 msgstr "Obsoleto"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:490
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
 msgid "Reinstalled"
 msgstr "Reinstalado"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "Tipo de rol desconocido"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "Obteniendo dependencias"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "Obteniendo detalles de la actualización"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "Obteniendo detalles"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "Obteniendo lo que requiere"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "Obteniendo actualizaciones"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "Buscando por detalles"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "Buscando por archivos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "Buscando grupos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "Buscando por nombre"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "Instalando archivos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "Refrescando caché"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "Actualizando paquetes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "Actualizando sistema"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "Cancelando"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "Obteniendo repositorios"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "Habilitando repositorio"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "Poniendo datos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "Resolviendo"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "Obteniendo lista de archivos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "Obteniendo lo que provee"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "Instalando firma"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "Obteniendo paquetes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "Aceptando EULA"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "Obteniendo actualizaciones"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "Obteniendo categorías"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "Obteniendo transacciones"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "Simulando la instalación"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "Simulando eliminación"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "Sumulando la actualización"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1509,22 +1658,16 @@ msgid "Authentication is required to accept a EULA"
 msgstr "Se necesita autenticación para aceptar una EULA"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid ""
-"Authentication is required to cancel a task that was not started by yourself"
+msgid "Authentication is required to cancel a task that was not started by yourself"
 msgstr "Se necesita autenticación para cancelar una tarea que no inició usted"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:10
 msgid "Authentication is required to change software source parameters"
-msgstr ""
-"Se necesita autenticación para cambiar los parámetros de fuente de software"
+msgstr "Se necesita autenticación para cambiar los parámetros de fuente de software"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr ""
-"Se necesita autenticación para considerar una clave usada para firmar "
-"paquetes como confiable"
+msgid "Authentication is required to consider a key used for signing packages as trusted"
+msgstr "Se necesita autenticación para considerar una clave usada para firmar paquetes como confiable"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:12
 msgid "Authentication is required to install a signed package"
@@ -1540,9 +1683,7 @@ msgstr "Se necesita autenticación para refrescar las fuentes del sistema"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:15
 msgid "Authentication is required to reload the device with a new driver"
-msgstr ""
-"Se necesita autenticación para recargar el dispositivo con un controlador "
-"nuevo"
+msgstr "Se necesita autenticación para recargar el dispositivo con un controlador nuevo"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:16
 msgid "Authentication is required to remove packages"
@@ -1553,12 +1694,8 @@ msgid "Authentication is required to rollback a transaction"
 msgstr "Se necesita autenticación para deshacer una transacción"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr ""
-"Se necesita autenticación para cambiar el proxy de red usado para descargar "
-"paquetes"
+msgid "Authentication is required to set the network proxy used for downloading packages"
+msgstr "Se necesita autenticación para cambiar el proxy de red usado para descargar paquetes"
 
 #: ../policy/org.freedesktop.packagekit.policy.in.h:19
 msgid "Authentication is required to update packages"
@@ -1689,12 +1826,8 @@ msgstr "El usuario correcto no esta lanzando el ejecutable (generalmente root)"
 
 #. TRANSLATORS: or we are installed in a prefix
 #: ../src/pk-main.c:93
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
-msgstr ""
-"El archivo org.freedesktop.PackageKit.conf no está instalado en el "
-"directorio del sistema:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
+msgstr "El archivo org.freedesktop.PackageKit.conf no está instalado en el directorio del sistema:"
 
 #. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
 #: ../src/pk-main.c:205
@@ -1741,370 +1874,269 @@ msgstr "No se pudo conectar con el bus del sistema"
 msgid "Error trying to start:"
 msgstr "Error intentando iniciar:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
-msgstr ""
-"Para poder instalar paquetes de depuración, es necesario habilitar nuevas "
-"fuentes"
+msgstr "Para poder instalar paquetes de depuración, es necesario habilitar nuevas fuentes"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171
+#: ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "El software no proviene de una fuente confiable."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
-msgstr ""
-"No actualice este paquete a menos que sepa con certeza que es seguro hacerlo."
+msgstr "No actualice este paquete a menos que sepa con certeza que es seguro hacerlo."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
-msgstr ""
-"No actualice estos paquete a menos que sepa con certeza que es seguro "
-"hacerlo."
+msgstr "No actualice estos paquete a menos que sepa con certeza que es seguro hacerlo."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
-msgstr ""
-"No instale este paquete a menos que sepa con certeza que es seguro hacerlo."
+msgstr "No instale este paquete a menos que sepa con certeza que es seguro hacerlo."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
-msgstr ""
-"No instale estos paquete a menos que sepa con certeza que es seguro hacerlo."
+msgstr "No instale estos paquete a menos que sepa con certeza que es seguro hacerlo."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
-msgstr ""
-"Un software considerado maligno puede provocar diferentes clases de daño, "
-"por ejemplo, podría dañar su computadora. "
+msgstr "Un software considerado maligno puede provocar diferentes clases de daño, por ejemplo, podría dañar su computadora. "
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "Varios paquetes"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "Solo confiable"
 
+#~ msgid "Failed to get transaction list"
+#~ msgstr "Falló al obtener la lista de transacciones"
 #~ msgid "Percentage"
 #~ msgstr "Porcentaje"
-
 #~ msgid "Please restart the application as it is being used."
 #~ msgstr "Reinicie la aplicación que está usando."
-
 #~ msgid "The package %s is already installed"
 #~ msgstr "El paquete %s ya está instalado"
-
 #~ msgid "The package %s could not be installed: %s"
 #~ msgstr "No se pudo instalar el paquete %s: %s"
-
 #~ msgid "The package install was canceled!"
 #~ msgstr "¡Se canceló la instalación del paquete!"
-
 #~ msgid "This tool could not install the packages: %s"
 #~ msgstr "Esta herramienta no pudo instalar los paquetes: %s"
-
 #~ msgid "This tool could not install the files: %s"
 #~ msgstr "Esta herramienta no pudo instalar los archivos: %s"
-
 #~ msgid "This tool could not remove %s: %s"
 #~ msgstr "Esta herramienta no pudo eliminar %s: %s"
-
 #~ msgid "This tool could not remove the packages: %s"
 #~ msgstr "Esta herramienta no pudo eliminar los paquetes: %s"
-
 #~ msgid "Proceed with additional packages?"
 #~ msgstr "¿Proceder con los paquetes adicionales?"
-
 #~ msgid "The package removal was canceled!"
 #~ msgstr "Se canceló la eliminación de paquetes"
-
 #~ msgid "This tool could not download the package %s as it could not be found"
 #~ msgstr ""
 #~ "Esta herramienta no pudo descargar el paquete %s debido a que no se "
 #~ "encontró"
-
 #~ msgid "This tool could not download the packages: %s"
 #~ msgstr "Esta herramienta no pudo descargar los paquetes: %s"
-
 #~ msgid "This tool could not update %s: %s"
 #~ msgstr "Esta herramienta no pudo actualizar %s: %s"
-
 #~ msgid "The package update was canceled!"
 #~ msgstr "¡Se canceló la actualización del paquete!"
-
 #~ msgid "This tool could not get the requirements for %s: %s"
 #~ msgstr "Esta herramienta no pudo obtener los requerimientos de %s: %s"
-
 #~ msgid "This tool could not get the dependencies for %s: %s"
 #~ msgstr "Esta herramienta no pudo obtener las dependencias de %s: %s"
-
 #~ msgid "This tool could not get package details for %s: %s"
 #~ msgstr "Esta herramienta no pudo obtener los detalles del paquete %s: %s"
-
 #~ msgid "This tool could not find the files for %s: %s"
 #~ msgstr "Esta herramienta no pudo encontrar los archivos de %s: %s"
-
 #~ msgid "This tool could not get the file list for %s: %s"
 #~ msgstr "Esta herramienta no pudo obtener la lista de archivos de %s: %s"
-
 #~ msgid "File already exists: %s"
 #~ msgstr "El archivo ya existe: %s"
-
 #~ msgid "This tool could not get package list: %s"
 #~ msgstr "Esta herramienta no pudo obtener la lista de paquetes: %s"
-
 #~ msgid "Failed to save to disk"
 #~ msgstr "Falló al guardar en el disco"
-
 #~ msgid "File does not exist: %s"
 #~ msgstr "El archivo no existe: %s"
-
 #~ msgid "Packages to add"
 #~ msgstr "Paquetes para añadir"
-
 #~ msgid "Packages to remove"
 #~ msgstr "Paquetes para eliminar"
-
 #~ msgid "No new packages need to be installed"
 #~ msgstr "No hay paquetes nuevos para instalar"
-
-#~ msgid "Searching for package: "
-#~ msgstr "Buscando el paquete: "
-
 #~ msgid "not found."
 #~ msgstr "no encontrado."
-
 #~ msgid "No packages can be found to install"
 #~ msgstr "No se encontró ningún paquete para instalar"
-
 #~ msgid "This tool could not find the update details for %s: %s"
 #~ msgstr ""
 #~ "Esta herramienta no pudo encontrar los detalles de actualización de %s: %s"
-
 #~ msgid "This tool could not get the update details for %s: %s"
 #~ msgstr ""
 #~ "Esta herramienta no pudo obtener los detalles de actualización de %s: %s"
-
 #~ msgid "Error:"
 #~ msgstr "Error:"
-
 #~ msgid "Repository signature required"
 #~ msgstr "Se requiere la firma del repositorio"
-
 #~ msgid "End user license agreement required"
 #~ msgstr "Se requiere un acuerdo de licencia de usuario final"
-
 #~ msgid "Do you agree to this license?"
 #~ msgstr "¿Está de acuerdo con esta licencia?"
-
 #~ msgid "The license was refused."
 #~ msgstr "Se rechazó la licencia."
-
 #~ msgid "This tool could not connect to system DBUS."
 #~ msgstr "Esta herramienta no se pudo conectar al DBUS del sistema."
-
 #~ msgid "A package name or filename to install is required"
 #~ msgstr "Se requiere un nombre de paquete o nombre de archivo para instalar"
-
 #~ msgid "A list file name to create is required"
 #~ msgstr "Se necesita un nombre de archivo de la lista"
-
 #~ msgid "A list file to open is required"
 #~ msgstr "Se necesita un archivo de lista para abrir"
-
 #~ msgid "Incorrect privileges for this operation"
 #~ msgstr "Privilegios incorrectos para esta operación"
-
 #~ msgid "Cannot show the list of transactions"
 #~ msgstr "No es posible mostrar la lista de transacciones"
-
 #~ msgid "The package could not be found"
 #~ msgstr "No se pudo encontrar el paquete"
-
 #~ msgid "EULA ID"
 #~ msgstr "ID del acuerdo de licencia de usuario final (EULA) "
-
 #~ msgid "Media ID"
 #~ msgstr "ID de medio"
-
 #~ msgid "Main cache file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Archivo caché principal a usar (si no se especifica, se usará el "
 #~ "predeterminado)"
-
 #~ msgid "Source cache file to add to the main database"
 #~ msgstr "Archivo caché fuente para agregar a la base de datos principal"
-
 #~ msgid "Icon directory"
 #~ msgstr "Directorio de Iconos"
-
 #~ msgid "Name of the remote repo"
 #~ msgstr "Nombre del repo remoto"
-
 #~ msgid "PackageKit Application Database Installer"
 #~ msgstr "Instalador de la Base de Datos de Aplicaciones de PackageKit"
-
 #~ msgid "Main database file to use (if not specififed, default is used)"
 #~ msgstr ""
 #~ "Base de datos principal a usar (si no se especifica se usará el "
 #~ "predeterminado)"
-
 #~ msgid "You need to specify a search type, e.g. name"
 #~ msgstr "Debe especificar el tipo de búsqueda, por ejemplo, nombre"
-
 #~ msgid "You need to specify a search term"
 #~ msgstr "Debe especificar un término de búsqueda"
-
 #~ msgid "You need to specify a package to remove"
 #~ msgstr "Debe especificar un paquete a eliminar"
-
 #~ msgid "You need to specify a package name to resolve"
 #~ msgstr "Debe especificar un nombre de paquete a resolver"
-
 #~ msgid "You need to specify a repository name"
 #~ msgstr "Debe especificar un nombre de repositorio"
-
 #~ msgid "You need to specify a correct role"
 #~ msgstr "Debe especificar un rol correcto"
-
 #~ msgid "You need to specify a package to find the details for"
 #~ msgstr "Debe especificar un paquete para el que buscar la descripción"
-
 #~ msgid "You need to specify a package to find the files for"
 #~ msgstr "Debe especificar un paquete para el que buscar los archivos"
-
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Debe especificar un archivo de lista a abrir"
-
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "Esta herramienta no pudo eliminar los paquetes: '%s'"
-
 #~ msgid "Install local file"
 #~ msgstr "Instalar archivo local"
-
 #~ msgid "Okay to import key?"
 #~ msgstr "¿De acuerto con importer la clave?"
-
 #~ msgid "Did not import key"
 #~ msgstr "No se importó la clave"
-
 #~ msgid "Do you agree?"
 #~ msgstr "¿Está de acuerdo?"
-
 #~ msgid "Could not find package to remove"
 #~ msgstr "No se pudo encontrar el paquete a eliminar"
-
 #~ msgid "Could not find package to update"
 #~ msgstr "No se pudo encontrar el paquete a actualizar"
-
 #~ msgid "Could not find what packages require"
 #~ msgstr "No se pudo encontrar cuales paquetes requiere este paquete"
-
 #~ msgid "Could not find details for"
 #~ msgstr "No se pudieron obtener los detalles de "
 
 #, fuzzy
 #~ msgid "Could not set database readonly"
 #~ msgstr "No se pudo abrir la base de datos: %s"
-
 #~ msgid "Could not open database: %s"
 #~ msgstr "No se pudo abrir la base de datos: %s"
-
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Probablemente necesita ejecutar este programa como el usuario root"
-
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Ejecutar %s</span>"
-
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ejecutar versión %s ahora</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Ejecutar ahora</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Actualizar a la versión %s</span>"
-
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Instalar %s Ahora</"
 #~ "span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Versión: %s</small>"
-
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr "falló la descarga: id de paquete inválido y/o directorio"
-
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "No se pudo encontrar un archivo de metadatos válido"
-
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Listo para descargar los paquetes adicionales"
-
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Debe especificar el nombre de grupo y los paquetes a agrupar\n"
-
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Nombre inválido para el paquete de servicio. Especifique un nombre con la "
 #~ "extensión .servicepack\n"
-
 #~ msgid "Authentication is required to install a local file"
 #~ msgstr "Se requiere autenticación para instalar un archivo local"
-
 #~ msgid "Authentication is required to install a security signature"
 #~ msgstr "Se requiere autenticación para instalar una firma de seguridad"
-
 #~ msgid "Authentication is required to update all packages"
 #~ msgstr "Se requiere autenticación para actualizar todos los paquetes"
-
-#~ msgid "Install security signature"
-#~ msgstr "Instalar firma de seguridad"
-
 #~ msgid "Update all packages"
 #~ msgstr "Actualizar todos los paquetes"
-
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
 #~ msgstr ""
 #~ "No se pudo encontrar un paquete con ese nombre para instalar, o el "
 #~ "paquete ya está instalado"
-
 #~ msgid "Could not find a package with that name to update"
 #~ msgstr "No se pudo encontrar un paquete con ese nombre para actualizar"
-
 #~ msgid "Could not find a description for this package"
 #~ msgstr "No se pudo encontrar una descripcion para este paquete"
-
 #~ msgid "You need to specify a package to find the description for"
 #~ msgstr "Debe especificar un paquete para el que buscar la descripción"
+
commit 814b9824b2cfef05b2929e6e5d74f06c7595d115
Author: jassy <jassy at fedoraproject.org>
Date:   Fri Sep 18 08:51:34 2009 +0000

    Sending translation for Punjabi

diff --git a/po/pa.po b/po/pa.po
index 49dbc77..b833c06 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.pa\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-11 02:28+0000\n"
-"PO-Revision-Date: 2009-09-11 12:15+0530\n"
+"POT-Creation-Date: 2009-09-18 06:43+0000\n"
+"PO-Revision-Date: 2009-09-18 14:19+0530\n"
 "Last-Translator: Jaswinder Singh <jsingh at redhat.com>\n"
 "Language-Team: Punjabi <Punjabi-users at lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -20,115 +20,115 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:143
+#: ../client/pk-console.c:142
 msgid "Transaction"
 msgstr "ਟਰਾਂਸੈਕਸ਼ਨ"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:145
+#: ../client/pk-console.c:144
 msgid "System time"
 msgstr "ਸਿਸਟਮ ਸਮਾਂ"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "Succeeded"
 msgstr "ਸਫ਼ਲ"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "True"
 msgstr "ਸਹੀਂ"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "False"
 msgstr "ਗਲਤ"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
+#: ../client/pk-console.c:148 ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "ਰੋਲ"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "Duration"
 msgstr "ਅੰਤਰਾਲ"
 
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "(seconds)"
 msgstr "(ਸਕਿੰਟ)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
+#: ../client/pk-console.c:157 ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "ਕਮਾਂਡ ਲਾਈਨ"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:160
+#: ../client/pk-console.c:159
 msgid "User ID"
 msgstr "ਯੂਜ਼ਰ ID"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:167
+#: ../client/pk-console.c:166
 msgid "Username"
 msgstr "ਯੂਜ਼ਰ ਨਾਂ"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:171
+#: ../client/pk-console.c:170
 msgid "Real name"
 msgstr "ਅਸਲੀ ਨਾਂ"
 
-#: ../client/pk-console.c:179
+#: ../client/pk-console.c:178
 msgid "Affected packages:"
 msgstr "ਪ੍ਰਭਾਵਿਤ ਪੈਕੇਜ:"
 
-#: ../client/pk-console.c:181
+#: ../client/pk-console.c:180
 msgid "Affected packages: None"
 msgstr "ਪ੍ਰਭਾਵਿਤ ਪੈਕੇਜ: ਕੋਈ ਨਹੀਂ"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:201
+#: ../client/pk-console.c:200
 msgid "Distribution"
 msgstr "ਡਿਸਟਰੀਬਿਊਸ਼ਨ"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:203
+#: ../client/pk-console.c:202
 msgid "Type"
 msgstr "ਟਾਈਪ"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:205 ../client/pk-console.c:226
+#: ../client/pk-console.c:204 ../client/pk-console.c:225
 msgid "Summary"
 msgstr "ਸੰਖੇਪ"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:215
+#: ../client/pk-console.c:214
 msgid "Category"
 msgstr "ਕੈਟਾਗਰੀ"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:217
+#: ../client/pk-console.c:216
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:220
+#: ../client/pk-console.c:219
 msgid "Parent"
 msgstr "ਮੋਢੀ"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:223
+#: ../client/pk-console.c:222
 msgid "Name"
 msgstr "ਨਾਂ"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:229
+#: ../client/pk-console.c:228
 msgid "Icon"
 msgstr "ਆਈਕਾਨ"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:243
+#: ../client/pk-console.c:242
 msgid "Details about the update:"
 msgstr "ਅੱਪਡੇਟ ਬਾਰੇ ਵੇਰਵਾ:"
 
@@ -136,179 +136,179 @@ msgstr "ਅੱਪਡੇਟ ਬਾਰੇ ਵੇਰਵਾ:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../client/pk-console.c:248 ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "ਪੈਕੇਜ"
 msgstr[1] "ਪੈਕੇਜ"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:251
 msgid "Updates"
 msgstr "ਅੱਪਡੇਟ"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:256
+#: ../client/pk-console.c:255
 msgid "Obsoletes"
 msgstr "ਬਰਤਰਫ਼"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
+#: ../client/pk-console.c:259 ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "ਵੇਂਡਰ"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:264
+#: ../client/pk-console.c:263
 msgid "Bugzilla"
 msgstr "ਬੱਗਜ਼ੀਲਾ"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:267
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:271
 msgid "Restart"
 msgstr "ਮੁੜ-ਚਾਲੂ"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:276
+#: ../client/pk-console.c:275
 msgid "Update text"
 msgstr "ਅੱਪਡੇਟ ਟੈਕਸਟ"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:280
+#: ../client/pk-console.c:279
 msgid "Changes"
 msgstr "ਬਦਲਾਅ"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:284
+#: ../client/pk-console.c:283
 msgid "State"
 msgstr "ਹਾਲਤ"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:288
 msgid "Issued"
 msgstr "ਜਾਰੀ ਕੀਤਾ"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:470
+#: ../client/pk-console.c:293 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "ਅੱਪਡੇਟ ਕੀਤੇ"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:312
+#: ../client/pk-console.c:311
 msgid "Enabled"
 msgstr "ਯੋਗ"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:314
 msgid "Disabled"
 msgstr "ਅਯੋਗ"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:337
+#: ../client/pk-console.c:336
 msgid "System restart required by:"
 msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:339
 msgid "Session restart required:"
 msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:342
 msgid "System restart (security) required by:"
 msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ (ਸੁਰੱਖਿਆ) ਕਰਨ ਦੀ ਲੋੜ ਹੈ:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:346
+#: ../client/pk-console.c:345
 msgid "Session restart (security) required:"
 msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ (ਸੁਰੱਖਿਆ) ਕਰਨ ਦੀ ਲੋੜ:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:349
+#: ../client/pk-console.c:348
 msgid "Application restart required by:"
 msgstr "ਐਪਲੀਕੇਸ਼ਨ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:365
 msgid "Package description"
 msgstr "ਪੈਕੇਜ ਵੇਰਵਾ"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:383
 msgid "Message:"
 msgstr "ਸੁਨੇਹਾ:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:398
+#: ../client/pk-console.c:397
 msgid "No files"
 msgstr "ਕੋਈ ਫਾਇਲ ਨਹੀਂ"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:403
+#: ../client/pk-console.c:402
 msgid "Package files"
 msgstr "ਪੈਕੇਜ ਫਾਇਲਾਂ"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:475
 msgid "Fatal error"
 msgstr "ਘਾਤਕ ਗਲਤੀ"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:488
 msgid "Transaction failed with no error"
 msgstr "ਬਿਨਾਂ ਕਿਸੇ ਗਲਤੀ ਟਰਾਂਸੈਕਸ਼ਨ ਫੇਲ ਹੋਈ"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:493
 msgid "The transaction failed"
 msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਫੇਲ ਹੋਈ"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:567
 msgid "Please restart the computer to complete the update."
 msgstr "ਅੱਪਡੇਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਸਤੇ ਕੰਪਿਊਟਰ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਜੀ।"
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:570
 msgid "Please logout and login to complete the update."
 msgstr "ਅੱਪਡੇਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਸਤੇ ਲਾਗਆਉਟ ਕਰਕੇ ਲਾਗਇਨ ਕਰੋ ਜੀ।"
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:573
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
 msgstr "ਅੱਪਡੇਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਸਤੇ ਕੰਪਿਊਟਰ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਜੀ ਕਿਉਂਕਿ ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਹੋਏ ਹਨ।"
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:576
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
 msgstr "ਅੱਪਡੇਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਵਾਸਤੇ ਲਾਗਆਉਟ ਕਰਕੇ ਲਾਗਇਨ ਕਰੋ ਜੀ ਕਿਉਂਕਿ ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕੀਤੇ ਹਨ।"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:597
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "ਇਹ ਟੂਲ ਉਪਲੱਬਧ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭ ਸਕਿਆ: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:625
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "ਇਹ ਟੂਲ ਇੰਸਟਾਲ ਕੀਤੇ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭ ਸਕਿਆ: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:653 ../client/pk-console.c:681
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "ਇਹ ਟੂਲ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭ ਸਕਿਆ: %s"
@@ -317,37 +317,37 @@ msgstr "ਇਹ ਟੂਲ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭ ਸਕਿਆ: %s
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:709 ../client/pk-console.c:737
+#: ../client/pk-console.c:765 ../client/pk-console.c:793
+#: ../client/pk-console.c:821
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "ਇਹ ਟੂਲ ਸਭ ਪੈਕੇਜ ਨਹੀਂ ਲੱਭ ਸਕਿਆ: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:850
 msgid "The daemon crashed mid-transaction!"
 msgstr "ਡੈਮਨ ਅਧੂਰੀ ਟਰਾਂਸੈਕਸ਼ਨ ਕਰੈਸ਼ ਹੋ ਗਈ!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:884
 msgid "PackageKit Console Interface"
 msgstr "ਪੈਕੇਜਕਿੱਟ ਕਨਸੋਲ ਇੰਟਰਫੇਸ"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:886
 msgid "Subcommands:"
 msgstr "ਸਬ-ਕਮਾਂਡ:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:965
 msgid "Failed to get the time since this action was last completed"
 msgstr "ਇਸ ਕਾਰਵਾਈ ਦੇ ਆਖਰੀ ਵਾਰ ਪੂਰੀ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸਮਾਂ ਲੈਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1000 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
@@ -355,132 +355,132 @@ msgid "Show extra debugging information"
 msgstr "ਹੋਰ ਡੀਬੱਗ ਜਾਣਕਾਰੀ ਵੇਖੋ"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1003 ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "ਪਰੋਗਰਾਮ ਵਰਜਨ ਵੇਖੋ ਅਤੇ ਬੰਦ ਕਰੋ"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1006
 msgid "Set the filter, e.g. installed"
 msgstr "ਫਿਲਟਰ ਸੈੱਟ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਇੰਸਟਾਲ"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1009
 msgid "Exit without waiting for actions to complete"
 msgstr "ਪੂਰੇ ਹੋਣ ਵਾਲੇ ਐਕਸ਼ਨ ਦੀ ਉਡੀਕ ਕੀਤੇ ਬਿਨਾਂ ਬੰਦ ਕਰੋ"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1034
 msgid "Failed to contact PackageKit"
 msgstr "ਪੈਕੇਜਕਿੱਟ ਨਾਲ ਸੰਪਰਕ ਲਈ ਫੇਲ੍ਹ ਹੈ"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1086
 msgid "The filter specified was invalid"
 msgstr "ਦਿੱਤਾ ਫਿਲਟਰ ਅਢੁੱਕਵਾਂ ਹੈ।"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1105
 msgid "A search type is required, e.g. name"
 msgstr "ਖੋਜ ਕਿਸਮ ਚਾਹੀਦੀ ਹੈ, ਜਿਵੇਂ ਨਾਂ"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1112 ../client/pk-console.c:1124
+#: ../client/pk-console.c:1136 ../client/pk-console.c:1148
 msgid "A search term is required"
 msgstr "ਖੋਜ ਸ਼ਬਦ ਦੀ ਲੋੜ ਹੈ"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1158
 msgid "Invalid search type"
 msgstr "ਗਲਤ ਖੋਜ ਟਾਈਪ"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1164
 msgid "A package name to install is required"
 msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਪੈਕੇਜ ਨਾਂ ਲਾਜ਼ਮੀ ਹੈ"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1173
 msgid "A filename to install is required"
 msgstr "ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਇੱਕ ਫਾਇਲ ਨਾਂ ਦੀ ਲੋੜ ਹੈ"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1185
 msgid "A type, key_id and package_id are required"
 msgstr "ਟਾਈਪ, key_id ਜਾਂ package_id ਦੇਣ ਦੀ ਲੋੜ ਹੈ"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1196
 msgid "A package name to remove is required"
 msgstr "ਹਟਾਉਣ ਵਾਸਤੇ ਪੈਕੇਜ ਨਾਂ ਚਾਹੀਦਾ ਹੈ"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1205
 msgid "A destination directory and the package names to download are required"
 msgstr "ਡਾਊਨਲੋਡ ਕਰਨ ਵਾਸਤੇ ਟਿਕਾਣਾ ਡਾਇਰੈਕਟਰੀ ਅਤੇ ਪੈਕੇਜ ਨਾਂ ਲਾਜ਼ਮੀ ਹੈ"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1212
 msgid "Directory not found"
 msgstr "ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਲੱਭੀ"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1221
 msgid "A licence identifier (eula-id) is required"
 msgstr "ਇੱਕ ਲਾਈਸੈਂਸ ਪਛਾਣਕਰਤਾ (eula-id) ਲਾਜ਼ਮੀ ਹੈ"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1232
 msgid "A transaction identifier (tid) is required"
 msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਪਛਾਣ (tid) ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1253
 msgid "A package name to resolve is required"
 msgstr "ਹੱਲ ਕਰਨ ਲਈ ਪੈਕੇਜ ਨਾਂ ਲਾਜ਼ਮੀ ਹੈ"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1264 ../client/pk-console.c:1275
 msgid "A repository name is required"
 msgstr "ਰਿਪੋਜ਼ਟਰੀ ਨਾਂ ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1286
 msgid "A repo name, parameter and value are required"
 msgstr "ਰੈਪੋ ਨਾਂ, ਪੈਰਾਮੀਟਰ ਅਤੇ ਮੁੱਲ ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1303
 msgid "An action, e.g. 'update-system' is required"
 msgstr "ਕਾਰਵਾਈ, ਜਿਵੇਂ 'ਅੱਪਡੇਟ-ਸਿਸਟਮ' ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1310
 msgid "A correct role is required"
 msgstr "ਠੀਕ ਰੋਲ ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1320 ../client/pk-console.c:1335
+#: ../client/pk-console.c:1344 ../client/pk-console.c:1364
+#: ../client/pk-console.c:1373 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "ਪੈਕੇਜ ਨਾਂ ਲੋੜੀਦਾ ਹੈ"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1353
 msgid "A package provide string is required"
 msgstr "ਪੈਕੇਜ ਦੇਣ ਵਾਲੀ ਸਤਰ ਲੋੜੀਦੀ ਹੈ"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1433
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "ਚੋਣ '%s' ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1443
 msgid "Command failed"
 msgstr "ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੈ"
 
@@ -592,16 +592,12 @@ msgstr "ਸਰਵਿਸ ਪੈਕ ਬਣਾਇਆ '%s'"
 msgid "Failed to create '%s': %s"
 msgstr "'%s' ਬਣਾਉਣ ਲਈ ਫੇਲ੍ਹ: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "ਟਰਾਂਸੈਕਸ਼ਨ ਲਿਸਟ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "ਡੈਮਨ ਹਾਲਤ ਪਤਾ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "ਪੈਕੇਜਕਿੱਟ ਮਾਨੀਟਰ"
 
@@ -912,7 +908,7 @@ msgstr "ਸਿਮੂਲੇਟ ਮੋਡ ਵਿੱਚ ਪੈਕੇਜ ਇੰਸà¨
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "ਪੈਕੇਜ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
@@ -1039,303 +1035,462 @@ msgstr "ਪੈਕੇਜਕਿੱਟ ਪੈਕੇਜ ਲਿਸਟ"
 msgid "PackageKit Service Pack"
 msgstr "ਪੈਕੇਜਕਿੱਟ ਸਰਵਿਸ ਪੈਕ"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "੧ ਤੋਂ %i ਤੱਕ ਨੰਬਰ ਦਿਓ ਜੀ:"
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "ਇੱਕ ਤੋਂ ਵੱਧ ਰਲਦੇ ਪੈਕੇਜ ਲੱਭੇ:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "ਠੀਕ ਪੈਕੇਜ ਚੁਣੋ ਜੀ:"
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "ਅਣਜਾਣ ਸਥਿਤੀ"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "ਕਤਾਰ ਵਿੱਚ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "ਚੱਲ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "ਬੇਨਤੀ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "ਪੈਕੇਜ ਹਟਾ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "ਪੈਕੇਜ ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "ਸਾਫਟਵੇਅਰ ਸੂਚੀ ਮੁੜ-ਤਾਜ਼ੀ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "ਪੈਕੇਜ ਸਾਫ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "ਪੈਕੇਜ ਹਟਾ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "ਨਿਰਭਰਤਾ ਹੱਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "ਦਸਤਖਤ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "ਰੋਲ ਬੈਕ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "ਤਬਦੀਲੀਆਂ ਦੀ ਜਾਂਚ ਹੋ ਰਹੀ ਹੈ"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "ਤਬਦੀਲੀਆਂ ਕਮਿੱਟ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "ਡਾਟਾ ਬੇਨਤੀ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "ਮੁਕੰਮਲ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "ਰੱਦ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "ਰਿਪੋਜ਼ਟਰੀ ਜਾਣਕਾਰੀ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "ਪੈਕੇਜ ਲਿਸਟ ਡਾਊਨਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "ਫਾਇਲ ਸੂਚੀ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "ਤਬਦੀਲੀਆਂ ਦੀ ਲਿਸਟ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "ਗਰੁੱਪ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "ਅੱਪਡੇਟ ਜਾਣਕਾਰੀ ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "ਫਾਇਲ ਮੁੜ-ਪੈਕੇਜ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "ਕੈਸ਼ੇ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "ਐਪਲੀਕੇਸ਼ਨਾਂ ਸਕੈਨ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "ਪੈਕੇਜ ਲਿਸਟ ਬਣਾ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "ਪੈਕੇਜ ਮੈਨੇਜਰ ਲਾਕ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "ਚੱਲ ਰਹੀ ਐਪਲੀਕੇਸ਼ਨ ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "ਵਰਤੋਂ ਅਧੀਨ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਜਾਂਚ ਹੋ ਰਹੀ ਹੈ"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "ਵਰਤੋਂ ਅਧੀਨ ਲਾਇਬਰੇਰੀਆਂ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:372
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
 msgid "Trivial"
 msgstr "ਥੋੜਾ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:376
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
 msgid "Normal"
 msgstr "ਸਧਾਰਨ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:380
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
 msgid "Important"
 msgstr "ਜਰੂਰੀ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:384
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
 msgid "Security"
 msgstr "ਸੁਰੱਖਿਆ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
 msgid "Bug fix "
 msgstr "ਵੱਡਾ ਫਿਕਸ "
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:392
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
 msgid "Enhancement"
 msgstr "ਸੋਧ"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:396
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
 msgid "Blocked"
 msgstr "ਬਲਾਕਡ"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
-#: ../lib/packagekit-glib2/pk-console-shared.c:474
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
 msgid "Installed"
 msgstr "ਇੰਸਟਾਲ ਕੀਤੇ"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:406
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
 msgid "Available"
 msgstr "ਉਪਲੱਬਧ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:424
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
 msgid "Downloading"
 msgstr "ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:428
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
 msgid "Updating"
 msgstr "ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:432
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "ਇੰਸਟਾਲ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:436
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "ਹਟਾ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:440
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
 msgid "Cleaning up"
 msgstr "ਸਾਫ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:444
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
 msgid "Obsoleting"
 msgstr "ਛੱਡ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
 msgid "Reinstalling"
 msgstr "ਮੁੜ-ਇੰਸਟਾਲ ਕਰ ਰਿਹਾ ਹੈ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:466
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
 msgid "Downloaded"
 msgstr "ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:478
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
 msgid "Removed"
 msgstr "ਹਟਾਏ ਗਏ ਹਨ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:482
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
 msgid "Cleaned up"
 msgstr "ਸਾਫ ਹੋ ਗਏ ਹਨ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:486
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
 msgid "Obsoleted"
 msgstr "ਛੱਡ ਦਿੱਤੇ ਹਨ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:490
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
 msgid "Reinstalled"
 msgstr "ਮੁੜ-ਇੰਸਟਾਲ ਹੋ ਗਏ ਹਨ"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "ਅਣਜਾਣ ਰੋਲ ਕਿਸਮ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "ਨਿਰਭਰਤਾ ਲੈ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "ਅੱਪਡੇਟ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "ਵੇਰਵਾ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "ਲੋੜਾਂ ਪੂਰੀਆਂ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "ਅੱਪਡੇਟ ਲੈ ਰਿਹਾ ਹਾ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "ਵੇਰਵੇ ਦੇ ਅਧਾਰ ਤੇ ਖੋਜ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "ਫਾਇਲ ਦੇ ਅਧਾਰ ਤੇ ਖੋਜ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "ਗਰੁੱਪ ਦੇ ਅਧਾਰ ਤੇ ਖੋਜ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "ਨਾਂ ਦੇ ਅਧਾਰ ਤੇ ਖੋਜ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "ਫਾਇਲਾਂ ਇੰਸਟਾਲ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "ਕੈਸ਼ੇ ਮੁੜ-ਤਾਜ਼ੀ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "ਪੈਕੇਜ ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "ਸਿਸਟਮ ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "ਰੱਦ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "ਰਿਪੋਜ਼ਟਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "ਰਿਪੋਜ਼ਟਰੀ ਯੋਗ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "ਡਾਟਾ ਸੈੱਟ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "ਹੱਲ ਕਰ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "ਫਾਇਲ ਲਿਸਟ ਲਈ ਜਾ ਰਹੀ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "ਸਰੋਤ ਲਏ ਜਾ ਰਹੇ ਹਨ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "ਸਿਗਨੇਚਰ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "ਪੈਕੇਜ ਲੈ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "EULA ਵਰਤ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "ਅੱਪਡੇਟ ਲੈ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "ਸ਼੍ਰੇਣੀਆਂ ਲੈ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "ਸੰਚਚਾਰ ਲੈ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "ਨਕਲੀ ਇੰਸਟਾਲ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "ਨਕਲੀ ਹਟਾ ਰਿਹਾ ਹੈ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "ਨਕਲੀ ਅੱਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1713,43 +1868,43 @@ msgstr "ਸਿਸਟਮ ਬੱਸ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕà
 msgid "Error trying to start:"
 msgstr "ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਗਲਤੀ:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr "ਡੀਬੱਗਿੰਗ ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਰੋਤ ਯੋਗ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "ਸਾਫਟਵੇਅਰ ਇੱਕ ਭਰੋਸੇਯੋਗ ਸਰੋਤ ਤੋਂ ਨਹੀਂ ਹੈ।"
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr "ਇਸ ਪੈਕੇਜ ਨੂੰ ਅੱਪਡੇਟ ਨਾ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਇਸ ਬਾਰੇ ਪਤਾ ਨਹੀਂ।"
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr "ਇਹਨਾਂ ਪੈਕੇਜਾਂ ਨੂੰ ਅੱਪਡੇਟ ਨਾ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਇਸ ਬਾਰੇ ਪਤਾ ਨਹੀਂ।"
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr "ਇਸ ਪੈਕੇਜ ਨੂੰ ਇੰਸਟਾਲ ਨਾ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਇਸ ਬਾਰੇ ਪਤਾ ਨਹੀਂ।"
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr "ਇਹਨਾਂ ਪੈਕੇਜਾਂ ਨੂੰ ਇੰਸਟਾਲ ਨਾ ਕਰੋ ਜਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਇਸ ਬਾਰੇ ਪਤਾ ਨਹੀਂ।"
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr "ਗਲਤ ਸਾਫਟਵੇਅਰ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਨੂੰ ਖਰਾਬ ਜਾਂ ਹੋਰ ਨੁਕਸਾਨ ਕਰ ਸਕਦਾ ਹੈ।"
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "ਬਹੁਤੇ ਪੈਕੇਜ"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "ਸਿਰਫ ਭਰੋਸੇਯੋਗ"
 
commit 430cef3ac8c5cdc49e2a29f00dd7ce25e66f3152
Author: ifelix <ifelix at fedoraproject.org>
Date:   Fri Sep 18 08:47:47 2009 +0000

    Sending translation for Tamil

diff --git a/po/ta.po b/po/ta.po
index 8b10d99..c31b227 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.ta\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-10 08:29+0000\n"
-"PO-Revision-Date: 2009-09-10 16:08+0530\n"
+"POT-Creation-Date: 2009-09-18 06:43+0000\n"
+"PO-Revision-Date: 2009-09-18 14:10+0530\n"
 "Last-Translator: I. Felix <ifelix at redhat.com>\n"
 "Language-Team: Tamil <fedora-trans-ta at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -28,117 +28,118 @@ msgstr ""
 "\n"
 "\n"
 "\n"
+"\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:143
+#: ../client/pk-console.c:142
 msgid "Transaction"
 msgstr "பரிமாற்றம்"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:145
+#: ../client/pk-console.c:144
 msgid "System time"
 msgstr "கணினி நேரம்"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "Succeeded"
 msgstr "வெற்றியடைதல்"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "True"
 msgstr "சரி"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "False"
 msgstr "தவறு"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:327
+#: ../client/pk-console.c:148 ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "பங்கு"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "Duration"
 msgstr "இடைவெளி"
 
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "(seconds)"
 msgstr "(நொடிகள்"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:341
+#: ../client/pk-console.c:157 ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "கட்டளை வரி"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:160
+#: ../client/pk-console.c:159
 msgid "User ID"
 msgstr "பயனர் ஐடி"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:167
+#: ../client/pk-console.c:166
 msgid "Username"
 msgstr "பயனர் பெயர்"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:171
+#: ../client/pk-console.c:170
 msgid "Real name"
 msgstr "உண்மையான பெயர்"
 
-#: ../client/pk-console.c:179
+#: ../client/pk-console.c:178
 msgid "Affected packages:"
 msgstr "பாதிக்கப்பட்ட தொகுதிகள்:"
 
-#: ../client/pk-console.c:181
+#: ../client/pk-console.c:180
 msgid "Affected packages: None"
 msgstr "பாதிக்கப்பட்ட தொகுதிகள்: ஒன்றுமில்லாத"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:201
+#: ../client/pk-console.c:200
 msgid "Distribution"
 msgstr "விநியோகம்"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:203
+#: ../client/pk-console.c:202
 msgid "Type"
 msgstr "வகை"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:205 ../client/pk-console.c:226
+#: ../client/pk-console.c:204 ../client/pk-console.c:225
 msgid "Summary"
 msgstr "சுருக்கம்"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:215
+#: ../client/pk-console.c:214
 msgid "Category"
 msgstr "வகை"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:217
+#: ../client/pk-console.c:216
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:220
+#: ../client/pk-console.c:219
 msgid "Parent"
 msgstr "பெற்றோர்"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:223
+#: ../client/pk-console.c:222
 msgid "Name"
 msgstr "பெயர்"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:229
+#: ../client/pk-console.c:228
 msgid "Icon"
 msgstr "சின்னம்"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:243
+#: ../client/pk-console.c:242
 msgid "Details about the update:"
 msgstr "மேம்படுத்துதல் பற்றிய விவரங்கள்:"
 
@@ -146,159 +147,160 @@ msgstr "மேம்படுத்துதல் பற்றிய விவà
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../client/pk-console.c:248 ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:352
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "தொகுப்பு"
 msgstr[1] "தொகுப்புகள்"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:251
 msgid "Updates"
 msgstr "மேம்படுத்தல்கள"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:256
+#: ../client/pk-console.c:255
 msgid "Obsoletes"
 msgstr "நீக்கப்பட்டது"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
+#: ../client/pk-console.c:259 ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "விற்பனையாளர்"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:264
+#: ../client/pk-console.c:263
 msgid "Bugzilla"
 msgstr "பக்ஸிலா"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:267
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:271
 msgid "Restart"
 msgstr "மறுதுவக்கு"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:276
+#: ../client/pk-console.c:275
 msgid "Update text"
 msgstr "மேம்படுத்தப்பட்ட உரை"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:280
+#: ../client/pk-console.c:279
 msgid "Changes"
 msgstr "மாற்றங்கள்"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:284
+#: ../client/pk-console.c:283
 msgid "State"
 msgstr "நிலை"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:288
 msgid "Issued"
 msgstr "வழங்கப்பட்டது"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:294
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:293 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "மேம்படுத்தப்பட்டது"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:312
+#: ../client/pk-console.c:311
 msgid "Enabled"
 msgstr "செயல்படுத்தப்பட்டது"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:314
 msgid "Disabled"
 msgstr "செயல்நீக்கப்பட்டது"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:337
+#: ../client/pk-console.c:336
 msgid "System restart required by:"
 msgstr "கணினிக்கு மறுதுவக்கம் தேவைப்படுகிறது:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:339
 msgid "Session restart required:"
 msgstr "அமர்வுக்கு மறுதுவக்கம் தேவைப்படுகிறது:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:342
 msgid "System restart (security) required by:"
 msgstr "கணினிக்கு மறுதுவக்கம் (பாதுகாப்பு) தேவைப்படுகிறது:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:346
+#: ../client/pk-console.c:345
 msgid "Session restart (security) required:"
 msgstr "அமர்வுக்கு மறுதுவக்கம் (பாதுகாப்பு) தேவைப்படுகிறது:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:349
+#: ../client/pk-console.c:348
 msgid "Application restart required by:"
 msgstr "பயன்பாடிற்கு மறுதுவக்கம் தேவைப்படுகிறது:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:365
 msgid "Package description"
 msgstr "தொகுப்பு விளக்கம்"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:383
 msgid "Message:"
 msgstr "செய்தி:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:398
+#: ../client/pk-console.c:397
 msgid "No files"
 msgstr "கோப்புகள் இல்லை"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:403
+#: ../client/pk-console.c:402
 msgid "Package files"
 msgstr "தொகுப்பு கோப்புகள்"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:475
 msgid "Fatal error"
 msgstr "உட்புற பிழை"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:488
 msgid "Transaction failed with no error"
 msgstr "பரிமாற்றம் பிழை இல்லாமல் தோல்வியுற்றது"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:493
 msgid "The transaction failed"
 msgstr " பரிமாற்றம் செயல்படவில்லை"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:567
 msgid "Please restart the computer to complete the update."
 msgstr "கணினியை மீண்டும் துவக்கி மேம்படுத்துதலை முடிக்கவும்."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:570
 msgid "Please logout and login to complete the update."
 msgstr "வெளியேறிவிட்டு மற்றும் மேம்படுத்துதலை முடிக்க உள்நுழையவும்."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:573
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
 msgstr "முக்கியமான மேம்படுத்தல்களை நிறுவ கணினியை மீண்டும் துவக்கி மேம்படுத்துதலை முடிக்கவும்."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:576
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -307,19 +309,19 @@ msgstr ""
 "முடிக்க உள்நுழையவும்."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:597
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "இந்த கருவி இருக்கும் தொகுப்பை தேட முடியவில்லை: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:625
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "இந்த கருவி நிறுவப்பட்ட தொகுப்பை தேட முடியவில்லை: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:653 ../client/pk-console.c:681
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "இந்த கருவி தொகுப்பை தேட முடியவில்லை: %s"
@@ -328,170 +330,170 @@ msgstr "இந்த கருவி தொகுப்பை தேட முà®
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:709 ../client/pk-console.c:737
+#: ../client/pk-console.c:765 ../client/pk-console.c:793
+#: ../client/pk-console.c:821
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "இந்த கருவி அனைத்து தொகுப்புகளையும் தேட முடியவில்லை: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:850
 msgid "The daemon crashed mid-transaction!"
 msgstr "மத்திய பரிமாற்றத்தின் போது டோமோன் நொறுக்கப்பட்டது!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:884
 msgid "PackageKit Console Interface"
 msgstr "PackageKit பணியக முகப்பு"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:886
 msgid "Subcommands:"
 msgstr "துணைக்கட்டளைகள்:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:965
 msgid "Failed to get the time since this action was last completed"
 msgstr "இந்த செயல் கடைசியாக முடிவடையும் வரை நேரத்தை பெற்றிருப்பதில் தோல்வி"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1000 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:500
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "கூடுதல் பிழைதிருத்த தகவலைக் காட்டு"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1003 ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "நிகழ்ச்சி பதிப்பு மற்றும் வெளியேறுவதைக் காட்டு"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1006
 msgid "Set the filter, e.g. installed"
 msgstr "வடோப்பினை"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1009
 msgid "Exit without waiting for actions to complete"
 msgstr "செயல் முடிவடை வரை காத்திருக்காமல் வெளியேறு"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1034
 msgid "Failed to contact PackageKit"
 msgstr "PackageKit தொடர்பு கொள்ள முடியவில்லை்வி."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1086
 msgid "The filter specified was invalid"
 msgstr "வடிப்பி குறிப்பிடுவது தவறானது"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1105
 msgid "A search type is required, e.g. name"
 msgstr "ஒரு தேடும் வகை தேவைப்படுகிறது, எ.கா. பெயர்"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1112 ../client/pk-console.c:1124
+#: ../client/pk-console.c:1136 ../client/pk-console.c:1148
 msgid "A search term is required"
 msgstr "ஒரு தேடும் சொல் தேவைப்படுகிறது"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1158
 msgid "Invalid search type"
 msgstr "தவறான தேடும் வகை"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1164
 msgid "A package name to install is required"
 msgstr "தொகுப்பு பெயர் நிறுவ தேவைப்படுகிறது"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1173
 msgid "A filename to install is required"
 msgstr "நிறுவ ஒரு கோப்புபெயர் தேவைப்படுகிறது"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1185
 msgid "A type, key_id and package_id are required"
 msgstr "ஒரு வகை, விசை_ஐடி மற்றும் தொகுப்பு_ஐடி தேவைப்படுகிறது"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1196
 msgid "A package name to remove is required"
 msgstr "நீக்குவதற்கு ஒரு தொகுப்பு பெயர் தேவைப்படுகிறது"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1205
 msgid "A destination directory and the package names to download are required"
 msgstr "ஒரு இலக்கு அடைவு மற்றும் தொகுப்பு பெயர்கள் பதிவிறக்க தேவைப்படுகிறது"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1212
 msgid "Directory not found"
 msgstr "அடைவு காணப்படவில்லை"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1221
 msgid "A licence identifier (eula-id) is required"
 msgstr "ஒரு உரிமம் எடுத்துகாட்டுபவர் (eula-id) தேவைப்படுகிறது"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1232
 msgid "A transaction identifier (tid) is required"
 msgstr "பரிமாற்ற கண்டுபிடிப்பாளர் (tid) தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1253
 msgid "A package name to resolve is required"
 msgstr "தொகுப்பு பெயர் மறுதீர்வுக்கு தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1264 ../client/pk-console.c:1275
 msgid "A repository name is required"
 msgstr "நம்பகமான ஒரு பெயர் தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1286
 msgid "A repo name, parameter and value are required"
 msgstr "ஒரு ரெபோ பெநர், அளவுரு மற்றும் மதிப்பு தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1303
 msgid "An action, e.g. 'update-system' is required"
 msgstr "செயலுக்கு, எ.கா. 'மேம்படுத்தப்பட்ட கணினி' தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1310
 msgid "A correct role is required"
 msgstr "ஒரு சரியான திருப்பம் தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1320 ../client/pk-console.c:1335
+#: ../client/pk-console.c:1344 ../client/pk-console.c:1364
+#: ../client/pk-console.c:1373 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "ஒரு தொகுப்பு பெயர் தேவைப்படுகிறது"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1353
 msgid "A package provide string is required"
 msgstr "ஒரு தொகுப்பால் வழங்கப்படும் சரம் தேவைப்படுகிறது"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1433
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr " '%s' விருப்பம் துணைபுரியவில்லை"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1443
 msgid "Command failed"
 msgstr "கட்டளை தோல்வியுற்றது"
 
@@ -601,16 +603,12 @@ msgstr "சேவை தொகுப்பு '%s'ஐ உருவாக்கà®
 msgid "Failed to create '%s': %s"
 msgstr "'%s' உருவாக்குவதில் தோல்வி: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "பரிமாற்ற பட்டியலை பெற முடியவில்லை"
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "டீமான் நிலையை பெற முடியவில்லை"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "PackageKit திரை"
 
@@ -763,189 +761,189 @@ msgid "Starting install"
 msgstr "நிறுவலை துவக்குகிறது"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:402
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:406
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "தொகுப்பு %sஐ காண முடியவில்லை அல்லது ஏற்கனவே நிறுவப்பட்டது: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:503
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:507
 msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "எந்த தொகுப்புகளையும் நிறுவவில்லை, என்ன நிறுவ வேண்டும் என கணக்கிடுகிறது"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:506
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:510
 msgid "Do not install dependencies of the core packages"
 msgstr "கோர் தொகுப்புகளின் சார்புகளை நிறுவவில்லை"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:509
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:513
 msgid "Do not display information or progress"
 msgstr "விவரங்கள் அல்லது முன்னேற்றத்தை காட்ட வேண்டாம்"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:524
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:528
 msgid "PackageKit Debuginfo Installer"
 msgstr "PackageKit Debuginfo நிறுவி"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:536
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "பிழை: நிறுவ தொகுப்பு பெயர்களை குறிப்பிடவும்"
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:568
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:572
 #, c-format
 msgid "Getting sources list"
 msgstr "மூலங்களின் பட்டியல் பெறப்படுகிறது"
 
 #. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:578
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:653
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:781
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:892
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:582
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:741
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
 msgid "FAILED."
 msgstr "FAILED."
 
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:593
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:633
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:668
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:752
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:796
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:863
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:907
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:597
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:637
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:672
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:756
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:867
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
 #, c-format
 msgid "OK."
 msgstr "சரி."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:596
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "%i செயல்படுத்தப்பட்டது மற்றும் %i செயல்நீக்கப்பட்ட மூலங்கள் காணப்பட்டது."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:603
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:607
 #, c-format
 msgid "Finding debugging sources"
 msgstr "பிழைத்திருத்த மூலங்களை தேடுகிறது"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:636
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "%i செயல்நீக்கப்பட்ட debuginfo repoகளை கண்டது."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:643
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:647
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "பிழைத்திருத்த மூலங்களை செயல்படுத்துகிறது"
 
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:671
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "செயல்நீக்கப்பட்ட %i பிழைத்திருத்த மூலங்கள்."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:678
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:682
 #, c-format
 msgid "Finding debugging packages"
 msgstr "பிழைத்திருத்த தொகுப்புகளை தேடுகிறது."
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:694
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "தொகுப்பு %sஐ காண முடியவில்லை: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:713
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:717
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "தொகுப்பு %sஐ காண முடியவில்லை: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:741
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:745
 #, c-format
 msgid "Found no packages to install."
 msgstr "நிறுவ தொகுப்புகள் எதுவும் காணப்படவில்லை."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:755
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
 #, c-format
 msgid "Found %i packages:"
 msgstr "%i தொகுப்புகள் காணப்பட்டது:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:771
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:775
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "இந்த தொகுப்புகளை சார்ந்துள்ள தொகுப்புகளை தேடுகிறது"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:784
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "சார்பு தொகுப்பை காண முடியவில்லை: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:804
 #, c-format
 msgid "Found %i extra packages."
 msgstr "%i கூடுதல் தொகுப்புகள் காணப்பட்டது."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:804
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
 #, c-format
 msgid "No extra packages required."
 msgstr "கூடுதல் தொகுப்புகள் எதுவும் தேவைப்படவில்லை"
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:813
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:817
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "நிறுவ %i தொகுப்புகள் காணப்பட்டது:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:826
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "கணக்கீடு முறைமையில் தொகுப்புகள் நிறுவப்படவில்லை"
 
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:838
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "நிறுவப்பட்ட தொகுப்புகள்"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:851
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:855
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "தொகுப்புகளை நிறுவ முடியவில்லை: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:883
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "முன்பு செயல்படுத்தப்பட்ட மூலங்களை செயல்நீக்குகிறது"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:895
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "பிழைத்திருத்த மூலங்களை செயல்நீக்க முடியவில்லை: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:910
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "செயல்நீக்கப்பட்ட %i பிழைத்திருத்த மூலங்கள்."
@@ -1048,196 +1046,462 @@ msgstr "PackageKit தொகுப்பு பட்டியல்"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit சேவை தொகுப்பு"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "1 லிருந்து %i வரை எண்னை உள்ளீடவும் : "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "ஒன்றுக்கு மேற்பட்ட தொகுப்புகள் பொருந்துகிறது:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "சரியான தொகுப்பினை தேர்ந்தெடுக்கவும்: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "தெரியாத நிலை"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "துவக்குகிறது"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "வரிசைக்கு காத்திருக்கிறது"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "இயங்குகிறது"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "வினாயிடுகிறது"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "தகவலை பெறுகிறது"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "தொகுப்புகளை நீக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "தொகுப்புகளை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "மென்பொருள் பட்டியலை புதுப்பிக்கிறது"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "மேம்படுத்தல்களை நிறுவுகிறது"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "தொகுப்புகளை துடைக்கிறது"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "தொகுப்புகளை நீக்குகிறது"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "சார்புகளை தீர்க்கிறது"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "கையொப்பத்தை சரிபார்க்கிறது"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "பின்னால்"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "மாற்றங்களை சோதிக்கிறது"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "மாற்றங்களை சமர்ப்பிக்கிறது"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "தரவுக்கு விண்ணப்பிக்கிறது"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "முடிந்தது"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "ரத்து செய்கிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "தொகுபதிவக தகவலை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "தொகுப்புகளின் பட்டியலை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "கோப்பு பட்டியல்களை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "தொகுப்புகளின் மாற்றங்களை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "குழுக்களை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "மேம்படுத்தல் தகவலை பதிவிறக்குகிறது"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "கோப்புகளை மறுபேக் செய்கிறது"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "கேஷை ஏற்றுகிறது"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "பயன்பாடுகளை ஸ்கேன் செய்கிறது"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "தொகுப்புகளின் பட்டியலை உருவாக்குகிறது"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "தொகுப்பு மேலாளர் பூட்டுக்கு காத்திருக்கிறது"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "அங்கீகாரத்திற்கு காத்திருக்கிறது"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "இயங்கும் பயன்பாடுகளை மேம்படுத்துகிறது"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "பயனிலுள்ள பயன்பாடுகளை சரிபார்க்கிறது"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "பயனிலுள்ள நூலகங்களை சரிபார்க்கிறது"
 
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
+msgid "Trivial"
+msgstr "சாதாரணமானது"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
+msgid "Normal"
+msgstr "இயல்பான"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
+msgid "Important"
+msgstr "முக்கியமானது"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
+msgid "Security"
+msgstr "பாதுகாப்பு"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
+msgid "Bug fix "
+msgstr "பிழைத்திருத்தம்"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
+msgid "Enhancement"
+msgstr "மேம்படுத்தல்"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
+msgid "Blocked"
+msgstr "தடுக்கப்பட்டது"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
+msgid "Installed"
+msgstr "நிறுவப்பட்டது"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
+msgid "Available"
+msgstr "இருப்பவை"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
+msgid "Downloading"
+msgstr "பதிவிறக்குகிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
+msgid "Updating"
+msgstr "மேம்படுத்துகிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
+msgid "Installing"
+msgstr "நிறுவுகிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
+msgid "Removing"
+msgstr "நீக்குகிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
+msgid "Cleaning up"
+msgstr "துடைக்கிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
+msgid "Obsoleting"
+msgstr "நீக்குகிறது"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
+msgid "Reinstalling"
+msgstr "மீண்டும் நிநிறுவுகிற.."
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
+msgid "Downloaded"
+msgstr "பதிவிறக்கப்பட்டது"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
+msgid "Removed"
+msgstr "நீக்கப்பட்டது"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
+msgid "Cleaned up"
+msgstr "துடைக்கப்பட்டது"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
+msgid "Obsoleted"
+msgstr "நீக்கப்பட்டது"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
+msgid "Reinstalled"
+msgstr "மறு நிறுவப்பட்டது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "தெரியாத பங்கு வகை"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "சார்புகளை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "மேம்படுத்தல் விவரங்களை பெறப்படுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "விவரங்களை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "தேவைகளை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "மேம்படுத்தல்களை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "விவரங்களின் படி தேடுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "கோப்பால் தேடுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "குழுக்களை தேடுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "பெயரால் தேடுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "கோப்புகளை நிறுவுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "கேஷை புதுப்பிக்கிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "தொகுப்புகளை மேம்படுத்துகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "கணினியை மேம்படுத்துகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "ரத்து செய்கிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "தொகுபதிவகங்களை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "தொகுபதிவகத்தை செயல்படுத்துகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "தரவை அமைக்கிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "தீர்க்கிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "கோப்பு பட்டியலை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "கொடுக்கப்பட்டவற்றை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "கையொப்பத்தை நிறுவுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "தொகுப்புகளை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "EULAவை ஏற்கிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "மேம்படுத்தல்களை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "வகைகளை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "பரிமாற்றங்களை பெறுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "நிறுவலை கணக்கிடுகிறது"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "கணக்கிடுதலை நீக்கு"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "மேம்படுத்தல் கணக்கிடுகிறது"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1615,43 +1879,43 @@ msgstr "கணினி பஸ்ஸுடன் இணைக்க முடி
 msgid "Error trying to start:"
 msgstr "துவக்க முயற்சிப்பதில் பிழை:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr "பிழைத்திருத்த தொகுப்புகளை நிறுவ, கூடுதல் மூலங்களை செயல்படுத்த வேண்டும்"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "இந்த மென்பொருள் ஒரு நம்பப்பட்ட மூலத்திலிருந்து இல்லை."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr "இதை பாதுகாக்க நீங்கள் ஏதாவது செய்யும் வரை இந்த தொகுப்பை மேம்படுத்த முடியாது."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr "இதை பாதுகாக்க நீங்கள் ஏதாவது செய்யும் வரை இந்த தொகுப்பை மேம்படுத்த முடியாது."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr "இதை பாதுகாக்க நீங்கள் ஏதாவது செய்யும் வரை இந்த தொகுப்பை நிறுவ முடியாது."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr "இதை பாதுகாக்க நீங்கள் ஏதாவது செய்யும் வரை இந்த தொகுப்புகளை நிறுவ முடியாது."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr "முறையற்ற மென்பொருள் உங்கள் கணினியை சேதப்படுத்தலாம் அல்லது மற்ற கெடுதலைச் செய்யலாம்."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "நிறைய தொகுப்புகள்"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:334
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "நம்பக்கூடிய மட்டும்"
 
commit 35998eb0266a695657956baa5681f8011ff84802
Author: swkothar <swkothar at fedoraproject.org>
Date:   Fri Sep 18 06:23:32 2009 +0000

    Sending translation for Gujarati

diff --git a/po/gu.po b/po/gu.po
index 7e570ac..641c33d 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -1,4 +1,4 @@
-# translation of PackageKit-Update.po to Gujarati
+# translation of Packagekit.po to Gujarati
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 #
@@ -6,10 +6,10 @@
 # Sweta Kothari <swkothar at redhat.com>, 2009.
 msgid ""
 msgstr ""
-"Project-Id-Version: PackageKit-Update\n"
+"Project-Id-Version: Packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-11 02:28+0000\n"
-"PO-Revision-Date: 2009-09-11 15:06+0530\n"
+"POT-Creation-Date: 2009-09-18 01:28+0000\n"
+"PO-Revision-Date: 2009-09-18 11:52+0530\n"
 "Last-Translator: Sweta Kothari <swkothar at redhat.com>\n"
 "Language-Team: Gujarati\n"
 "MIME-Version: 1.0\n"
@@ -21,115 +21,115 @@ msgstr ""
 "\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:143
+#: ../client/pk-console.c:142
 msgid "Transaction"
 msgstr "પરિવહન"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:145
+#: ../client/pk-console.c:144
 msgid "System time"
 msgstr "સિસ્ટમ સમય"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "Succeeded"
 msgstr "સફળ થયેલ"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "True"
 msgstr "True"
 
-#: ../client/pk-console.c:147
+#: ../client/pk-console.c:146
 msgid "False"
 msgstr "False"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
+#: ../client/pk-console.c:148 ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "ભૂમિકા"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "Duration"
 msgstr "ગાળો"
 
-#: ../client/pk-console.c:154
+#: ../client/pk-console.c:153
 msgid "(seconds)"
 msgstr "(સકંડો)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
+#: ../client/pk-console.c:157 ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "આદેશ વાક્ય"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:160
+#: ../client/pk-console.c:159
 msgid "User ID"
 msgstr "વપરાશકર્તા ID"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:167
+#: ../client/pk-console.c:166
 msgid "Username"
 msgstr "વપરાશકર્તાનામ"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:171
+#: ../client/pk-console.c:170
 msgid "Real name"
 msgstr "સાચુ નામ"
 
-#: ../client/pk-console.c:179
+#: ../client/pk-console.c:178
 msgid "Affected packages:"
 msgstr "અસર થયેલ પેકેજો:"
 
-#: ../client/pk-console.c:181
+#: ../client/pk-console.c:180
 msgid "Affected packages: None"
 msgstr "અસર થયેલ પેકેજો: કંઇ નહિં"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:201
+#: ../client/pk-console.c:200
 msgid "Distribution"
 msgstr "વિતરણ"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:203
+#: ../client/pk-console.c:202
 msgid "Type"
 msgstr "પ્રકાર"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:205 ../client/pk-console.c:226
+#: ../client/pk-console.c:204 ../client/pk-console.c:225
 msgid "Summary"
 msgstr "સારાંશ"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:215
+#: ../client/pk-console.c:214
 msgid "Category"
 msgstr "વર્ગ"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:217
+#: ../client/pk-console.c:216
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:220
+#: ../client/pk-console.c:219
 msgid "Parent"
 msgstr "પિતૃ"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:223
+#: ../client/pk-console.c:222
 msgid "Name"
 msgstr "નામ"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:229
+#: ../client/pk-console.c:228
 msgid "Icon"
 msgstr "ચિહ્ન"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:243
+#: ../client/pk-console.c:242
 msgid "Details about the update:"
 msgstr "સુધારા વિશે વિગતો:"
 
@@ -137,153 +137,153 @@ msgstr "સુધારા વિશે વિગતો:"
 #. TRANSLATORS: the package that is not signed by a known key
 #. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../client/pk-console.c:248 ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "પેકેજ"
 msgstr[1] "પેકેજો"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:251
 msgid "Updates"
 msgstr "સુધારો"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:256
+#: ../client/pk-console.c:255
 msgid "Obsoletes"
 msgstr "અપ્રચલિત"
 
 #. TRANSLATORS: details about the update, the vendor URLs
 #. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
-#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
+#: ../client/pk-console.c:259 ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "વિક્રેતા"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:264
+#: ../client/pk-console.c:263
 msgid "Bugzilla"
 msgstr "બગઝીલા"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:267
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:272
+#: ../client/pk-console.c:271
 msgid "Restart"
 msgstr "પુન:શરૂ કરો"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:276
+#: ../client/pk-console.c:275
 msgid "Update text"
 msgstr "લખાણને સુધારો"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:280
+#: ../client/pk-console.c:279
 msgid "Changes"
 msgstr "બદલાવો"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:284
+#: ../client/pk-console.c:283
 msgid "State"
 msgstr "સ્થિતિ"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:289
+#: ../client/pk-console.c:288
 msgid "Issued"
 msgstr "અદા કરેલ"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:470
+#: ../client/pk-console.c:293 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "સુધારેલ"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:312
+#: ../client/pk-console.c:311
 msgid "Enabled"
 msgstr "સક્રિય થયેલ છે"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:315
+#: ../client/pk-console.c:314
 msgid "Disabled"
 msgstr "નિષ્ક્રિય થયેલ"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:337
+#: ../client/pk-console.c:336
 msgid "System restart required by:"
 msgstr "સિસ્ટમ જરૂરિયાત પ્રમાણે પુન:શરૂ થાય છે:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:339
 msgid "Session restart required:"
 msgstr "સત્ર પુન:શરૂ કરવુ જરૂરી:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:342
 msgid "System restart (security) required by:"
 msgstr "સિસ્ટમ જરૂરિયાત પ્રમાણે પુન:શરૂ (સુરક્ષા) થાય છે:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:346
+#: ../client/pk-console.c:345
 msgid "Session restart (security) required:"
 msgstr "સત્ર પુન:શરૂ (સુરક્ષા)કરવુ જરૂરી:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:349
+#: ../client/pk-console.c:348
 msgid "Application restart required by:"
 msgstr "કાર્યક્રમ એ જરૂરિયાત પ્રમાણે પુન:શરૂ થાય છે:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:366
+#: ../client/pk-console.c:365
 msgid "Package description"
 msgstr "પેકેજ વર્ણન"
 
 #. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:383
 msgid "Message:"
 msgstr "સંદેશ:"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:398
+#: ../client/pk-console.c:397
 msgid "No files"
 msgstr "કોઈ ફાઈલો નથી"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:403
+#: ../client/pk-console.c:402
 msgid "Package files"
 msgstr "પેકેજ ફાઈલો"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:475
 msgid "Fatal error"
 msgstr "ફેટલ ભૂલ"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:488
 msgid "Transaction failed with no error"
 msgstr "પરિવહન નિષ્ફળ ભૂલ વગર"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:493
 msgid "The transaction failed"
 msgstr "પરિવહન નિષ્ફળ"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:567
 msgid "Please restart the computer to complete the update."
 msgstr "સુધારો સમાપ્ત કરવા માટે મહેરબાની કરીને કમ્પ્યૂટર પુનઃશરૂ કરો."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:570
 msgid "Please logout and login to complete the update."
 msgstr "સુધારો સમાપ્ત કરવા માટે મહેરબાની કરીને બહાર નીકળો અને પછી ફરી પ્રવેશ કરો."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:573
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -292,7 +292,7 @@ msgstr ""
 "સ્થાપિત કરી દેવામાં આવ્યા છે."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:576
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -301,19 +301,19 @@ msgstr ""
 "કરી દેવામાં આવ્યા છે."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:597
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "આ સાધન ઉપલ્બધ પેકેજ ને શોધી શક્યુ નહિં: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:625
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "આ સાધન સ્થાપિત થયેલ પેકેજને શોધી શક્યુ નહિં: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:653 ../client/pk-console.c:681
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "આ સાધન પેકેજ ને શોધી શક્યુ નહિં: %s"
@@ -322,37 +322,37 @@ msgstr "આ સાધન પેકેજ ને શોધી શક્યુ ન
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:709 ../client/pk-console.c:737
+#: ../client/pk-console.c:765 ../client/pk-console.c:793
+#: ../client/pk-console.c:821
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "આ સાધન બધા પેકેજોને શોધી શક્યુ નહિં: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:850
 msgid "The daemon crashed mid-transaction!"
 msgstr "ડિમન મધ્ય-પરિવહન દરમ્યાન ભાંગી પડ્યું!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:884
 msgid "PackageKit Console Interface"
 msgstr "PackageKit કન્સોલ ઈન્ટરફેસ"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:886
 msgid "Subcommands:"
 msgstr "ઉપઆદેશો:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:965
 msgid "Failed to get the time since this action was last completed"
 msgstr "આ ક્રિયા છેલ્લી સમાપ્ત થયેલ હતી ત્યાં સુધી સમયને મેળવવાનું નિષ્ફળ"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1000 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
@@ -360,132 +360,132 @@ msgid "Show extra debugging information"
 msgstr "વધારાની ડિબગીંગ જાણકારી બતાવો"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1003 ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "કાર્યક્રમ આવૃત્તિ બતાવો અને બહાર નીકળો"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1006
 msgid "Set the filter, e.g. installed"
 msgstr "ગાળક સુયોજીત કરો, દા.ત. સ્થાપિત"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1009
 msgid "Exit without waiting for actions to complete"
 msgstr "ક્રિયાઓ સમાપ્ત થવાની રાહ જોયા વિના બહાર નીકળો"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1034
 msgid "Failed to contact PackageKit"
 msgstr "PackageKit ને સંપર્ક કરવાનું નિષ્ફળ"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1086
 msgid "The filter specified was invalid"
 msgstr "સ્પષ્ટ થયેલ ફિલ્ટર અયોગ્ય હતુ"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1105
 msgid "A search type is required, e.g. name"
 msgstr "શોધ પ્રકારની જરૂરિયાત છે, દા.ત. નામ"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1112 ../client/pk-console.c:1124
+#: ../client/pk-console.c:1136 ../client/pk-console.c:1148
 msgid "A search term is required"
 msgstr "શોધ ટર્મ જરૂરી છે"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1158
 msgid "Invalid search type"
 msgstr "અયોગ્ય શોધ પ્રકાર"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1164
 msgid "A package name to install is required"
 msgstr "સ્થાપિત કરવા માટે પેકેજ નામ જરૂરી છે"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1173
 msgid "A filename to install is required"
 msgstr "સ્થાપન કરવા માટે થવા ફાઇલનામ જરૂરી છે"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1185
 msgid "A type, key_id and package_id are required"
 msgstr "પ્રકાર, key_id અને package_id જરૂરી છે"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1196
 msgid "A package name to remove is required"
 msgstr "દૂર કરવા માટે પેકેજ નામ જરૂરી છે"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1205
 msgid "A destination directory and the package names to download are required"
 msgstr "અંતિમ મુકામ ડિરેક્ટરી અને પછી પેકેજ નામો ડાઉનલોડ કરવા માટે જરૂરી છે"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1212
 msgid "Directory not found"
 msgstr "ડિરેક્ટરી મળી નહિં"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1221
 msgid "A licence identifier (eula-id) is required"
 msgstr "લાઈસન્સ ઓળખનાર (eula-id) જરૂરી છે"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1232
 msgid "A transaction identifier (tid) is required"
 msgstr "પરિવહન ઓળખનાર (tid) જરૂરી છે"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1253
 msgid "A package name to resolve is required"
 msgstr "સુધારવા માટે પેકેજ નામ જરૂરી છે"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1264 ../client/pk-console.c:1275
 msgid "A repository name is required"
 msgstr "રીપોઝીટરી નામ જરૂરી છે"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1286
 msgid "A repo name, parameter and value are required"
 msgstr "રીપો નામ, પરિમાણ અને કિંમતની જરૂર છે"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1303
 msgid "An action, e.g. 'update-system' is required"
 msgstr "ક્રિયા, દા.ત. 'update-system જરૂરી છે"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1310
 msgid "A correct role is required"
 msgstr "સાચી ભૂમિકા જરૂરી છે"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1320 ../client/pk-console.c:1335
+#: ../client/pk-console.c:1344 ../client/pk-console.c:1364
+#: ../client/pk-console.c:1373 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "પેકેજ નામ જરૂરી છે"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1353
 msgid "A package provide string is required"
 msgstr "પેકેજ શબ્દમાળાની પૂરી પાડે છે તેની જરૂર છે"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1433
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "વિકલ્પ '%s' આધારભૂત નથી"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1443
 msgid "Command failed"
 msgstr "આદેશ નિષ્ફળ"
 
@@ -595,16 +595,12 @@ msgstr "સેવા પેક બનાવાયું '%s'"
 msgid "Failed to create '%s': %s"
 msgstr "'%s' બનાવવામાં નિષ્ફળ: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "પરિવહન યાદી મેળવવામાં નિષ્ફળ"
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "ડિમન સ્થિતિ મેળવવામાં નિષ્ફળ"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "PackageKit મોનીટર"
 
@@ -915,7 +911,7 @@ msgstr "simulate સ્થિતિમાં પેકેજોને સ્થà
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "પેકેજોને સ્થાપિત કરી રહ્યા છે"
@@ -1042,303 +1038,462 @@ msgstr "PackageKit પેકેજ યાદી"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit સેવા પેક"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "મહેરબાની કરીને ૧ થી %i સુધીનો નંબર દાખલ કરો: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "એક પેકેજ કરતાં વધુ જોડણીઓ:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "મહેરબાની કરીને યોગ્ય પેકેજ પસંદ કરો: "
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "અજ્ઞાત સ્થિતિ"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "શરૂ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "કતારમાં રાહ જોઇ રહ્યા છે"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "ચાલી રહ્યુ છે"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "પ્રશ્ર્ન કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "જાણકારીને મેળવી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "પેકેજોને દૂર કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "પેકેજો ડાઉનલોડ કરી રહ્યા છીએ"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "સોફ્ટવેર યાદીને તાજી કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "સુધારાઓને સ્થાપિત કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "પેકેજોને સાફ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "પેકેજો ને અપ્રચલિત કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "આધારભૂતપણાઓને સુધારી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "હસ્તાક્ષરોને ચકાસી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "પાછુ લાવી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "બદલાવોને ચકાસી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "બદલાવોને મોકલી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "માહિતીની માંગણી કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "સમાપ્ત"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "રદ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "રિપોઝિટરીની જાણકારીને ડાઉનલોડ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "પેકેજોની યાદીને લોડ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "ફાઇલ યાદીઓને ડાઉનલોડ કરી રહ્યા છીએ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "બદલાવોની યાદીને લોડ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "જૂથો ડાઉનલોડ કરી રહ્યા છીએ"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "સુધારા જાણકારીને ડાઉનલોડ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "ફાઇલોનું પુન:પેકેજ કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "કેશ ડાઉનલોડ કરી રહ્યા છીએ"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "કાર્યક્રમોનું સ્કેન કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "પેકેજ યાદીઓને ઉત્પન્ન કરી રહ્યા છે"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "પેકેજ વ્યવસ્થાપક તાળા માટે રાહ જોઇ રહ્યા છે"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "સત્તાધિકરણ માટે રાહ જોઇ રહ્યા છે"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "ચાલતા કાર્યક્રમોને સુધારી રહ્યા છે"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "વપરાશમાં કાર્યક્રમોને ચકાસી રહ્યા છે"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "વપરાશમાં લાઇબ્રેરીઓને ચકાસી રહ્યા છે"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:372
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
 msgid "Trivial"
 msgstr "Trivial"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:376
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
 msgid "Normal"
 msgstr "સામાન્ય"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:380
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
 msgid "Important"
 msgstr "મહત્વનું"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:384
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
 msgid "Security"
 msgstr "સુરક્ષા"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
 msgid "Bug fix "
 msgstr "ભૂલ સુધારો"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:392
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
 msgid "Enhancement"
 msgstr "વધારો"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:396
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
 msgid "Blocked"
 msgstr "બ્લોક થયેલ"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
-#: ../lib/packagekit-glib2/pk-console-shared.c:474
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
 msgid "Installed"
 msgstr "સ્થાપિત થયેલ"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:406
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
 msgid "Available"
 msgstr "ઉપલ્બધ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:424
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
 msgid "Downloading"
 msgstr "ડાઉનલોડ કરી રહ્યા છીએ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:428
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
 msgid "Updating"
 msgstr "સુધારી રહ્યા છે"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:432
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "સ્થાપિત કરી રહ્યા છીએ"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:436
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "દૂર કરી રહ્યા છે"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:440
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
 msgid "Cleaning up"
 msgstr "સાફ કરી રહ્યા છે"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:444
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
 msgid "Obsoleting"
 msgstr "અપ્રચલિત કરી રહ્યા છે"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
 msgid "Reinstalling"
 msgstr "પુન:સ્થાપિત કરી રહ્યા છીએ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:466
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
 msgid "Downloaded"
 msgstr "ડાઉનલોડ થયેલ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:478
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
 msgid "Removed"
 msgstr "દૂર કરેલ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:482
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
 msgid "Cleaned up"
 msgstr "સાફ કરેલ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:486
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
 msgid "Obsoleted"
 msgstr "અપ્રચલિત થયેલ"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:490
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
 msgid "Reinstalled"
 msgstr "પુન:સ્થાપિત થયેલ"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "અજ્ઞાત ભૂમિકા પ્રકાર"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "આધારભૂતપણાઓને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "સુધારો વિગતો મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "વિગતો ને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "જરૂરિયાતો ને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "સુધારાઓને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "વિગતો દ્દારા શોધી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "ફાઇલ દ્દારા શોધી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "જૂથોને શોધી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "નામ દ્દારા શોધી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "ફાઇલોને સ્થાપિત કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "કેશ ને તાજુ કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "પેકેજોને સુધારી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "સિસ્ટમને સુધારી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "રદ કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "રિપોઝીટરીઓને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "રિપોઝિટરીને સક્રિય કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "માહિતીને સુયોજિત કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "સુધારી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "ફાઇલ યાદીને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "પૂરા પાડવા ને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "હસ્તાક્ષરોને સ્થાપિત કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "પેકેજો ને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "EULA ને સ્વીકારી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "સુધારોઓને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "વર્ગો ને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "પરિવહનને મેળવી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "સ્થાપનનની નકલ કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "દૂક કરવાની નકલ કરી રહ્યા છે"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "સુધારાઓની નકલ કરી રહ્યા છે"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1718,45 +1873,45 @@ msgstr "સિસ્ટમ બસ સાથે જોડાઈ શકતા નà
 msgid "Error trying to start:"
 msgstr "શરૂ કરવાનો પ્રયાસ કરવામાં ભૂલ:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr "ડિબગીંગ પેકેજોને સ્થાપિત કરવા માટે, બહારનાં સ્ત્રોતોને સક્રિય કરવાની જરૂર છે"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "વિશ્ર્વાસપાત્ર સ્ત્રોત માંથી સોફ્ટવેર નથી."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr "આ પેકેજમાં સુધારો નહિં નહિં તો તમે ચોક્કસ છો કે તે કરવા માટે સલામત છે."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr "આ પેકેજોમાં સુધારો કરો નહિં  નહિં તો તમે ચોક્કસ છો કે તે કરવા માટે સલામત છે."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr "આ પેકેજ ને સ્થાપિત કરો નહિં નહિં તો તમે ચોક્કસ છો કે તે કરવા માટે સલામત છે."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr ""
 "આ પેકેજોને સ્થાપિત કરવા માટ સ્થાપિત કરો નહિં નહિં તો તમે ચોક્કસ છો કે તે કરવા માટે સલામત "
 "છે."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr "દુષ્ટ સોફ્ટવેર તમારા સોફ્ટવેરને ખરાબ કરી શકે છે અથવા બીજા નુકશાનને કારણે."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "ઘણાબધા પેકેજો"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "માત્ર વિશ્ર્વાસપાત્ર"
 
commit a7a8a061c55ddf585b958669c052d9106a18aec7
Author: mvdz <mvdz at fedoraproject.org>
Date:   Thu Sep 17 16:22:23 2009 +0000

    Sending translation for Ukrainian

diff --git a/po/uk.po b/po/uk.po
index eaa0ffe..70e7cd8 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-11 14:30+0000\n"
-"PO-Revision-Date: 2009-09-11 17:46+0300\n"
+"POT-Creation-Date: 2009-09-17 11:26+0000\n"
+"PO-Revision-Date: 2009-09-17 16:45+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
 "Language-Team: Ukrainian <translation at linux.org.ua>\n"
 "MIME-Version: 1.0\n"
@@ -43,7 +43,7 @@ msgstr "Ні"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
+#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "Роль"
 
@@ -58,7 +58,7 @@ msgstr "(секунд)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
+#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "Командний рядок"
 
@@ -137,7 +137,7 @@ msgstr "Подробиці щодо оновлення:"
 #. TRANSLATORS: title, the names of the packages that the method is processing
 #: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Пакунок"
@@ -197,7 +197,7 @@ msgstr "Випущено"
 
 #. TRANSLATORS: details about the update, date the update was updated
 #. TRANSLATORS: The action of the package, in past tense
-#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:470
+#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Оновлено"
 
@@ -257,32 +257,32 @@ msgid "Package files"
 msgstr "Файли пакунка"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:476
 msgid "Fatal error"
 msgstr "Критична помилка"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:489
 msgid "Transaction failed with no error"
 msgstr "Спроба виконання операції зазнала невдачі, але помилок не було"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:494
 msgid "The transaction failed"
 msgstr "Спроба виконання операції зазнала невдачі"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:568
 msgid "Please restart the computer to complete the update."
 msgstr "Щоб завершити оновлення, перезавантажте систему."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:571
 msgid "Please logout and login to complete the update."
 msgstr "Щоб завершити оновлення, вийдіть з облікового запису і увійдіть знову."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:574
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -290,7 +290,7 @@ msgstr ""
 "перезавантажте систему, щоб завершити встановлення важливих оновлень безпеки."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:577
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -299,18 +299,19 @@ msgstr ""
 "запису і увійдіть до нього знову."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584, c-format
+#: ../client/pk-console.c:598
+#, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Програмі не вдалося знайти жодного доступного пакунка: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:626
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Програмі не вдалося знайти встановлений пакунок: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640 ../client/pk-console.c:668
+#: ../client/pk-console.c:654 ../client/pk-console.c:682
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Програмі не вдалося знайти пакунок: %s"
@@ -319,37 +320,37 @@ msgstr "Програмі не вдалося знайти пакунок: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696 ../client/pk-console.c:724
-#: ../client/pk-console.c:752 ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:710 ../client/pk-console.c:738
+#: ../client/pk-console.c:766 ../client/pk-console.c:794
+#: ../client/pk-console.c:822
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Програмі не вдалося знайти всі пакунки: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:832
+#: ../client/pk-console.c:851
 msgid "The daemon crashed mid-transaction!"
 msgstr "Аварійне завершення фонової служби під час операції!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:866
+#: ../client/pk-console.c:885
 msgid "PackageKit Console Interface"
 msgstr "Консольний інтерфейс PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:868
+#: ../client/pk-console.c:887
 msgid "Subcommands:"
 msgstr "Підкоманди:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:947
+#: ../client/pk-console.c:966
 msgid "Failed to get the time since this action was last completed"
 msgstr "Не вдалося визначити час, коли цю дію було виконано востаннє"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:282
+#: ../client/pk-console.c:1001 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
@@ -357,133 +358,133 @@ msgid "Show extra debugging information"
 msgstr "Показувати додаткові дані для усування вад"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
+#: ../client/pk-console.c:1004 ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "Показати версію програми і завершити роботу"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:988
+#: ../client/pk-console.c:1007
 msgid "Set the filter, e.g. installed"
 msgstr "Встановити фільтр, наприклад, встановлені"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:991
+#: ../client/pk-console.c:1010
 msgid "Exit without waiting for actions to complete"
 msgstr "Завершити роботу, не чекаючи на завершення дії"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1016
+#: ../client/pk-console.c:1035
 msgid "Failed to contact PackageKit"
 msgstr "Не вдалося зв’язатися з PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1068
+#: ../client/pk-console.c:1087
 msgid "The filter specified was invalid"
 msgstr "Вказано некоректний фільтр"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1087
+#: ../client/pk-console.c:1106
 msgid "A search type is required, e.g. name"
 msgstr "Тип пошуку, якщо такий потрібен, наприклад, назва"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
-#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
+#: ../client/pk-console.c:1113 ../client/pk-console.c:1125
+#: ../client/pk-console.c:1137 ../client/pk-console.c:1149
 msgid "A search term is required"
 msgstr "Потрібен ключ пошуку"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1140
+#: ../client/pk-console.c:1159
 msgid "Invalid search type"
 msgstr "Некоректний тип пошуку"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1165
 msgid "A package name to install is required"
 msgstr "Слід вказати назву пакунка, який слід встановити"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1174
 msgid "A filename to install is required"
 msgstr "Слід вказати назву файла, який слід встановити"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1167
+#: ../client/pk-console.c:1186
 msgid "A type, key_id and package_id are required"
 msgstr "Слід вказати тип, ідентифікатор ключа і ідентифікатор пакунка"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1178
+#: ../client/pk-console.c:1197
 msgid "A package name to remove is required"
 msgstr "Слід вказати назву пакунка, який потрібно вилучити"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1187
+#: ../client/pk-console.c:1206
 msgid "A destination directory and the package names to download are required"
 msgstr ""
 "Слід вказати каталог призначення і назви пакунків, які потрібно звантажити"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1194
+#: ../client/pk-console.c:1213
 msgid "Directory not found"
 msgstr "Каталог не знайдено"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1203
+#: ../client/pk-console.c:1222
 msgid "A licence identifier (eula-id) is required"
 msgstr "Слід вказати ідентифікатор ліцензії (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1214
+#: ../client/pk-console.c:1233
 msgid "A transaction identifier (tid) is required"
 msgstr "Слід вказати ідентифікатор операції (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1235
+#: ../client/pk-console.c:1254
 msgid "A package name to resolve is required"
 msgstr "Слід вказати назву пакунка для розв’язання конфлікту"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
+#: ../client/pk-console.c:1265 ../client/pk-console.c:1276
 msgid "A repository name is required"
 msgstr "Слід вказати назву сховища"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1268
+#: ../client/pk-console.c:1287
 msgid "A repo name, parameter and value are required"
 msgstr "Слід вказати назву сховища, параметр і значення"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1285
+#: ../client/pk-console.c:1304
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Слід вказати дію, наприклад «update-system»"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1292
+#: ../client/pk-console.c:1311
 msgid "A correct role is required"
 msgstr "Слід вказати належну роль"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
-#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
-#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
+#: ../client/pk-console.c:1321 ../client/pk-console.c:1336
+#: ../client/pk-console.c:1345 ../client/pk-console.c:1365
+#: ../client/pk-console.c:1374 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "Слід вказати назву пакунка"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1335
+#: ../client/pk-console.c:1354
 msgid "A package provide string is required"
 msgstr "Слід вказати рядок вмісту"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1415
+#: ../client/pk-console.c:1434
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Підтримки параметра «%s» не передбачено"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1425
+#: ../client/pk-console.c:1444
 msgid "Command failed"
 msgstr "Спроба виконання команди зазнала невдачі"
 
@@ -598,16 +599,12 @@ msgstr "Створено пакунок з обслуговування «%s»"
 msgid "Failed to create '%s': %s"
 msgstr "Не вдалося створити «%s»: %s"
 
-#: ../client/pk-monitor.c:204
-msgid "Failed to get transaction list"
-msgstr "Спроба отримання списку операцій завершилася невдало"
-
-#: ../client/pk-monitor.c:235
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "Спроба визначення стану фонової служби завершилася невдало"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:299
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "Монітор PackageKit"
 
@@ -920,7 +917,7 @@ msgstr "Не встановлювати пакунки у режимі імітÐ
 #. TRANSLATORS: we are now installing the debuginfo packages we found earlier
 #. TRANSLATORS: transaction state, installing packages
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
-#: ../lib/packagekit-glib2/pk-console-shared.c:246
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
 #, c-format
 msgid "Installing packages"
 msgstr "Встановлення пакунків"
@@ -1047,303 +1044,462 @@ msgstr "Список пакунків PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Пакунок з обслуговування PackageKit"
 
-#: ../lib/packagekit-glib2/pk-console-shared.c:53
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Будь ласка, введіть число від 1 до %i: "
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:153
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
 msgid "More than one package matches:"
 msgstr "З ключем пошуку збігається декілька пакунків:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../lib/packagekit-glib2/pk-console-shared.c:162
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
 msgid "Please choose the correct package: "
 msgstr "Будь ласка, оберіть належний пакунок:"
 
 #. TRANSLATORS: This is when the transaction status is not known
-#: ../lib/packagekit-glib2/pk-console-shared.c:214
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
 msgid "Unknown state"
 msgstr "Невідомий стан"
 
 #. TRANSLATORS: transaction state, the daemon is in the process of starting
-#: ../lib/packagekit-glib2/pk-console-shared.c:218
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
 msgid "Starting"
 msgstr "Запуск"
 
 #. TRANSLATORS: transaction state, the transaction is waiting for another to complete
-#: ../lib/packagekit-glib2/pk-console-shared.c:222
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
 msgid "Waiting in queue"
 msgstr "Очікування у черзі"
 
 #. TRANSLATORS: transaction state, just started
-#: ../lib/packagekit-glib2/pk-console-shared.c:226
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
 msgid "Running"
 msgstr "Виконання"
 
 #. TRANSLATORS: transaction state, is querying data
-#: ../lib/packagekit-glib2/pk-console-shared.c:230
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
 msgid "Querying"
 msgstr "Виконання запиту"
 
 #. TRANSLATORS: transaction state, getting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:234
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
 msgid "Getting information"
 msgstr "Отримання інформації"
 
 #. TRANSLATORS: transaction state, removing packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:238
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
 msgid "Removing packages"
 msgstr "Вилучення пакунків"
 
 #. TRANSLATORS: transaction state, downloading package files
-#: ../lib/packagekit-glib2/pk-console-shared.c:242
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "Звантаження пакунків"
 
 #. TRANSLATORS: transaction state, refreshing internal lists
-#: ../lib/packagekit-glib2/pk-console-shared.c:250
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
 msgid "Refreshing software list"
 msgstr "Освіження списку програм"
 
 #. TRANSLATORS: transaction state, installing updates
-#: ../lib/packagekit-glib2/pk-console-shared.c:254
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
 msgid "Installing updates"
 msgstr "Встановлення оновлень"
 
 #. TRANSLATORS: transaction state, removing old packages, and cleaning config files
-#: ../lib/packagekit-glib2/pk-console-shared.c:258
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
 msgid "Cleaning up packages"
 msgstr "Вилучення зайвих пакунків"
 
 #. TRANSLATORS: transaction state, obsoleting old packages
-#: ../lib/packagekit-glib2/pk-console-shared.c:262
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
 msgid "Obsoleting packages"
 msgstr "Вилучення застарілих пакунків"
 
 #. TRANSLATORS: transaction state, checking the transaction before we do it
-#: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
 msgid "Resolving dependencies"
 msgstr "Розв’язання залежностей"
 
 #. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
-#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
 msgid "Checking signatures"
 msgstr "Перевірка підписів"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
-#: ../lib/packagekit-glib2/pk-console-shared.c:274
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "Повернення до попереднього"
 
 #. TRANSLATORS: transaction state, when we're doing a test transaction
-#: ../lib/packagekit-glib2/pk-console-shared.c:278
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
 msgid "Testing changes"
 msgstr "Випробування змін"
 
 #. TRANSLATORS: transaction state, when we're writing to the system package database
-#: ../lib/packagekit-glib2/pk-console-shared.c:282
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
 msgid "Committing changes"
 msgstr "Застосування змін"
 
 #. TRANSLATORS: transaction state, requesting data from a server
-#: ../lib/packagekit-glib2/pk-console-shared.c:286
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
 msgid "Requesting data"
 msgstr "Запит щодо даних"
 
 #. TRANSLATORS: transaction state, all done!
-#: ../lib/packagekit-glib2/pk-console-shared.c:290
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
 msgid "Finished"
 msgstr "Завершено"
 
 #. TRANSLATORS: transaction state, in the process of cancelling
-#: ../lib/packagekit-glib2/pk-console-shared.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
 msgid "Cancelling"
 msgstr "Скасування"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
 msgid "Downloading repository information"
 msgstr "Звантаження інформації про сховище"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:302
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
 msgid "Downloading list of packages"
 msgstr "Звантаження списку пакунків"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:306
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
 msgid "Downloading file lists"
 msgstr "Звантаження списків файлів"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:310
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
 msgid "Downloading lists of changes"
 msgstr "Звантаження списків змін"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:314
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
 msgid "Downloading groups"
 msgstr "Звантаження груп"
 
 #. TRANSLATORS: transaction state, downloading metadata
-#: ../lib/packagekit-glib2/pk-console-shared.c:318
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
 msgid "Downloading update information"
 msgstr "Звантаження інформації про оновлення"
 
 #. TRANSLATORS: transaction state, repackaging delta files
-#: ../lib/packagekit-glib2/pk-console-shared.c:322
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
 msgid "Repackaging files"
 msgstr "Перепакування файлів"
 
 #. TRANSLATORS: transaction state, loading databases
-#: ../lib/packagekit-glib2/pk-console-shared.c:326
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
 msgid "Loading cache"
 msgstr "Завантаження кешу"
 
 #. TRANSLATORS: transaction state, scanning for running processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:330
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
 msgid "Scanning applications"
 msgstr "Пошук програм"
 
 #. TRANSLATORS: transaction state, generating a list of packages installed on the system
-#: ../lib/packagekit-glib2/pk-console-shared.c:334
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
 msgid "Generating package lists"
 msgstr "Створення списків пакунків"
 
 #. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
-#: ../lib/packagekit-glib2/pk-console-shared.c:338
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
 msgid "Waiting for package manager lock"
 msgstr "Очікування на зняття блокування керування пакунками"
 
 #. TRANSLATORS: waiting for user to type in a password
-#: ../lib/packagekit-glib2/pk-console-shared.c:342
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
 msgid "Waiting for authentication"
 msgstr "Очікування на завершення розпізнавання"
 
 #. TRANSLATORS: we are updating the list of processes
-#: ../lib/packagekit-glib2/pk-console-shared.c:346
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
 msgid "Updating running applications"
 msgstr "Оновлення списку запущенний програм"
 
 #. TRANSLATORS: we are checking executable files currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:350
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
 msgid "Checking applications in use"
 msgstr "Виявлення програм, що використовуються"
 
 #. TRANSLATORS: we are checking for libraries currently in use
-#: ../lib/packagekit-glib2/pk-console-shared.c:354
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
 msgid "Checking libraries in use"
 msgstr "Виявлення бібліотек, що використовуються"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:372
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
 msgid "Trivial"
 msgstr "Незначне"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:376
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
 msgid "Normal"
 msgstr "Звичайне"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:380
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
 msgid "Important"
 msgstr "Важливе"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:384
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
 msgid "Security"
 msgstr "Безпека"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:388
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
 msgid "Bug fix "
 msgstr "Виправлення вад"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:392
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
 msgid "Enhancement"
 msgstr "Покращення"
 
 #. TRANSLATORS: The type of update
-#: ../lib/packagekit-glib2/pk-console-shared.c:396
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
 msgid "Blocked"
 msgstr "Заблоковане"
 
 #. TRANSLATORS: The state of a package
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:401
-#: ../lib/packagekit-glib2/pk-console-shared.c:474
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
 msgid "Installed"
 msgstr "Встановлене"
 
 #. TRANSLATORS: The state of a package, i.e. not installed
-#: ../lib/packagekit-glib2/pk-console-shared.c:406
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
 msgid "Available"
 msgstr "Доступний"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:424
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
 msgid "Downloading"
 msgstr "Звантаження"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:428
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
 msgid "Updating"
 msgstr "Оновлення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:432
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "Встановлення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:436
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "Вилучення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:440
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
 msgid "Cleaning up"
 msgstr "Очищення"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:444
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
 msgid "Obsoleting"
 msgstr "Робить застарілим"
 
 #. TRANSLATORS: The action of the package, in present tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:448
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
 msgid "Reinstalling"
 msgstr "Перевстановлення"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:466
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
 msgid "Downloaded"
 msgstr "Звантажено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:478
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
 msgid "Removed"
 msgstr "Вилучено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:482
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
 msgid "Cleaned up"
 msgstr "Очищено"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:486
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
 msgid "Obsoleted"
 msgstr "Став застарілим"
 
 #. TRANSLATORS: The action of the package, in past tense
-#: ../lib/packagekit-glib2/pk-console-shared.c:490
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
 msgid "Reinstalled"
 msgstr "Перевстановлено"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "Невідомий тип"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "Отримання залежностей"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "Отримання подробиць оновлення"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "Отримання подробиць"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "Отримання даних про вимоги"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "Отримання оновлень"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "Пошук за подробицями"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "Пошук за файлом"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "Пошук груп"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "Пошук за назвою"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "Встановлення файлів"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "Освіження кешу"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "Оновлення пакунків"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "Оновлення системи"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "Скасування"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "Отримання списку сховищ"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "Увімкнення сховища"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "Встановлення даних"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "Розв’язання"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "Отримання списку файлів"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "Отримання даних про вміст"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "Встановлення підпису"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "Отримання списку пакунків"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "Згода з EULA"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "Отримання оновлень"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "Отримання категорій"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "Отримання списку дій"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "Імітація встановлення"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "Імітація вилучення"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "Імітація оновлення"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1733,53 +1889,56 @@ msgstr "Не вдалося з’єднатися з системною шино
 msgid "Error trying to start:"
 msgstr "Помилка під час спроби запуску:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr ""
 "Для встановлення пакунків для усування вад слід увімкнути додаткові джерела "
 "програмного забезпечення"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168 ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171 ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "Програмне забезпечення надійшло з ненадійного джерела."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr ""
 "Не оновлюйте цей пакунок, якщо не певні, що таке оновлення є безпечним."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr "Не оновлюйте ці пакунки, якщо не певні, що таке оновлення є безпечним."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr ""
 "Не встановлюйте цей пакунок, якщо не певні, що таке встановлення є безпечним."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr ""
 "Не встановлюйте ці пакунки, якщо не певні, що таке встановлення є безпечним."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr ""
 "Зловмисне програмне забезпечення може пошкодити ваш комп’ютер або завдати "
 "інших неприємностей."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "Багато пакунків"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "Лише надійні"
 
+#~ msgid "Failed to get transaction list"
+#~ msgstr "Спроба отримання списку операцій завершилася невдало"
+
 #~ msgid "Percentage"
 #~ msgstr "Відсотки"
 
@@ -1863,9 +2022,6 @@ msgstr "Лише надійні"
 #~ msgid "No new packages need to be installed"
 #~ msgstr "У встановленні нових пакунків немає потреби"
 
-#~ msgid "Searching for package: "
-#~ msgstr "Пошук пакунка:"
-
 #~ msgid "not found."
 #~ msgstr "не знайдено."
 
commit e620432e6539e60959282d5c4265ca2740ae422e
Author: ruigo <ruigo at fedoraproject.org>
Date:   Thu Sep 17 16:03:33 2009 +0000

    Sending translation for Portuguese

diff --git a/po/pt.po b/po/pt.po
index 222d955..1809555 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-15 15:35+0000\n"
+"POT-Creation-Date: 2009-09-17 11:26+0000\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Rui Gouveia <rui.gouveia at globaltek.pt>\n"
 "Language-Team: pt <fedora-trans-pt at redhat.com>\n"
@@ -40,7 +40,7 @@ msgstr "Falso"
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
 #: ../client/pk-console.c:149
-#: ../src/pk-polkit-action-lookup.c:333
+#: ../src/pk-polkit-action-lookup.c:336
 msgid "Role"
 msgstr "Função"
 
@@ -56,7 +56,7 @@ msgstr "(segundos)"
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
 #: ../client/pk-console.c:158
-#: ../src/pk-polkit-action-lookup.c:347
+#: ../src/pk-polkit-action-lookup.c:350
 msgid "Command line"
 msgstr "Linha de comando"
 
@@ -137,7 +137,7 @@ msgstr "Detalhes acerca da actualização:"
 #: ../client/pk-console.c:249
 #: ../lib/packagekit-glib2/pk-task-text.c:105
 #: ../lib/packagekit-glib2/pk-task-text.c:172
-#: ../src/pk-polkit-action-lookup.c:358
+#: ../src/pk-polkit-action-lookup.c:361
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Pacote"
@@ -258,55 +258,55 @@ msgid "Package files"
 msgstr "Ficheiros do pacote"
 
 #. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
-#: ../client/pk-console.c:462
+#: ../client/pk-console.c:476
 msgid "Fatal error"
 msgstr "Erro fatal"
 
 #. TRANSLATORS: we failed, but there was no error set
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:489
 msgid "Transaction failed with no error"
 msgstr "A transacção falhou sem erro"
 
 #. TRANSLATORS: the transaction failed in a way we could not expect
-#: ../client/pk-console.c:480
+#: ../client/pk-console.c:494
 msgid "The transaction failed"
 msgstr "A transacção falhou"
 
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:554
+#: ../client/pk-console.c:568
 msgid "Please restart the computer to complete the update."
 msgstr "Por favor, reinicie o computador para completar a actualização."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:557
+#: ../client/pk-console.c:571
 msgid "Please logout and login to complete the update."
 msgstr "Por favor, termine e volte a iniciar a sessão para completar a actualização."
 
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:560
+#: ../client/pk-console.c:574
 msgid "Please restart the computer to complete the update as important security updates have been installed."
 msgstr "Por favor, reinicie o computador para completar a actualização, pois foram instaladas importantes actualizações de segurança."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:563
+#: ../client/pk-console.c:577
 msgid "Please logout and login to complete the update as important security updates have been installed."
 msgstr "Por favor, termine e volte a iniciar a sessão para completar a actualização, pois foram instaladas importantes actualizações de segurança."
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:584
+#: ../client/pk-console.c:598
 #, c-format
 msgid "This tool could not find any available package: %s"
 msgstr "Esta ferramenta não conseguiu encontrar nenhum pacote disponível: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:612
+#: ../client/pk-console.c:626
 #, c-format
 msgid "This tool could not find the installed package: %s"
 msgstr "Esta ferramenta não conseguiu encontrar o pacote instalado: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:640
-#: ../client/pk-console.c:668
+#: ../client/pk-console.c:654
+#: ../client/pk-console.c:682
 #, c-format
 msgid "This tool could not find the package: %s"
 msgstr "Esta ferramenta não conseguiu encontrar o pacote: %s"
@@ -315,40 +315,40 @@ msgstr "Esta ferramenta não conseguiu encontrar o pacote: %s"
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:696
-#: ../client/pk-console.c:724
-#: ../client/pk-console.c:752
-#: ../client/pk-console.c:780
-#: ../client/pk-console.c:808
+#: ../client/pk-console.c:710
+#: ../client/pk-console.c:738
+#: ../client/pk-console.c:766
+#: ../client/pk-console.c:794
+#: ../client/pk-console.c:822
 #, c-format
 msgid "This tool could not find all the packages: %s"
 msgstr "Esta ferramenta não conseguiu encontrar todos os pacotes: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:837
+#: ../client/pk-console.c:851
 msgid "The daemon crashed mid-transaction!"
 msgstr "O daemon morreu a meio de uma transacção!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:871
+#: ../client/pk-console.c:885
 msgid "PackageKit Console Interface"
 msgstr "Consola do PackaheKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:873
+#: ../client/pk-console.c:887
 msgid "Subcommands:"
 msgstr "Sub-comandos:"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:952
+#: ../client/pk-console.c:966
 msgid "Failed to get the time since this action was last completed"
 msgstr "Não foi possível obter a hora da última vez que esta acção foi concluída"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:987
+#: ../client/pk-console.c:1001
 #: ../client/pk-generate-pack.c:222
-#: ../client/pk-monitor.c:283
+#: ../client/pk-monitor.c:249
 #: ../contrib/command-not-found/pk-command-not-found.c:614
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293
@@ -357,139 +357,139 @@ msgid "Show extra debugging information"
 msgstr "Mostrar informação de depuração adicional"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:990
-#: ../client/pk-monitor.c:285
+#: ../client/pk-console.c:1004
+#: ../client/pk-monitor.c:251
 msgid "Show the program version and exit"
 msgstr "Mostrar a versão da aplicação e terminar"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:993
+#: ../client/pk-console.c:1007
 msgid "Set the filter, e.g. installed"
 msgstr "Configurar o filtro, exemplo, instalado"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:996
+#: ../client/pk-console.c:1010
 msgid "Exit without waiting for actions to complete"
 msgstr "Sair sem esperar que as acções completem"
 
 #. TRANSLATORS: we failed to contact the daemon
-#: ../client/pk-console.c:1021
+#: ../client/pk-console.c:1035
 msgid "Failed to contact PackageKit"
 msgstr "Falhou o contacto com o PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1073
+#: ../client/pk-console.c:1087
 msgid "The filter specified was invalid"
 msgstr "O filtro especificado era inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:1092
+#: ../client/pk-console.c:1106
 msgid "A search type is required, e.g. name"
 msgstr "Um tipo de pesquisa é necessário. Por exemplo, nome"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:1099
-#: ../client/pk-console.c:1111
-#: ../client/pk-console.c:1123
-#: ../client/pk-console.c:1135
+#: ../client/pk-console.c:1113
+#: ../client/pk-console.c:1125
+#: ../client/pk-console.c:1137
+#: ../client/pk-console.c:1149
 msgid "A search term is required"
 msgstr "Um termo de pesquisa é necessário"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:1145
+#: ../client/pk-console.c:1159
 msgid "Invalid search type"
 msgstr "Tipo de pesquisa inválida"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1151
+#: ../client/pk-console.c:1165
 msgid "A package name to install is required"
 msgstr "É necessário indicar um nome de pacote a instalar"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:1160
+#: ../client/pk-console.c:1174
 msgid "A filename to install is required"
 msgstr "É necessário um nome de ficheiro a instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1172
+#: ../client/pk-console.c:1186
 msgid "A type, key_id and package_id are required"
 msgstr "São necessários um tipo, id de chave e id de pacote"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:1183
+#: ../client/pk-console.c:1197
 msgid "A package name to remove is required"
 msgstr "É necessário um nome de pacote para remover"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1192
+#: ../client/pk-console.c:1206
 msgid "A destination directory and the package names to download are required"
 msgstr "São necessários uma directoria de destino assim como os nomes dos pacotes a transferir"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1199
+#: ../client/pk-console.c:1213
 msgid "Directory not found"
 msgstr "Directório não encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1208
+#: ../client/pk-console.c:1222
 msgid "A licence identifier (eula-id) is required"
 msgstr "É necessário um identificador de licença (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1219
+#: ../client/pk-console.c:1233
 msgid "A transaction identifier (tid) is required"
 msgstr "É necessário um identificador de transacção (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:1240
+#: ../client/pk-console.c:1254
 msgid "A package name to resolve is required"
 msgstr "É necessário indicar um nome de pacote"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:1251
-#: ../client/pk-console.c:1262
+#: ../client/pk-console.c:1265
+#: ../client/pk-console.c:1276
 msgid "A repository name is required"
 msgstr "É obrigatório um nome de repositório"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:1273
+#: ../client/pk-console.c:1287
 msgid "A repo name, parameter and value are required"
 msgstr "É necessário indicar um repositório, parâmetro e valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:1290
+#: ../client/pk-console.c:1304
 msgid "An action, e.g. 'update-system' is required"
 msgstr "É necessária uma acção, por exemplo 'update-system'"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:1297
+#: ../client/pk-console.c:1311
 msgid "A correct role is required"
 msgstr "É necessária uma função correcta"
 
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:1307
-#: ../client/pk-console.c:1322
-#: ../client/pk-console.c:1331
-#: ../client/pk-console.c:1351
-#: ../client/pk-console.c:1360
+#: ../client/pk-console.c:1321
+#: ../client/pk-console.c:1336
+#: ../client/pk-console.c:1345
+#: ../client/pk-console.c:1365
+#: ../client/pk-console.c:1374
 #: ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "É obrigatório um nome de pacote"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:1340
+#: ../client/pk-console.c:1354
 msgid "A package provide string is required"
 msgstr "É necessário especificar a string que define o que o pacote disponibiliza"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:1420
+#: ../client/pk-console.c:1434
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "A opção '%s' não é suportada"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:1430
+#: ../client/pk-console.c:1444
 msgid "Command failed"
 msgstr "Comando falhou"
 
@@ -598,16 +598,12 @@ msgstr "\"Service pack\" criado '%s'"
 msgid "Failed to create '%s': %s"
 msgstr "Não foi possível criar '%s': %s"
 
-#: ../client/pk-monitor.c:205
-msgid "Failed to get transaction list"
-msgstr "Falha ao obter a lista da transacção"
-
-#: ../client/pk-monitor.c:236
+#: ../client/pk-monitor.c:179
 msgid "Failed to get daemon state"
 msgstr "Falha ao obter o estado do serviço"
 
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:300
+#: ../client/pk-monitor.c:266
 msgid "PackageKit Monitor"
 msgstr "Monitorizar o PackageKit"
 
@@ -1096,7 +1092,9 @@ msgid "Removing packages"
 msgstr "A remover pacotes"
 
 #. TRANSLATORS: transaction state, downloading package files
+#. TRANSLATORS: The role of the transaction, in present tense
 #: ../lib/packagekit-glib2/pk-console-shared.c:266
+#: ../lib/packagekit-glib2/pk-console-shared.c:640
 msgid "Downloading packages"
 msgstr "A transferir pacotes"
 
@@ -1131,7 +1129,9 @@ msgid "Checking signatures"
 msgstr "A verificar assinaturas"
 
 #. TRANSLATORS: transaction state, when we return to a previous system state
+#. TRANSLATORS: The role of the transaction, in present tense
 #: ../lib/packagekit-glib2/pk-console-shared.c:298
+#: ../lib/packagekit-glib2/pk-console-shared.c:600
 msgid "Rolling back"
 msgstr "A reverter"
 
@@ -1293,12 +1293,16 @@ msgid "Updating"
 msgstr "A actualizar"
 
 #. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
 #: ../lib/packagekit-glib2/pk-console-shared.c:456
+#: ../lib/packagekit-glib2/pk-console-shared.c:576
 msgid "Installing"
 msgstr "A instalar"
 
 #. TRANSLATORS: The action of the package, in present tense
+#. TRANSLATORS: The role of the transaction, in present tense
 #: ../lib/packagekit-glib2/pk-console-shared.c:460
+#: ../lib/packagekit-glib2/pk-console-shared.c:572
 msgid "Removing"
 msgstr "A remover"
 
@@ -1342,6 +1346,157 @@ msgstr "obsoleto"
 msgid "Reinstalled"
 msgstr "Reinstalado"
 
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:532
+msgid "Unknown role type"
+msgstr "Tipo de perfil desconhecido"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:536
+msgid "Getting dependencies"
+msgstr "A obter dependências"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:540
+msgid "Getting update details"
+msgstr "A obter detalhes da actualização"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:544
+msgid "Getting details"
+msgstr "A obter detalhes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:548
+msgid "Getting requires"
+msgstr "A obter obrigatórios"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:552
+msgid "Getting updates"
+msgstr "A obter actualizações"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:556
+msgid "Searching by details"
+msgstr "A pesquisar por detalhes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:560
+msgid "Searching by file"
+msgstr "A pesquisar por ficheiro"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:564
+msgid "Searching groups"
+msgstr "A pesquisar por grupos"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:568
+msgid "Searching by name"
+msgstr "A pesquisar por nome"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:580
+msgid "Installing files"
+msgstr "A instalar ficheiros"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:584
+msgid "Refreshing cache"
+msgstr "A actualizar a cache"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:588
+msgid "Updating packages"
+msgstr "A actualizar pacotes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:592
+msgid "Updating system"
+msgstr "A actualizar sistema"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:596
+msgid "Canceling"
+msgstr "A cancelar"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:604
+msgid "Getting repositories"
+msgstr "A obter repositórios"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:608
+msgid "Enabling repository"
+msgstr "A activar repositórios"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:612
+msgid "Setting data"
+msgstr "A definir dados"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:616
+msgid "Resolving"
+msgstr "A resolver"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:620
+msgid "Getting file list"
+msgstr "A obter a lista de ficheiros"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:624
+msgid "Getting provides"
+msgstr "A obter a lista de disponibilizações"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:628
+msgid "Installing signature"
+msgstr "A instalar assinatura"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:632
+msgid "Getting packages"
+msgstr "A obter pacotes"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:636
+msgid "Accepting EULA"
+msgstr "A aceitar EULA (Acordo de Licenciamento para Utilizadores Finais)"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:644
+msgid "Getting upgrades"
+msgstr "A obter actualizações"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:648
+msgid "Getting categories"
+msgstr "A obter categorias"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:652
+msgid "Getting transactions"
+msgstr "A obter transacções"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:656
+#: ../lib/packagekit-glib2/pk-console-shared.c:660
+msgid "Simulating install"
+msgstr "A simular instalação"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:664
+msgid "Simulating remove"
+msgstr "A simular remoção"
+
+#. TRANSLATORS: The role of the transaction, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:668
+msgid "Simulating update"
+msgstr "A simular actualização"
+
 #. TRANSLATORS: ask the user if they are comfortable installing insecure packages
 #: ../lib/packagekit-glib2/pk-task-text.c:64
 msgid "Do you want to allow installing of unsigned software?"
@@ -1713,47 +1868,49 @@ msgstr "Não foi possível ligar ao barramento do sistema"
 msgid "Error trying to start:"
 msgstr "Erro ao tentar iniciar:"
 
-#: ../src/pk-polkit-action-lookup.c:147
+#: ../src/pk-polkit-action-lookup.c:150
 msgid "To install debugging packages, extra sources need to be enabled"
 msgstr "Para instalar pacotes de depuração, fontes extra precisam de ser activadas"
 
 #. TRANSLATORS: is not GPG signed
-#: ../src/pk-polkit-action-lookup.c:168
-#: ../src/pk-polkit-action-lookup.c:187
+#: ../src/pk-polkit-action-lookup.c:171
+#: ../src/pk-polkit-action-lookup.c:190
 msgid "The software is not from a trusted source."
 msgstr "O software não é de uma origem de confiança."
 
-#: ../src/pk-polkit-action-lookup.c:173
+#: ../src/pk-polkit-action-lookup.c:176
 msgid "Do not update this package unless you are sure it is safe to do so."
 msgstr "Não actualize este pacote a não ser que tenha a certeza que é seguro fazê-lo."
 
-#: ../src/pk-polkit-action-lookup.c:174
+#: ../src/pk-polkit-action-lookup.c:177
 msgid "Do not update these packages unless you are sure it is safe to do so."
 msgstr "Não actualize estes pacotes a não ser que tenha a certeza que é seguro fazê-lo."
 
-#: ../src/pk-polkit-action-lookup.c:192
+#: ../src/pk-polkit-action-lookup.c:195
 msgid "Do not install this package unless you are sure it is safe to do so."
 msgstr "Não instale este pacote a não ser que tenha a certeza que é seguro fazê-lo."
 
-#: ../src/pk-polkit-action-lookup.c:193
+#: ../src/pk-polkit-action-lookup.c:196
 msgid "Do not install these packages unless you are sure it is safe to do so."
 msgstr "Não instale estes pacotes a não ser que tenha a certeza que é seguro fazê-lo."
 
 #. TRANSLATORS: warn the user that all bets are off
-#: ../src/pk-polkit-action-lookup.c:199
+#: ../src/pk-polkit-action-lookup.c:202
 msgid "Malicious software can damage your computer or cause other harm."
 msgstr "Software malicioso pode danificar o seu computador ou causar outros danos."
 
 #. TRANSLATORS: too many packages to list each one
-#: ../src/pk-polkit-action-lookup.c:274
+#: ../src/pk-polkit-action-lookup.c:277
 msgid "Many packages"
 msgstr "Muitos pacotes"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:340
+#: ../src/pk-polkit-action-lookup.c:343
 msgid "Only trusted"
 msgstr "Apenas de confiança"
 
+#~ msgid "Failed to get transaction list"
+#~ msgstr "Falha ao obter a lista da transacção"
 #~ msgid "Percentage"
 #~ msgstr "Percentagem"
 #~ msgid "Please restart the application as it is being used."
@@ -1811,8 +1968,6 @@ msgstr "Apenas de confiança"
 #~ msgstr "Pacotes para remover"
 #~ msgid "No new packages need to be installed"
 #~ msgstr "Não existem pacotes novos para instalar"
-#~ msgid "Searching for package: "
-#~ msgstr "Pesquisar por pacote:"
 #~ msgid "not found."
 #~ msgstr "não encontrado."
 #~ msgid "No packages can be found to install"
commit 403d68ec5ba377b0d31ed9d3b9d79eb908868bce
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 15:26:24 2009 +0100

    glib2: Add a 'inputs' property to PkResults so GUI clients can localise thier dialogs properly

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index 31297b9..b1f236e 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -1160,6 +1160,12 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 	egg_debug ("set locale, ended DBus call: %p", state->call);
 	state->call = NULL;
 
+	/* we'll have results from now on */
+	state->results = pk_results_new ();
+	g_object_set (state->results,
+		      "role", state->role,
+		      NULL);
+
 	/* setup the proxies ready for use */
 	pk_client_connect_proxy (state->proxy, state);
 
@@ -1171,6 +1177,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_STRING, filters_text,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_SEARCH_NAME) {
 		filters_text = pk_filter_bitfield_to_text (state->filters);
 		state->call = dbus_g_proxy_begin_call (state->proxy, "SearchName",
@@ -1204,11 +1211,13 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_GET_UPDATE_DETAIL) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "GetUpdateDetail",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_GET_OLD_TRANSACTIONS) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "GetOldTransactions",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
@@ -1219,6 +1228,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_GET_UPDATES) {
 		filters_text = pk_filter_bitfield_to_text (state->filters);
 		state->call = dbus_g_proxy_begin_call (state->proxy, "GetUpdates",
@@ -1238,6 +1248,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_BOOLEAN, state->recursive,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_GET_PACKAGES) {
 		filters_text = pk_filter_bitfield_to_text (state->filters);
 		state->call = dbus_g_proxy_begin_call (state->proxy, "GetPackages",
@@ -1252,6 +1263,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_BOOLEAN, state->recursive,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_WHAT_PROVIDES) {
 		filters_text = pk_filter_bitfield_to_text (state->filters);
 		enum_text = pk_provides_enum_to_text (state->provides);
@@ -1270,6 +1282,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_GET_CATEGORIES) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "GetCategories",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
@@ -1281,6 +1294,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_BOOLEAN, state->allow_deps,
 						       G_TYPE_BOOLEAN, state->autoremove,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_REFRESH_CACHE) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "RefreshCache",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
@@ -1292,6 +1306,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_BOOLEAN, state->only_trusted,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_INSTALL_SIGNATURE) {
 		enum_text = pk_sig_type_enum_to_text (state->type);
 		state->call = dbus_g_proxy_begin_call (state->proxy, "InstallSignature",
@@ -1306,12 +1321,14 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       G_TYPE_BOOLEAN, state->only_trusted,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_INSTALL_FILES) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "InstallFiles",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_BOOLEAN, state->only_trusted,
 						       G_TYPE_STRV, state->files,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->files), NULL);
 	} else if (state->role == PK_ROLE_ENUM_ACCEPT_EULA) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "AcceptEula",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
@@ -1346,11 +1363,13 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->files,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "SimulateInstallPackages",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else if (state->role == PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES) {
 		state->call = dbus_g_proxy_begin_call (state->proxy, "SimulateRemovePackages",
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
@@ -1361,6 +1380,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 						       (DBusGProxyCallNotify) pk_client_method_cb, state, NULL,
 						       G_TYPE_STRV, state->package_ids,
 						       G_TYPE_INVALID);
+		g_object_set (state->results, "inputs", g_strv_length (state->package_ids), NULL);
 	} else {
 		g_assert_not_reached ();
 	}
@@ -1368,12 +1388,6 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 	/* we've sent this async */
 	egg_debug ("new method, started DBus call: %p", state->call);
 
-	/* we'll have results from now on */
-	state->results = pk_results_new ();
-	g_object_set (state->results,
-		      "role", state->role,
-		      NULL);
-
 out:
 	g_free (filters_text);
 	return;
diff --git a/lib/packagekit-glib2/pk-results.c b/lib/packagekit-glib2/pk-results.c
index 815428a..7c3d5d8 100644
--- a/lib/packagekit-glib2/pk-results.c
+++ b/lib/packagekit-glib2/pk-results.c
@@ -51,6 +51,7 @@ static void     pk_results_finalize	(GObject     *object);
 struct _PkResultsPrivate
 {
 	PkRoleEnum		 role;
+	guint			 inputs;
 	PkExitEnum		 exit_enum;
 	GPtrArray		*package_array;
 	GPtrArray		*details_array;
@@ -71,6 +72,7 @@ struct _PkResultsPrivate
 enum {
 	PROP_0,
 	PROP_ROLE,
+	PROP_INPUTS,
 	PROP_LAST
 };
 
@@ -89,6 +91,9 @@ pk_results_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
 	case PROP_ROLE:
 		g_value_set_uint (value, priv->role);
 		break;
+	case PROP_INPUTS:
+		g_value_set_uint (value, priv->inputs);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -108,6 +113,9 @@ pk_results_set_property (GObject *object, guint prop_id, const GValue *value, GP
 	case PROP_ROLE:
 		priv->role = g_value_get_uint (value);
 		break;
+	case PROP_INPUTS:
+		priv->inputs = g_value_get_uint (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -778,6 +786,14 @@ pk_results_class_init (PkResultsClass *klass)
 				   G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_ROLE, pspec);
 
+	/**
+	 * PkResults:inputs:
+	 */
+	pspec = g_param_spec_uint ("inputs", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_INPUTS, pspec);
+
 	g_type_class_add_private (klass, sizeof (PkResultsPrivate));
 }
 
@@ -788,7 +804,9 @@ static void
 pk_results_init (PkResults *results)
 {
 	results->priv = PK_RESULTS_GET_PRIVATE (results);
+	results->priv->role = PK_ROLE_ENUM_UNKNOWN;
 	results->priv->exit_enum = PK_EXIT_ENUM_UNKNOWN;
+	results->priv->inputs = 0;
 	results->priv->package_array = g_ptr_array_new_with_free_func ((GDestroyNotify) pk_item_package_unref);
 	results->priv->details_array = g_ptr_array_new_with_free_func ((GDestroyNotify) pk_item_details_unref);
 	results->priv->update_detail_array = g_ptr_array_new_with_free_func ((GDestroyNotify) pk_item_update_detail_unref);
commit 497fdb36d893f195661c2c4a578754fa0f49884f
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 15:25:21 2009 +0100

    trivial: correct some function prefixes in PkTaskX

diff --git a/lib/packagekit-glib2/pk-task-text.c b/lib/packagekit-glib2/pk-task-text.c
index 488e708..db8a53d 100644
--- a/lib/packagekit-glib2/pk-task-text.c
+++ b/lib/packagekit-glib2/pk-task-text.c
@@ -49,7 +49,7 @@ G_DEFINE_TYPE (PkTaskText, pk_task_text, PK_TYPE_TASK)
  * pk_task_text_untrusted_question:
  **/
 static void
-dkp_task_text_untrusted_question (PkTask *task, guint request, PkResults *results)
+pk_task_text_untrusted_question (PkTask *task, guint request, PkResults *results)
 {
 	gboolean ret;
 	PkTaskTextPrivate *priv = PK_TASK_TEXT(task)->priv;
@@ -75,7 +75,7 @@ dkp_task_text_untrusted_question (PkTask *task, guint request, PkResults *result
  * pk_task_text_key_question:
  **/
 static void
-dkp_task_text_key_question (PkTask *task, guint request, PkResults *results)
+pk_task_text_key_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	gboolean ret;
@@ -142,7 +142,7 @@ dkp_task_text_key_question (PkTask *task, guint request, PkResults *results)
  * pk_task_text_eula_question:
  **/
 static void
-dkp_task_text_eula_question (PkTask *task, guint request, PkResults *results)
+pk_task_text_eula_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	gboolean ret;
@@ -197,7 +197,7 @@ dkp_task_text_eula_question (PkTask *task, guint request, PkResults *results)
  * pk_task_text_media_change_question:
  **/
 static void
-dkp_task_text_media_change_question (PkTask *task, guint request, PkResults *results)
+pk_task_text_media_change_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	gboolean ret;
@@ -245,7 +245,7 @@ dkp_task_text_media_change_question (PkTask *task, guint request, PkResults *res
  * pk_task_text_simulate_question_type_to_text:
  **/
 static const gchar *
-dkp_task_text_simulate_question_type_to_text (PkInfoEnum info)
+pk_task_text_simulate_question_type_to_text (PkInfoEnum info)
 {
 	if (info == PK_INFO_ENUM_REMOVING) {
 		/* TRANSLATORS: When processing, we might have to remove other dependencies */
@@ -280,7 +280,7 @@ dkp_task_text_simulate_question_type_to_text (PkInfoEnum info)
  * pk_task_text_simulate_question:
  **/
 static void
-dkp_task_text_simulate_question (PkTask *task, guint request, PkResults *results)
+pk_task_text_simulate_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	guint len;
@@ -314,7 +314,7 @@ dkp_task_text_simulate_question (PkTask *task, guint request, PkResults *results
 			      NULL);
 		/* new header */
 		if (info != info_last) {
-			title = dkp_task_text_simulate_question_type_to_text (info);
+			title = pk_task_text_simulate_question_type_to_text (info);
 			g_print ("%s\n", title);
 			info_last = info;
 		}
@@ -350,11 +350,11 @@ pk_task_text_class_init (PkTaskTextClass *klass)
 	PkTaskClass *task_class = PK_TASK_CLASS (klass);
 
 	object_class->finalize = pk_task_text_finalize;
-	task_class->untrusted_question = dkp_task_text_untrusted_question;
-	task_class->key_question = dkp_task_text_key_question;
-	task_class->eula_question = dkp_task_text_eula_question;
-	task_class->media_change_question = dkp_task_text_media_change_question;
-	task_class->simulate_question = dkp_task_text_simulate_question;
+	task_class->untrusted_question = pk_task_text_untrusted_question;
+	task_class->key_question = pk_task_text_key_question;
+	task_class->eula_question = pk_task_text_eula_question;
+	task_class->media_change_question = pk_task_text_media_change_question;
+	task_class->simulate_question = pk_task_text_simulate_question;
 
 	g_type_class_add_private (klass, sizeof (PkTaskTextPrivate));
 }
diff --git a/lib/packagekit-glib2/pk-task-wrapper.c b/lib/packagekit-glib2/pk-task-wrapper.c
index 2065bb5..b2980f9 100644
--- a/lib/packagekit-glib2/pk-task-wrapper.c
+++ b/lib/packagekit-glib2/pk-task-wrapper.c
@@ -49,7 +49,7 @@ G_DEFINE_TYPE (PkTaskWrapper, pk_task_wrapper, PK_TYPE_TASK)
  * pk_task_wrapper_untrusted_question:
  **/
 static void
-dkp_task_wrapper_untrusted_question (PkTask *task, guint request, PkResults *results)
+pk_task_wrapper_untrusted_question (PkTask *task, guint request, PkResults *results)
 {
 	PkTaskWrapperPrivate *priv = PK_TASK_WRAPPER(task)->priv;
 
@@ -66,7 +66,7 @@ dkp_task_wrapper_untrusted_question (PkTask *task, guint request, PkResults *res
  * pk_task_wrapper_key_question:
  **/
 static void
-dkp_task_wrapper_key_question (PkTask *task, guint request, PkResults *results)
+pk_task_wrapper_key_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	GPtrArray *array;
@@ -100,7 +100,7 @@ dkp_task_wrapper_key_question (PkTask *task, guint request, PkResults *results)
  * pk_task_wrapper_eula_question:
  **/
 static void
-dkp_task_wrapper_eula_question (PkTask *task, guint request, PkResults *results)
+pk_task_wrapper_eula_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	GPtrArray *array;
@@ -131,7 +131,7 @@ dkp_task_wrapper_eula_question (PkTask *task, guint request, PkResults *results)
  * pk_task_wrapper_media_change_question:
  **/
 static void
-dkp_task_wrapper_media_change_question (PkTask *task, guint request, PkResults *results)
+pk_task_wrapper_media_change_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	GPtrArray *array;
@@ -161,7 +161,7 @@ dkp_task_wrapper_media_change_question (PkTask *task, guint request, PkResults *
  * pk_task_wrapper_simulate_question:
  **/
 static void
-dkp_task_wrapper_simulate_question (PkTask *task, guint request, PkResults *results)
+pk_task_wrapper_simulate_question (PkTask *task, guint request, PkResults *results)
 {
 	guint i;
 	guint len;
@@ -212,11 +212,11 @@ pk_task_wrapper_class_init (PkTaskWrapperClass *klass)
 	PkTaskClass *task_class = PK_TASK_CLASS (klass);
 
 	object_class->finalize = pk_task_wrapper_finalize;
-	task_class->untrusted_question = dkp_task_wrapper_untrusted_question;
-	task_class->key_question = dkp_task_wrapper_key_question;
-	task_class->eula_question = dkp_task_wrapper_eula_question;
-	task_class->media_change_question = dkp_task_wrapper_media_change_question;
-	task_class->simulate_question = dkp_task_wrapper_simulate_question;
+	task_class->untrusted_question = pk_task_wrapper_untrusted_question;
+	task_class->key_question = pk_task_wrapper_key_question;
+	task_class->eula_question = pk_task_wrapper_eula_question;
+	task_class->media_change_question = pk_task_wrapper_media_change_question;
+	task_class->simulate_question = pk_task_wrapper_simulate_question;
 
 	g_type_class_add_private (klass, sizeof (PkTaskWrapperPrivate));
 }
commit 7e4ab0716f75b020128b94112c0a8bf97a3073bc
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 12:16:47 2009 +0100

    glib2: Add pk_client_get_progress_async() so we can peek at the transaction without adopting it

diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index 869978f..e543ea1 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -35,6 +35,7 @@ typedef struct {
 	GError		**error;
 	GMainLoop	*loop;
 	PkResults	*results;
+	PkProgress	*progress;
 } PkClientHelper;
 
 /**
@@ -1659,3 +1660,63 @@ pk_client_adopt (PkClient *client, const gchar *transaction_id, GCancellable *ca
 	return results;
 }
 
+/**
+ * pk_client_get_progress_finish_sync:
+ **/
+static void
+pk_client_get_progress_finish_sync (PkClient *client, GAsyncResult *res, PkClientHelper *helper)
+{
+	PkProgress *progress;
+	progress = pk_client_get_progress_finish (client, res, helper->error);
+	if (progress != NULL) {
+		helper->progress = g_object_ref (G_OBJECT(progress));
+		g_object_unref (progress);
+	}
+	g_main_loop_quit (helper->loop);
+}
+
+/**
+ * pk_client_get_progress:
+ * @client: a valid #PkClient instance
+ * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
+ * @cancellable: a #GCancellable or %NULL
+ * @progress_callback: the function to run when the progress changes
+ * @progress_user_data: data to pass to @progress_callback
+ * @error: the #GError to store any failure, or %NULL
+ *
+ * Adopt a transaction.
+ *
+ * Warning: this function is synchronous, and will block. Do not use it in GUI
+ * applications.
+ *
+ * Return value: a %PkResults object, or NULL for error
+ **/
+PkProgress *
+pk_client_get_progress (PkClient *client, const gchar *transaction_id, GCancellable *cancellable, GError **error)
+{
+	PkClientHelper *helper;
+	PkProgress *progress;
+
+	g_return_val_if_fail (PK_IS_CLIENT (client), NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	/* create temp object */
+	helper = g_new0 (PkClientHelper, 1);
+	helper->loop = g_main_loop_new (NULL, FALSE);
+	helper->error = error;
+
+	/* run async method */
+	pk_client_get_progress_async (client, transaction_id, cancellable,
+				      (GAsyncReadyCallback) pk_client_get_progress_finish_sync, helper);
+
+	g_main_loop_run (helper->loop);
+
+	progress = helper->progress;
+
+	/* free temp object */
+	g_main_loop_unref (helper->loop);
+	g_free (helper);
+
+	return progress;
+}
+
diff --git a/lib/packagekit-glib2/pk-client-sync.h b/lib/packagekit-glib2/pk-client-sync.h
index 29f795b..63c05f6 100644
--- a/lib/packagekit-glib2/pk-client-sync.h
+++ b/lib/packagekit-glib2/pk-client-sync.h
@@ -285,6 +285,11 @@ PkResults	*pk_client_adopt 			(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
+PkProgress	*pk_client_get_progress			(PkClient		*client,
+							 const gchar		*transaction_id,
+							 GCancellable		*cancellable,
+							 GError			**error);
+
 #endif /* __PK_CLIENT_SYNC_H */
 
 
diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index 95d82f6..31297b9 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -3151,6 +3151,176 @@ pk_client_adopt_async (PkClient *client, const gchar *transaction_id, GCancellab
 /***************************************************************************************************/
 
 /**
+ * pk_client_get_progress_finish:
+ * @client: a valid #PkClient instance
+ * @res: the #GAsyncResult
+ * @error: A #GError or %NULL
+ *
+ * Gets the result from the asynchronous function.
+ *
+ * Return value: the #PkProgress, or %NULL. Free with g_object_unref()
+ **/
+PkProgress *
+pk_client_get_progress_finish (PkClient *client, GAsyncResult *res, GError **error)
+{
+	GSimpleAsyncResult *simple;
+
+	g_return_val_if_fail (PK_IS_CLIENT (client), NULL);
+	g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (res), NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	simple = G_SIMPLE_ASYNC_RESULT (res);
+	if (g_simple_async_result_propagate_error (simple, error))
+		return NULL;
+
+	return g_object_ref (g_simple_async_result_get_op_res_gpointer (simple));
+}
+
+/**
+ * pk_client_get_progress_state_finish:
+ **/
+static void
+pk_client_get_progress_state_finish (PkClientState *state, GError *error)
+{
+	PkClientPrivate *priv;
+	priv = state->client->priv;
+
+	if (state->client != NULL)
+		g_object_remove_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
+
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
+		g_object_unref (state->cancellable);
+	}
+
+	if (state->proxy != NULL) {
+		pk_client_disconnect_proxy (state->proxy, state);
+		g_object_unref (G_OBJECT (state->proxy));
+	}
+
+	if (state->proxy_props != NULL)
+		g_object_unref (G_OBJECT (state->proxy_props));
+
+	if (state->ret) {
+		g_simple_async_result_set_op_res_gpointer (state->res, g_object_ref (state->progress), g_object_unref);
+	} else {
+		g_simple_async_result_set_from_error (state->res, error);
+		g_error_free (error);
+	}
+
+	/* remove from list */
+	g_ptr_array_remove (priv->calls, state);
+	egg_debug ("state array remove %p", state);
+
+	/* complete */
+	g_simple_async_result_complete_in_idle (state->res);
+
+	/* destroy state */
+	g_free (state->transaction_id);
+	g_object_unref (state->progress);
+	g_object_unref (state->res);
+	g_slice_free (PkClientState, state);
+}
+
+/**
+ * pk_client_get_progress_cb:
+ **/
+static void
+pk_client_get_progress_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *state)
+{
+	GError *error = NULL;
+	GHashTable *hash;
+
+	/* get the result */
+	state->ret = dbus_g_proxy_end_call (proxy, call, &error,
+					    dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), &hash,
+					    G_TYPE_INVALID);
+	if (!state->ret) {
+		pk_client_get_progress_state_finish (state, error);
+		return;
+	}
+
+	/* finished this call */
+	egg_debug ("coldplugged properties, ended DBus call: %p", state->call);
+	state->call = NULL;
+
+	/* process results */
+	if (hash != NULL) {
+		g_hash_table_foreach (hash, (GHFunc) pk_client_get_properties_collect_cb, state);
+		g_hash_table_unref (hash);
+	}
+
+	/* we're done */
+	pk_client_get_progress_state_finish (state, error);
+}
+
+/**
+ * pk_client_get_progress_async:
+ * @client: a valid #PkClient instance
+ * @transaction_id: a transaction ID such as "/21_ebcbdaae_data"
+ * @cancellable: a #GCancellable or %NULL
+ * @callback_ready: the function to run on completion
+ * @user_data: the data to pass to @callback_ready
+ *
+ * Find the current state of a transaction.
+ **/
+void
+pk_client_get_progress_async (PkClient *client, const gchar *transaction_id, GCancellable *cancellable,
+			      GAsyncReadyCallback callback_ready, gpointer user_data)
+{
+	GSimpleAsyncResult *res;
+	PkClientState *state;
+
+	g_return_if_fail (PK_IS_CLIENT (client));
+	g_return_if_fail (callback_ready != NULL);
+
+	res = g_simple_async_result_new (G_OBJECT (client), callback_ready, user_data, pk_client_get_progress_async);
+
+	/* save state */
+	state = g_slice_new0 (PkClientState);
+	state->res = g_object_ref (res);
+	if (cancellable != NULL) {
+		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_client_cancellable_cancel_cb), state, NULL);
+	}
+	state->client = client;
+	state->tid = g_strdup (transaction_id);
+	state->progress = pk_progress_new ();
+	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
+
+	/* get a connection to the transaction interface */
+	state->proxy = dbus_g_proxy_new_for_name (state->client->priv->connection,
+						  PK_DBUS_SERVICE, state->tid, PK_DBUS_INTERFACE_TRANSACTION);
+	if (state->proxy == NULL)
+		egg_error ("Cannot connect to PackageKit on %s", state->tid);
+
+	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
+	dbus_g_proxy_set_default_timeout (state->proxy, INT_MAX);
+
+	/* get a connection to the properties interface */
+	state->proxy_props = dbus_g_proxy_new_for_name (state->client->priv->connection,
+							PK_DBUS_SERVICE, state->tid,
+							"org.freedesktop.DBus.Properties");
+	if (state->proxy_props == NULL)
+		egg_error ("Cannot connect to PackageKit on %s", state->tid);
+
+	/* call D-Bus get_properties async */
+	state->call = dbus_g_proxy_begin_call (state->proxy_props, "GetAll",
+					       (DBusGProxyCallNotify) pk_client_get_progress_cb, state, NULL,
+					       G_TYPE_STRING, "org.freedesktop.PackageKit.Transaction",
+					       G_TYPE_INVALID);
+	egg_debug ("getting progress on %s, started DBus call: %p", state->tid, state->call);
+
+	/* track state */
+	g_ptr_array_add (client->priv->calls, state);
+	egg_debug ("state array add %p", state);
+
+	g_object_unref (res);
+}
+
+/***************************************************************************************************/
+
+/**
  * pk_client_cancel_all_dbus_methods:
  **/
 static gboolean
diff --git a/lib/packagekit-glib2/pk-client.h b/lib/packagekit-glib2/pk-client.h
index d15fa1c..8adc7b4 100644
--- a/lib/packagekit-glib2/pk-client.h
+++ b/lib/packagekit-glib2/pk-client.h
@@ -395,6 +395,16 @@ void		 pk_client_adopt_async 			(PkClient		*client,
 							 GAsyncReadyCallback	 callback_ready,
 							 gpointer		 user_data);
 
+PkProgress	*pk_client_get_progress_finish		(PkClient		*client,
+							 GAsyncResult		*res,
+							 GError			**error);
+
+void		 pk_client_get_progress_async 		(PkClient		*client,
+							 const gchar		*transaction_id,
+							 GCancellable		*cancellable,
+							 GAsyncReadyCallback	 callback_ready,
+							 gpointer		 user_data);
+
 G_END_DECLS
 
 #endif /* __PK_CLIENT_H */
commit 1b9686513688eb51f893273f4fde8e17024cfc4d
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 12:15:53 2009 +0100

    trivial: don't include the global header in pk-client-sync.h

diff --git a/lib/packagekit-glib2/pk-client-sync.h b/lib/packagekit-glib2/pk-client-sync.h
index 5d69f12..29f795b 100644
--- a/lib/packagekit-glib2/pk-client-sync.h
+++ b/lib/packagekit-glib2/pk-client-sync.h
@@ -23,7 +23,9 @@
 #define __PK_CLIENT_SYNC_H
 
 #include <glib.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-client.h>
+#include <packagekit-glib2/pk-bitfield.h>
+#include <packagekit-glib2/pk-progress.h>
 
 PkResults	*pk_client_resolve			(PkClient		*client,
 							 PkBitfield		 filters,
commit 01e69d17b2430f25273a6e15c2372393ff555418
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 12:15:22 2009 +0100

    trivial: don't reply on the object being ref'd

diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index 93a07ff..869978f 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -44,11 +44,10 @@ static void
 pk_client_generic_finish_sync (PkClient *client, GAsyncResult *res, PkClientHelper *helper)
 {
 	PkResults *results;
-	/* get the result */
 	results = pk_client_generic_finish (client, res, helper->error);
 	if (results != NULL) {
+		helper->results = g_object_ref (G_OBJECT(results));
 		g_object_unref (results);
-		helper->results = g_object_ref (G_OBJECT (results));
 	}
 	g_main_loop_quit (helper->loop);
 }
commit ad29a5cb1365d99c2988c74d1651fa1f59a0eb6f
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 12:14:28 2009 +0100

    trivial: remove unused define

diff --git a/client/pk-console.c b/client/pk-console.c
index e1a9e5d..2f69a87 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -21,7 +21,6 @@
 
 #include "config.h"
 
-//#include <string.h>
 #include <unistd.h>
 #include <signal.h>
 #include <stdlib.h>
commit 527660585607f9a20049d9a8f8d09c037323275c
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 11:58:41 2009 +0100

    glib2: add the missing pk_client_adopt() function to PkClient

diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index 1521edc..93a07ff 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -1614,3 +1614,49 @@ pk_client_simulate_update_packages (PkClient *client, gchar **package_ids, GCanc
 	return results;
 }
 
+/**
+ * pk_client_adopt:
+ * @client: a valid #PkClient instance
+ * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
+ * @cancellable: a #GCancellable or %NULL
+ * @progress_callback: the function to run when the progress changes
+ * @progress_user_data: data to pass to @progress_callback
+ * @error: the #GError to store any failure, or %NULL
+ *
+ * Adopt a transaction.
+ *
+ * Warning: this function is synchronous, and will block. Do not use it in GUI
+ * applications.
+ *
+ * Return value: a %PkResults object, or NULL for error
+ **/
+PkResults *
+pk_client_adopt (PkClient *client, const gchar *transaction_id, GCancellable *cancellable,
+		 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+{
+	PkClientHelper *helper;
+	PkResults *results;
+
+	g_return_val_if_fail (PK_IS_CLIENT (client), NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	/* create temp object */
+	helper = g_new0 (PkClientHelper, 1);
+	helper->loop = g_main_loop_new (NULL, FALSE);
+	helper->error = error;
+
+	/* run async method */
+	pk_client_adopt_async (client, transaction_id, cancellable, progress_callback, progress_user_data,
+			       (GAsyncReadyCallback) pk_client_generic_finish_sync, helper);
+
+	g_main_loop_run (helper->loop);
+
+	results = helper->results;
+
+	/* free temp object */
+	g_main_loop_unref (helper->loop);
+	g_free (helper);
+
+	return results;
+}
+
commit 00ade27c48a811607270fe60b052b4053a7e42b2
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 09:24:02 2009 +0100

    pkcon: when removing packages, allow removal of deps too

diff --git a/client/pk-console.c b/client/pk-console.c
index 49d4f97..e1a9e5d 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -630,7 +630,7 @@ pk_console_remove_packages (gchar **packages, GError **error)
 	}
 
 	/* do the async action */
-	pk_task_remove_packages_async (PK_TASK(task), package_ids, FALSE, FALSE, cancellable,
+	pk_task_remove_packages_async (PK_TASK(task), package_ids, TRUE, FALSE, cancellable,
 				       (PkProgressCallback) pk_console_progress_cb, NULL,
 				       (GAsyncReadyCallback) pk_console_finished_cb, NULL);
 out:
commit f93771018e83bea0203eb82ea578dab349ec0d7d
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 09:20:09 2009 +0100

    pkcon: Ensure we set the role as a progressbar heading when it is set
    
    This fixes the bug where pkcon would often jump to the top of a console
    window when starting a simulate.

diff --git a/client/pk-console.c b/client/pk-console.c
index e9e818c..49d4f97 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -414,7 +414,21 @@ pk_console_progress_cb (PkProgress *progress, PkProgressType type, gpointer data
 {
 	gint percentage;
 	PkStatusEnum status;
-	const gchar *status_text;
+	PkRoleEnum role;
+	const gchar *text;
+
+	/* role */
+	if (type == PK_PROGRESS_TYPE_ROLE) {
+		g_object_get (progress,
+			      "role", &role,
+			      NULL);
+		if (role == PK_ROLE_ENUM_UNKNOWN)
+			return;
+
+		/* show new status on the bar */
+		text = pk_role_enum_to_localised_present (role);
+		pk_progress_bar_start (progressbar, text);
+	}
 
 	/* percentage */
 	if (type == PK_PROGRESS_TYPE_PERCENTAGE) {
@@ -433,8 +447,8 @@ pk_console_progress_cb (PkProgress *progress, PkProgressType type, gpointer data
 			return;
 
 		/* show new status on the bar */
-		status_text = pk_status_enum_to_localised_text (status);
-		pk_progress_bar_start (progressbar, status_text);
+		text = pk_status_enum_to_localised_text (status);
+		pk_progress_bar_start (progressbar, text);
 	}
 }
 
commit bcc00a095c24868d2d675742d384406fefb0d737
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 09:18:48 2009 +0100

    glib2: Ensure we call the progress callback when initially setting the role in PkClient

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index a8e0548..95d82f6 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -1123,6 +1123,19 @@ pk_client_disconnect_proxy (DBusGProxy *proxy, PkClientState *state)
 }
 
 /**
+ * pk_client_set_role:
+ **/
+static void
+pk_client_set_role (PkClientState *state, PkRoleEnum role)
+{
+	gboolean ret;
+	ret = pk_progress_set_role (state->progress, role);
+	if (ret && state->progress_callback != NULL)
+		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ROLE, state->progress_user_data);
+	return;
+}
+
+/**
  * pk_client_set_locale_cb:
  **/
 static void
@@ -1484,7 +1497,7 @@ pk_client_resolve_async (PkClient *client, PkBitfield filters, gchar **packages,
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1533,7 +1546,7 @@ pk_client_search_name_async (PkClient *client, PkBitfield filters, const gchar *
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1583,7 +1596,7 @@ pk_client_search_details_async (PkClient *client, PkBitfield filters, const gcha
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1631,7 +1644,7 @@ pk_client_search_group_async (PkClient *client, PkBitfield filters, const gchar
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1679,7 +1692,7 @@ pk_client_search_file_async (PkClient *client, PkBitfield filters, const gchar *
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1726,7 +1739,7 @@ pk_client_get_details_async (PkClient *client, gchar **package_ids, GCancellable
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1773,7 +1786,7 @@ pk_client_get_update_detail_async (PkClient *client, gchar **package_ids, GCance
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1821,7 +1834,7 @@ pk_client_download_packages_async (PkClient *client, gchar **package_ids, const
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1867,7 +1880,7 @@ pk_client_get_updates_async (PkClient *client, PkBitfield filters, GCancellable
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1913,7 +1926,7 @@ pk_client_get_old_transactions_async (PkClient *client, guint number, GCancellab
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -1964,7 +1977,7 @@ pk_client_update_system_async (PkClient *client, gboolean only_trusted, GCancell
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2014,7 +2027,7 @@ pk_client_get_depends_async (PkClient *client, PkBitfield filters, gchar **packa
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2060,7 +2073,7 @@ pk_client_get_packages_async (PkClient *client, PkBitfield filters, GCancellable
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2110,7 +2123,7 @@ pk_client_get_requires_async (PkClient *client, PkBitfield filters, gchar **pack
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2162,7 +2175,7 @@ pk_client_what_provides_async (PkClient *client, PkBitfield filters, PkProvidesE
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2207,7 +2220,7 @@ pk_client_get_distro_upgrades_async (PkClient *client, GCancellable *cancellable
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2253,7 +2266,7 @@ pk_client_get_files_async (PkClient *client, gchar **package_ids, GCancellable *
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2297,7 +2310,7 @@ pk_client_get_categories_async (PkClient *client, GCancellable *cancellable,
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2349,7 +2362,7 @@ pk_client_remove_packages_async (PkClient *client, gchar **package_ids, gboolean
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2398,7 +2411,7 @@ pk_client_refresh_cache_async (PkClient *client, gboolean force, GCancellable *c
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2446,7 +2459,7 @@ pk_client_install_packages_async (PkClient *client, gboolean only_trusted, gchar
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2496,7 +2509,7 @@ pk_client_install_signature_async (PkClient *client, PkSigTypeEnum type, const g
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2544,7 +2557,7 @@ pk_client_update_packages_async (PkClient *client, gboolean only_trusted, gchar
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2593,7 +2606,7 @@ pk_client_install_files_async (PkClient *client, gboolean only_trusted, gchar **
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2639,7 +2652,7 @@ pk_client_accept_eula_async (PkClient *client, const gchar *eula_id, GCancellabl
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2685,7 +2698,7 @@ pk_client_rollback_async (PkClient *client, const gchar *transaction_id, GCancel
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2731,7 +2744,7 @@ pk_client_get_repo_list_async (PkClient *client, PkBitfield filters, GCancellabl
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2779,7 +2792,7 @@ pk_client_repo_enable_async (PkClient *client, const gchar *repo_id, gboolean en
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2830,7 +2843,7 @@ pk_client_repo_set_data_async (PkClient *client, const gchar *repo_id, const gch
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2876,7 +2889,7 @@ pk_client_simulate_install_files_async (PkClient *client, gchar **files, GCancel
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2922,7 +2935,7 @@ pk_client_simulate_install_packages_async (PkClient *client, gchar **package_ids
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -2968,7 +2981,7 @@ pk_client_simulate_remove_packages_async (PkClient *client, gchar **package_ids,
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -3014,7 +3027,7 @@ pk_client_simulate_update_packages_async (PkClient *client, gchar **package_ids,
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get tid */
@@ -3096,7 +3109,7 @@ pk_client_adopt_async (PkClient *client, const gchar *transaction_id, GCancellab
 	state->progress_callback = progress_callback;
 	state->progress_user_data = progress_user_data;
 	state->progress = pk_progress_new ();
-	pk_progress_set_role (state->progress, state->role);
+	pk_client_set_role (state, state->role);
 	g_object_add_weak_pointer (G_OBJECT (state->client), (gpointer) &state->client);
 
 	/* get a connection to the transaction interface */
commit 51a22d4d2467989afaf384fb0d30856132d266b4
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 09:18:08 2009 +0100

    Add some more translations to make the output of pkcon better in non-English locales

diff --git a/lib/packagekit-glib2/pk-console-shared.c b/lib/packagekit-glib2/pk-console-shared.c
index b49a30a..509f720 100644
--- a/lib/packagekit-glib2/pk-console-shared.c
+++ b/lib/packagekit-glib2/pk-console-shared.c
@@ -519,6 +519,159 @@ pk_info_enum_to_localised_past (PkInfoEnum info)
 	return text;
 }
 
+/**
+ * pk_role_enum_to_localised_present:
+ **/
+const gchar *
+pk_role_enum_to_localised_present (PkRoleEnum role)
+{
+	const gchar *text = NULL;
+	switch (role) {
+	case PK_ROLE_ENUM_UNKNOWN:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Unknown role type");
+		break;
+	case PK_ROLE_ENUM_GET_DEPENDS:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting dependencies");
+		break;
+	case PK_ROLE_ENUM_GET_UPDATE_DETAIL:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting update details");
+		break;
+	case PK_ROLE_ENUM_GET_DETAILS:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting details");
+		break;
+	case PK_ROLE_ENUM_GET_REQUIRES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting requires");
+		break;
+	case PK_ROLE_ENUM_GET_UPDATES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting updates");
+		break;
+	case PK_ROLE_ENUM_SEARCH_DETAILS:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Searching by details");
+		break;
+	case PK_ROLE_ENUM_SEARCH_FILE:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Searching by file");
+		break;
+	case PK_ROLE_ENUM_SEARCH_GROUP:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Searching groups");
+		break;
+	case PK_ROLE_ENUM_SEARCH_NAME:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Searching by name");
+		break;
+	case PK_ROLE_ENUM_REMOVE_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Removing");
+		break;
+	case PK_ROLE_ENUM_INSTALL_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Installing");
+		break;
+	case PK_ROLE_ENUM_INSTALL_FILES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Installing files");
+		break;
+	case PK_ROLE_ENUM_REFRESH_CACHE:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Refreshing cache");
+		break;
+	case PK_ROLE_ENUM_UPDATE_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Updating packages");
+		break;
+	case PK_ROLE_ENUM_UPDATE_SYSTEM:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Updating system");
+		break;
+	case PK_ROLE_ENUM_CANCEL:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Canceling");
+		break;
+	case PK_ROLE_ENUM_ROLLBACK:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Rolling back");
+		break;
+	case PK_ROLE_ENUM_GET_REPO_LIST:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting repositories");
+		break;
+	case PK_ROLE_ENUM_REPO_ENABLE:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Enabling repository");
+		break;
+	case PK_ROLE_ENUM_REPO_SET_DATA:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Setting data");
+		break;
+	case PK_ROLE_ENUM_RESOLVE:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Resolving");
+		break;
+	case PK_ROLE_ENUM_GET_FILES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting file list");
+		break;
+	case PK_ROLE_ENUM_WHAT_PROVIDES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting provides");
+		break;
+	case PK_ROLE_ENUM_INSTALL_SIGNATURE:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Installing signature");
+		break;
+	case PK_ROLE_ENUM_GET_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting packages");
+		break;
+	case PK_ROLE_ENUM_ACCEPT_EULA:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Accepting EULA");
+		break;
+	case PK_ROLE_ENUM_DOWNLOAD_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Downloading packages");
+		break;
+	case PK_ROLE_ENUM_GET_DISTRO_UPGRADES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting upgrades");
+		break;
+	case PK_ROLE_ENUM_GET_CATEGORIES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting categories");
+		break;
+	case PK_ROLE_ENUM_GET_OLD_TRANSACTIONS:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Getting transactions");
+		break;
+	case PK_ROLE_ENUM_SIMULATE_INSTALL_FILES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Simulating install");
+		break;
+	case PK_ROLE_ENUM_SIMULATE_INSTALL_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Simulating install");
+		break;
+	case PK_ROLE_ENUM_SIMULATE_REMOVE_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Simulating remove");
+		break;
+	case PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES:
+		/* TRANSLATORS: The role of the transaction, in present tense */
+		text = _("Simulating update");
+		break;
+	default:
+		egg_warning ("role unrecognised: %s", pk_role_enum_to_text (role));
+	}
+	return text;
+}
 
 /***************************************************************************
  ***                          MAKE CHECK TESTS                           ***
diff --git a/lib/packagekit-glib2/pk-console-shared.h b/lib/packagekit-glib2/pk-console-shared.h
index 5278e4b..9901ea2 100644
--- a/lib/packagekit-glib2/pk-console-shared.h
+++ b/lib/packagekit-glib2/pk-console-shared.h
@@ -41,6 +41,7 @@ gchar		**pk_console_resolve_packages		(PkClient	*client,
 const gchar	*pk_status_enum_to_localised_text	(PkStatusEnum	 status);
 const gchar	*pk_info_enum_to_localised_past		(PkInfoEnum	 info);
 const gchar	*pk_info_enum_to_localised_present	(PkInfoEnum	 info);
+const gchar	*pk_role_enum_to_localised_present	(PkRoleEnum	 role);
 
 #endif /* __PK_CONSOLE_SHARED_H */
 
commit b6a388f7a5511dc3350ad670900593e226eece7c
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 09:17:18 2009 +0100

    glib2: print warning if pk_progress_bar_set_percentage() is called before pk_progress_bar_start()

diff --git a/lib/packagekit-glib2/pk-progress-bar.c b/lib/packagekit-glib2/pk-progress-bar.c
index 506b660..6a54e3f 100644
--- a/lib/packagekit-glib2/pk-progress-bar.c
+++ b/lib/packagekit-glib2/pk-progress-bar.c
@@ -164,6 +164,10 @@ pk_progress_bar_set_percentage (PkProgressBar *self, gint percentage)
 	g_return_val_if_fail (PK_IS_PROGRESS_BAR (self), FALSE);
 	g_return_val_if_fail (percentage <= PK_PROGRESS_BAR_PERCENTAGE_INVALID, FALSE);
 
+	/* never called pk_progress_bar_start() */
+	if (self->priv->percentage == G_MININT)
+		pk_progress_bar_start (self, "FIXME: need to call pk_progress_bar_start() earlier!");
+
 	/* check for old percentage */
 	if (percentage == self->priv->percentage) {
 		egg_debug ("skipping as the same");
commit b874e3551693f836735ec2de4e15f8356b03190e
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 08:45:15 2009 +0100

    pkmon: monitor network-status too

diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index 7bffd75..c050c4e 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -73,6 +73,17 @@ pk_monitor_notify_locked_cb (PkControl *control, GParamSpec *pspec, gpointer dat
 }
 
 /**
+ * pk_monitor_notify_network_status_cb:
+ **/
+static void
+pk_monitor_notify_network_status_cb (PkControl *control, GParamSpec *pspec, gpointer data)
+{
+	PkNetworkEnum state;
+	g_object_get (control, "network-status", &state, NULL);
+	g_print ("network status=%s\n", pk_network_enum_to_text (state));
+}
+
+/**
  * pk_monitor_adopt_cb:
  **/
 static void
@@ -277,6 +288,8 @@ main (int argc, char *argv[])
 			  G_CALLBACK (pk_monitor_notify_locked_cb), NULL);
 	g_signal_connect (control, "notify::connected",
 			  G_CALLBACK (pk_monitor_notify_connected_cb), NULL);
+	g_signal_connect (control, "notify::network-status",
+			  G_CALLBACK (pk_monitor_notify_network_status_cb), NULL);
 
 	tlist = pk_transaction_list_new ();
 	g_signal_connect (tlist, "added",
@@ -292,6 +305,7 @@ main (int argc, char *argv[])
 		egg_warning ("need to coldplug %s", transaction_ids[i]);
 	}
 	g_strfreev (transaction_ids);
+	pk_monitor_list_print (tlist);
 
 	/* only print state when verbose */
 	if (verbose)
commit e68624d6961f74459cb80764205fd82a1c5b6969
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Sep 17 08:41:37 2009 +0100

    contrib: Fix crash on 64 bit architectures in the plugin installer. Fixes rh#523861

diff --git a/contrib/gstreamer-plugin/Makefile.am b/contrib/gstreamer-plugin/Makefile.am
index 57e0025..8926396 100644
--- a/contrib/gstreamer-plugin/Makefile.am
+++ b/contrib/gstreamer-plugin/Makefile.am
@@ -14,6 +14,11 @@ INCLUDES =						\
 	-DPK_DATA=\"$(pkgdatadir)\"			\
 	-DPK_DB_DIR=\""$(PK_DB_DIR)"\" 			\
 	-DEGG_LOG_FILE=\""$(PK_LOG_DIR)/PackageKit"\"	\
+	-I$(top_srcdir)/lib				\
+	$(NULL)
+
+PK_GLIB2_LIBS =						\
+	$(top_builddir)/lib/packagekit-glib2/libpackagekit-glib2.la	\
 	$(NULL)
 
 libexec_PROGRAMS =					\
@@ -26,6 +31,7 @@ pk_gstreamer_install_SOURCES =				\
 
 pk_gstreamer_install_LDADD =				\
 	$(PK_GSTREAMER_PLUGIN_LIBS)			\
+	$(PK_GLIB2_LIBS)				\
 	$(NULL)
 
 pk_gstreamer_install_CFLAGS =				\
diff --git a/contrib/gstreamer-plugin/pk-gstreamer-install.c b/contrib/gstreamer-plugin/pk-gstreamer-install.c
index 3619013..1507ed7 100644
--- a/contrib/gstreamer-plugin/pk-gstreamer-install.c
+++ b/contrib/gstreamer-plugin/pk-gstreamer-install.c
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <sys/utsname.h>
 #include <dbus/dbus-glib.h>
+#include <packagekit-glib2/packagekit.h>
 
 typedef struct {
 	GstStructure	*structure;
@@ -328,7 +329,7 @@ main (int argc, gchar **argv)
 	/* use a ()(64bit) suffix for 64 bit */
 	suffix = pk_gst_get_arch_suffix ();
 
-	array = g_ptr_array_new ();
+	array = g_ptr_array_new_with_free_func (g_free);
 	len = g_strv_length (codecs);
 	resources = g_new0 (gchar*, len+1);
 
@@ -370,8 +371,7 @@ main (int argc, gchar **argv)
 	}
 
 	/* convert to a GStrv */
-	resources = (gchar **) g_ptr_array_free (array, FALSE);
-	array = NULL;
+	resources = pk_ptr_array_to_strv (array);
 
 	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
 	dbus_g_proxy_set_default_timeout (proxy, INT_MAX);
@@ -399,10 +399,8 @@ main (int argc, gchar **argv)
 	retval = GST_INSTALL_PLUGINS_SUCCESS;
 
 out:
-	if (array != NULL) {
-		g_ptr_array_foreach (array, (GFunc) g_free, NULL);
-		g_ptr_array_free (array, TRUE);
-	}
+	if (array != NULL)
+		g_ptr_array_unref (array);
 	g_strfreev (resources);
 	if (proxy != NULL)
 		g_object_unref (proxy);
commit 6310261f325f3a85615835f6e005b70dd5c1464e
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Sep 16 16:23:10 2009 +0100

    glib2: Add a PkTransactionList class which is like a stripped down glib1 PkTaskList

diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index 82f1d7e..7bffd75 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -31,7 +31,6 @@
 
 static gboolean verbose = FALSE;
 static PkClient *client = NULL;
-static GPtrArray *array = NULL;
 
 /**
  * pk_monitor_repo_list_changed_cb:
@@ -134,94 +133,27 @@ pk_monitor_progress_cb (PkProgress *progress, PkProgressType type, const gchar *
 }
 
 /**
- * pk_monitor_list_add:
- **/
-static void
-pk_monitor_list_add (const gchar *transaction_id)
-{
-	gchar *tid;
-
-	/* adopt client */
-	tid = g_strdup (transaction_id);
-	pk_client_adopt_async (client, transaction_id, NULL,
-			       (PkProgressCallback) pk_monitor_progress_cb, tid,
-			       (GAsyncReadyCallback) pk_monitor_adopt_cb, tid);
-	/* add tid to array */
-	g_ptr_array_add (array, tid);
-}
-
-/**
- * pk_monitor_in_array:
- **/
-static gboolean
-pk_monitor_in_array (GPtrArray *_array, const gchar *text)
-{
-	guint i;
-	const gchar *tmp;
-	for (i=0; i<_array->len; i++) {
-		tmp = g_ptr_array_index (_array, i);
-		if (g_strcmp0 (text, tmp) == 0)
-			return TRUE;
-	}
-	return FALSE;
-}
-
-/**
  * pk_monitor_list_print:
  **/
 static void
-pk_monitor_list_print (gchar **list)
+pk_monitor_list_print (PkTransactionList *tlist)
 {
 	guint i;
-	gboolean ret;
+	gchar **list;
 
+	list = pk_transaction_list_get_ids (tlist);
 	g_print ("Transactions:\n");
 	if (list[0] == NULL) {
 		g_print (" [none]\n");
-		return;
+		goto out;
 	}
-	for (i=0; list[i] != NULL; i++) {
+	for (i=0; list[i] != NULL; i++)
 		g_print (" %i\t%s\n", i+1, list[i]);
-
-		/* check to see if tid is in array */
-		ret = pk_monitor_in_array (array, list[i]);
-		if (!ret)
-			pk_monitor_list_add (list[i]);
-	}
-}
-
-/**
- * pk_monitor_get_transaction_list_cb:
- **/
-static void
-pk_monitor_get_transaction_list_cb (PkControl *control, GAsyncResult *res, gpointer user_data)
-{
-	GError *error = NULL;
-	gchar **list;
-
-	/* get the result */
-	list = pk_control_get_transaction_list_finish (control, res, &error);
-	if (list == NULL) {
-		g_print ("%s: %s", _("Failed to get transaction list"), error->message);
-		g_error_free (error);
-		return;
-	}
-	pk_monitor_list_print (list);
+out:
 	g_strfreev (list);
 }
 
 /**
- * pk_monitor_get_transaction_list:
- **/
-static void
-pk_monitor_get_transaction_list (PkControl *control)
-{
-	egg_debug ("refreshing task list");
-	pk_control_get_transaction_list_async (control, NULL,
-					       (GAsyncReadyCallback) pk_monitor_get_transaction_list_cb, NULL);
-}
-
-/**
  * pk_monitor_get_daemon_state_cb:
  **/
 static void
@@ -252,21 +184,41 @@ pk_monitor_get_daemon_state (PkControl *control)
 					   (GAsyncReadyCallback) pk_monitor_get_daemon_state_cb, NULL);
 }
 
-
 /**
  * pk_monitor_task_list_changed_cb:
  **/
 static void
 pk_monitor_task_list_changed_cb (PkControl *control)
 {
-	pk_monitor_get_transaction_list (control);
-
 	/* only print state when verbose */
 	if (verbose)
 		pk_monitor_get_daemon_state (control);
 }
 
 /**
+ * pk_monitor_transaction_list_added_cb:
+ **/
+static void
+pk_monitor_transaction_list_added_cb (PkTransactionList *tlist, const gchar *transaction_id, gpointer data)
+{
+	egg_debug ("added: %s", transaction_id);
+	pk_client_adopt_async (client, transaction_id, NULL,
+			       (PkProgressCallback) pk_monitor_progress_cb, g_strdup (transaction_id),
+			       (GAsyncReadyCallback) pk_monitor_adopt_cb, g_strdup (transaction_id));
+	pk_monitor_list_print (tlist);
+}
+
+/**
+ * pk_monitor_transaction_list_removed_cb:
+ **/
+static void
+pk_monitor_transaction_list_removed_cb (PkTransactionList *tlist, const gchar *transaction_id, gpointer data)
+{
+	egg_debug ("removed: %s", transaction_id);
+	pk_monitor_list_print (tlist);
+}
+
+/**
  * main:
  **/
 int
@@ -277,6 +229,9 @@ main (int argc, char *argv[])
 	GOptionContext *context;
 	gint retval = EXIT_SUCCESS;
 	PkControl *control;
+	PkTransactionList *tlist;
+	gchar **transaction_ids;
+	guint i;
 
 	const GOptionEntry options[] = {
 		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
@@ -312,8 +267,6 @@ main (int argc, char *argv[])
 	loop = g_main_loop_new (NULL, FALSE);
 
 	control = pk_control_new ();
-	client = pk_client_new ();
-	array = g_ptr_array_new_with_free_func (g_free);
 	g_signal_connect (control, "repo-list-changed",
 			  G_CALLBACK (pk_monitor_repo_list_changed_cb), NULL);
 	g_signal_connect (control, "updates-changed",
@@ -325,8 +278,20 @@ main (int argc, char *argv[])
 	g_signal_connect (control, "notify::connected",
 			  G_CALLBACK (pk_monitor_notify_connected_cb), NULL);
 
-	/* coldplug */
-	pk_monitor_get_transaction_list (control);
+	tlist = pk_transaction_list_new ();
+	g_signal_connect (tlist, "added",
+			  G_CALLBACK (pk_monitor_transaction_list_added_cb), NULL);
+	g_signal_connect (tlist, "removed",
+			  G_CALLBACK (pk_monitor_transaction_list_removed_cb), NULL);
+
+	client = pk_client_new ();
+
+	/* coldplug, but shouldn't be needed yet */
+	transaction_ids = pk_transaction_list_get_ids (tlist);
+	for (i=0; transaction_ids[i] != NULL; i++) {
+		egg_warning ("need to coldplug %s", transaction_ids[i]);
+	}
+	g_strfreev (transaction_ids);
 
 	/* only print state when verbose */
 	if (verbose)
@@ -336,8 +301,8 @@ main (int argc, char *argv[])
 	g_main_loop_run (loop);
 
 	g_object_unref (control);
+	g_object_unref (tlist);
 	g_object_unref (client);
-	g_ptr_array_unref (array);
 out:
 	return retval;
 }
diff --git a/lib/packagekit-glib2/Makefile.am b/lib/packagekit-glib2/Makefile.am
index 22ca7c5..e34ed06 100644
--- a/lib/packagekit-glib2/Makefile.am
+++ b/lib/packagekit-glib2/Makefile.am
@@ -48,6 +48,7 @@ libpackagekit_glib2_include_HEADERS =				\
 	pk-results.h						\
 	pk-service-pack.h					\
 	pk-task.h						\
+	pk-transaction-list.h					\
 	pk-version.h						\
 	$(NULL)
 
@@ -93,6 +94,8 @@ libpackagekit_glib2_la_SOURCES =				\
 	pk-item.h						\
 	pk-task.c						\
 	pk-task.h						\
+	pk-transaction-list.c					\
+	pk-transaction-list.h					\
 	pk-version.h						\
 	$(NULL)
 
diff --git a/lib/packagekit-glib2/packagekit.h b/lib/packagekit-glib2/packagekit.h
index 10e9c1e..8859a20 100644
--- a/lib/packagekit-glib2/packagekit.h
+++ b/lib/packagekit-glib2/packagekit.h
@@ -39,6 +39,7 @@
 #include <packagekit-glib2/pk-results.h>
 #include <packagekit-glib2/pk-service-pack.h>
 #include <packagekit-glib2/pk-task.h>
+#include <packagekit-glib2/pk-transaction-list.h>
 #include <packagekit-glib2/pk-version.h>
 
 #undef __PACKAGEKIT_H_INSIDE__
diff --git a/lib/packagekit-glib2/pk-self-test.c b/lib/packagekit-glib2/pk-self-test.c
index 3e6cf50..e5060d2 100644
--- a/lib/packagekit-glib2/pk-self-test.c
+++ b/lib/packagekit-glib2/pk-self-test.c
@@ -40,6 +40,7 @@
 #include "pk-task.h"
 #include "pk-task-text.h"
 #include "pk-task-wrapper.h"
+#include "pk-transaction-list.h"
 #include "pk-version.h"
 
 int
@@ -64,6 +65,7 @@ main (int argc, char **argv)
 	pk_results_test (test);
 	pk_package_test (test);
 	pk_control_test (test);
+	pk_transaction_list_test (test);
 	pk_client_test (test);
 	pk_package_sack_test (test);
 	pk_task_test (test);
diff --git a/lib/packagekit-glib2/pk-transaction-list.c b/lib/packagekit-glib2/pk-transaction-list.c
new file mode 100644
index 0000000..79cdab6
--- /dev/null
+++ b/lib/packagekit-glib2/pk-transaction-list.c
@@ -0,0 +1,378 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2009 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * SECTION:pk-task-list
+ * @short_description: A nice way to keep a list of the jobs being processed
+ *
+ * These provide a good way to keep a list of the jobs being processed so we
+ * can see what type of jobs and thier status easily.
+ */
+
+#include "config.h"
+
+#include <glib-object.h>
+#include <gio/gio.h>
+
+#include "egg-debug.h"
+
+#include <packagekit-glib2/pk-transaction-list.h>
+#include <packagekit-glib2/pk-control.h>
+#include <packagekit-glib2/pk-common.h>
+
+static void     pk_transaction_list_finalize		(GObject         *object);
+
+#define PK_TRANSACTION_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_TRANSACTION_LIST, PkTransactionListPrivate))
+
+/**
+ * PkTransactionListPrivate:
+ *
+ * Private #PkTransactionList data
+ **/
+struct _PkTransactionListPrivate
+{
+	GPtrArray		*transaction_ids;
+	PkControl		*control;
+	GCancellable		*cancellable;
+};
+
+typedef enum {
+	SIGNAL_ADDED,
+	SIGNAL_REMOVED,
+	SIGNAL_LAST
+} PkSignals;
+
+static guint signals [SIGNAL_LAST] = { 0 };
+
+G_DEFINE_TYPE (PkTransactionList, pk_transaction_list, G_TYPE_OBJECT)
+
+/**
+ * pk_transaction_list_get_transaction_list_cb:
+ **/
+static void
+pk_transaction_list_get_transaction_list_cb (PkControl *control, GAsyncResult *res, PkTransactionList *tlist)
+{
+	GError *error = NULL;
+	gchar **list = NULL;
+	guint i, j;
+	gboolean ret;
+	const gchar *tid;
+	GPtrArray *array = tlist->priv->transaction_ids;
+
+	/* get the result */
+	list = pk_control_get_transaction_list_finish (control, res, &error);
+	if (list == NULL) {
+		egg_warning ("Failed to get transaction list: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	/* remove old entries */
+	for (i=0; i<array->len; i++) {
+		tid = g_ptr_array_index (array, i);
+
+		/* is in new list */
+		ret = FALSE;
+		for (j=0; list[j] != NULL; j++) {
+			ret = (g_strcmp0 (tid, list[j]) == 0);
+			if (ret)
+				break;
+		}
+
+		/* no, so remove from array */
+		if (!ret) {
+			egg_debug ("emit removed: %s", tid);
+			g_signal_emit (tlist, signals[SIGNAL_REMOVED], 0, tid);
+			g_ptr_array_remove_index (array, i);
+		}
+	}
+
+	/* add new entries */
+	for (i=0; list[i] != NULL; i++) {
+		g_print (" %i\t%s\n", i+1, list[i]);
+
+		/* check to see if tid is in array */
+		ret = FALSE;
+		for (j=0; j<array->len; j++) {
+			tid = g_ptr_array_index (array, j);
+			ret = (g_strcmp0 (tid, list[j]) == 0);
+			if (ret)
+				break;
+		}
+
+		/* no, so add to array */
+		if (!ret) {
+			egg_debug ("emit added: %s", list[i]);
+			g_signal_emit (tlist, signals[SIGNAL_ADDED], 0, list[i]);
+			g_ptr_array_add (array, g_strdup (list[i]));
+		}
+	}
+out:
+	g_strfreev (list);
+}
+
+/**
+ * pk_transaction_list_get_transaction_list:
+ **/
+static void
+pk_transaction_list_get_transaction_list (PkTransactionList *tlist)
+{
+	egg_debug ("refreshing task list");
+	pk_control_get_transaction_list_async (tlist->priv->control, tlist->priv->cancellable,
+					       (GAsyncReadyCallback) pk_transaction_list_get_transaction_list_cb, tlist);
+}
+
+/**
+ * pk_transaction_list_task_list_changed_cb:
+ **/
+static void
+pk_transaction_list_task_list_changed_cb (PkControl *control, PkTransactionList *tlist)
+{
+	pk_transaction_list_get_transaction_list (tlist);
+}
+
+/**
+ * pk_transaction_list_notify_connected_cb:
+ **/
+static void
+pk_transaction_list_notify_connected_cb (PkControl *control, GParamSpec *pspec, PkTransactionList *tlist)
+{
+	gboolean connected;
+	g_object_get (control, "connected", &connected, NULL);
+	if (connected)
+		pk_transaction_list_get_transaction_list (tlist);
+}
+
+/**
+ * pk_transaction_list_get_ids:
+ * @tlist: a valid #PkTransactionList instance
+ *
+ * Gets the string lists of transaction IDs recognised as pending, running or finished by the daemon.
+ *
+ * Return value: the array of strings, free with g_strfreev()
+ **/
+gchar **
+pk_transaction_list_get_ids (PkTransactionList *tlist)
+{
+	g_return_val_if_fail (PK_IS_TRANSACTION_LIST (tlist), NULL);
+	return pk_ptr_array_to_strv (tlist->priv->transaction_ids);
+}
+
+/**
+ * pk_transaction_list_class_init:
+ **/
+static void
+pk_transaction_list_class_init (PkTransactionListClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = pk_transaction_list_finalize;
+
+	/**
+	 * PkTransactionList::added:
+	 * @tlist: the #PkTransactionList instance that emitted the signal
+	 *
+	 * The ::added signal is emitted when a tid has been added to the transaction list
+	 **/
+	signals [SIGNAL_ADDED] =
+		g_signal_new ("added",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (PkTransactionListClass, added),
+			      NULL, NULL, g_cclosure_marshal_VOID__STRING,
+			      G_TYPE_NONE, 1, G_TYPE_STRING);
+
+	/**
+	 * PkTransactionList::removed:
+	 * @tlist: the #PkTransactionList instance that emitted the signal
+	 *
+	 * The ::removed signal is emitted when a tid has been removed from the transaction list
+	 **/
+	signals [SIGNAL_REMOVED] =
+		g_signal_new ("removed",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (PkTransactionListClass, added),
+			      NULL, NULL, g_cclosure_marshal_VOID__STRING,
+			      G_TYPE_NONE, 1, G_TYPE_STRING);
+
+	g_type_class_add_private (klass, sizeof (PkTransactionListPrivate));
+}
+
+/**
+ * pk_transaction_list_init:
+ **/
+static void
+pk_transaction_list_init (PkTransactionList *tlist)
+{
+	tlist->priv = PK_TRANSACTION_LIST_GET_PRIVATE (tlist);
+
+	/* get the changing job list */
+	tlist->priv->cancellable = g_cancellable_new ();
+	tlist->priv->control = pk_control_new ();
+	g_signal_connect (tlist->priv->control, "transaction-list-changed",
+			  G_CALLBACK (pk_transaction_list_task_list_changed_cb), tlist);
+	g_signal_connect (tlist->priv->control, "notify::connected",
+			  G_CALLBACK (pk_transaction_list_notify_connected_cb), tlist);
+
+	/* we maintain a local copy */
+	tlist->priv->transaction_ids = g_ptr_array_new_with_free_func (g_free);
+
+	/* force a refresh so we have valid data*/
+	pk_transaction_list_get_transaction_list (tlist);
+}
+
+/**
+ * pk_transaction_list_finalize:
+ **/
+static void
+pk_transaction_list_finalize (GObject *object)
+{
+	PkTransactionList *tlist;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (PK_IS_TRANSACTION_LIST (object));
+	tlist = PK_TRANSACTION_LIST (object);
+	g_return_if_fail (tlist->priv != NULL);
+
+	/* cancel if we're in the act */
+	g_cancellable_cancel (tlist->priv->cancellable);
+
+	/* unhook all signals */
+	g_signal_handlers_disconnect_by_func (tlist->priv->control, G_CALLBACK (pk_transaction_list_task_list_changed_cb), tlist);
+	g_signal_handlers_disconnect_by_func (tlist->priv->control, G_CALLBACK (pk_transaction_list_notify_connected_cb), tlist);
+
+	/* remove all watches */
+	g_ptr_array_unref (tlist->priv->transaction_ids);
+	g_object_unref (tlist->priv->control);
+	g_object_unref (tlist->priv->cancellable);
+
+	G_OBJECT_CLASS (pk_transaction_list_parent_class)->finalize (object);
+}
+
+/**
+ * pk_transaction_list_new:
+ **/
+PkTransactionList *
+pk_transaction_list_new (void)
+{
+	PkTransactionList *tlist;
+	tlist = g_object_new (PK_TYPE_TRANSACTION_LIST, NULL);
+	return PK_TRANSACTION_LIST (tlist);
+}
+
+/***************************************************************************
+ ***                          MAKE CHECK TESTS                           ***
+ ***************************************************************************/
+#ifdef EGG_TEST
+#include "egg-test.h"
+
+#include <packagekit-glib2/pk-client.h>
+#include <packagekit-glib2/pk-package-ids.h>
+
+guint _added = 0;
+guint _removed = 0;
+
+static void
+pk_transaction_list_test_resolve_cb (GObject *object, GAsyncResult *res, EggTest *test)
+{
+	PkClient *client = PK_CLIENT (object);
+	GError *error = NULL;
+	PkResults *results = NULL;
+	PkExitEnum exit_enum;
+
+	/* get the results */
+	results = pk_client_generic_finish (client, res, &error);
+	if (results == NULL) {
+		egg_test_failed (test, "failed to resolve: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	exit_enum = pk_results_get_exit_code (results);
+	if (exit_enum != PK_EXIT_ENUM_SUCCESS)
+		egg_test_failed (test, "failed to resolve success: %s", pk_exit_enum_to_text (exit_enum));
+out:
+	if (results != NULL)
+		g_object_unref (results);
+	egg_test_loop_quit (test);
+}
+
+static void
+pk_transaction_list_test_added_cb (PkTransactionList *tlist, const gchar *tid, EggTest *test)
+{
+	egg_warning ("added %s", tid);
+	_added++;
+}
+
+static void
+pk_transaction_list_test_removed_cb (PkTransactionList *tlist, const gchar *tid, EggTest *test)
+{
+	egg_warning ("removed %s", tid);
+	_removed++;
+}
+
+void
+pk_transaction_list_test (gpointer user_data)
+{
+	EggTest *test = (EggTest *) user_data;
+	PkTransactionList *tlist;
+	PkClient *client;
+	gchar **package_ids;
+
+	if (!egg_test_start (test, "PkTransactionList"))
+		return;
+
+	/************************************************************/
+	egg_test_title (test, "get transaction_list object");
+	tlist = pk_transaction_list_new ();
+	egg_test_assert (test, tlist != NULL);
+	g_signal_connect (tlist, "added",
+			  G_CALLBACK (pk_transaction_list_test_added_cb), test);
+	g_signal_connect (tlist, "removed",
+			  G_CALLBACK (pk_transaction_list_test_removed_cb), test);
+
+	/************************************************************/
+	egg_test_title (test, "get client");
+	client = pk_client_new ();
+	egg_test_assert (test, client != NULL);
+
+	/************************************************************/
+	egg_test_title (test, "resolve package");
+	package_ids = pk_package_ids_from_text ("glib2;2.14.0;i386;fedora&powertop");
+	pk_client_resolve_async (client, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), package_ids, NULL, NULL, NULL,
+				 (GAsyncReadyCallback) pk_transaction_list_test_resolve_cb, test);
+	g_strfreev (package_ids);
+	egg_test_loop_wait (test, 15000);
+	egg_test_success (test, "resolved in %i", egg_test_elapsed (test));
+
+	/************************************************************/
+	egg_test_title (test, "correct number of added signals");
+	egg_test_assert (test, (_added == 1));
+
+	/************************************************************/
+	egg_test_title (test, "correct number of removed signals");
+	egg_test_assert (test, (_removed == 0));
+
+	g_object_unref (tlist);
+	g_object_unref (client);
+	egg_test_end (test);
+}
+#endif
+
diff --git a/lib/packagekit-glib2/pk-transaction-list.h b/lib/packagekit-glib2/pk-transaction-list.h
new file mode 100644
index 0000000..7c9b8ac
--- /dev/null
+++ b/lib/packagekit-glib2/pk-transaction-list.h
@@ -0,0 +1,68 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2009 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (__PACKAGEKIT_H_INSIDE__) && !defined (PK_COMPILATION)
+#error "Only <packagekit.h> can be included directly."
+#endif
+
+#ifndef __PK_TRANSACTION_LIST_H
+#define __PK_TRANSACTION_LIST_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PK_TYPE_TRANSACTION_LIST		(pk_transaction_list_get_type ())
+#define PK_TRANSACTION_LIST(o)			(G_TYPE_CHECK_INSTANCE_CAST ((o), PK_TYPE_TRANSACTION_LIST, PkTransactionList))
+#define PK_TRANSACTION_LIST_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST((k), PK_TYPE_TRANSACTION_LIST, PkTransactionListClass))
+#define PK_IS_TRANSACTION_LIST(o)	 	(G_TYPE_CHECK_INSTANCE_TYPE ((o), PK_TYPE_TRANSACTION_LIST))
+#define PK_IS_TRANSACTION_LIST_CLASS(k)		(G_TYPE_CHECK_CLASS_TYPE ((k), PK_TYPE_TRANSACTION_LIST))
+#define PK_TRANSACTION_LIST_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), PK_TYPE_TRANSACTION_LIST, PkTransactionListClass))
+
+typedef struct _PkTransactionListPrivate	PkTransactionListPrivate;
+typedef struct _PkTransactionList		PkTransactionList;
+typedef struct _PkTransactionListClass		PkTransactionListClass;
+
+struct _PkTransactionList
+{
+	GObject				 parent;
+	PkTransactionListPrivate	*priv;
+};
+
+struct _PkTransactionListClass
+{
+	GObjectClass	parent_class;
+	void		(* added)			(PkTransactionList	*tlist,
+							 const gchar		*tid);
+	void		(* removed)			(PkTransactionList	*tlist,
+							 const gchar		*tid);
+};
+
+GType			 pk_transaction_list_get_type		(void);
+PkTransactionList	*pk_transaction_list_new		(void);
+void			 pk_transaction_list_test		(gpointer	 user_data);
+
+gchar			**pk_transaction_list_get_ids		(PkTransactionList	*tlist);
+
+G_END_DECLS
+
+#endif /* __PK_TRANSACTION_LIST_H */
+
commit ecb4e85f5b1fcc0a0abf7a8e2c36eb2d8defc5d8
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Sep 16 16:19:58 2009 +0100

    Don't include the global header in the daemon, it'll introduce name clashes in the future

diff --git a/configure.ac b/configure.ac
index 2151f79..2735182 100644
--- a/configure.ac
+++ b/configure.ac
@@ -786,7 +786,7 @@ AC_SUBST(PK_YUM_PLUGIN_DIR, "\$(prefix)/lib/yum-plugins")
 AC_SUBST(PK_DB_DIR, "\$(localstatedir)/lib/PackageKit")
 AC_SUBST(PK_LOG_DIR, "\$(localstatedir)/log")
 AC_SUBST(PK_PLUGIN_DIR, "\$(libdir)/packagekit-backend")
-AC_SUBST(PK_PLUGIN_CFLAGS, "-I\$(top_srcdir)/src -I\$(top_srcdir)/lib $GLIB_CFLAGS $DBUS_CFLAGS $GMODULE_CFLAGS")
+AC_SUBST(PK_PLUGIN_CFLAGS, "-I\$(top_srcdir)/src -I\$(top_srcdir)/lib -DPK_COMPILATION $GLIB_CFLAGS $DBUS_CFLAGS $GMODULE_CFLAGS")
 AC_SUBST(PK_PLUGIN_LIBS, "$GLIB_LIBS $DBUS_LIBS $GMODULE_LIBS")
 
 dnl ---------------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 6ab5a73..6e70433 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -28,6 +28,7 @@ INCLUDES =						\
 	-DPK_DATA=\"$(pkgdatadir)\"			\
 	-DLOCALSTATEDIR=\""$(localstatedir)"\"		\
 	-DPK_DB_DIR=\""$(PK_DB_DIR)"\"			\
+	-DPK_COMPILATION				\
 	-DEGG_LOG_FILE=\""$(PK_LOG_DIR)/PackageKit"\"	\
 	-DEGG_VERBOSE="\"PK_VERBOSE\""			\
 	-DEGG_LOGGING="\"PK_LOGGING\""			\
diff --git a/src/pk-backend-internal.h b/src/pk-backend-internal.h
index 5efa79e..4efdef6 100644
--- a/src/pk-backend-internal.h
+++ b/src/pk-backend-internal.h
@@ -23,7 +23,7 @@
 #define __PK_BACKEND_INTERNAL_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-bitfield.h>
 
 #include "pk-store.h"
 #include "pk-backend.h"
diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c
index 87c0d59..f3071f7 100644
--- a/src/pk-backend-spawn.c
+++ b/src/pk-backend-spawn.c
@@ -38,7 +38,9 @@
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
 #include <gmodule.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-common.h>
+#include <packagekit-glib2/pk-package-id.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 26be01e..34d5473 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -31,7 +31,10 @@
 #include <glib.h>
 #include <gmodule.h>
 #include <glib/gprintf.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-item.h>
+#include <packagekit-glib2/pk-package-id.h>
+#include <packagekit-glib2/pk-results.h>
+#include <packagekit-glib2/pk-common.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-backend.h b/src/pk-backend.h
index 4811088..2ec2d71 100644
--- a/src/pk-backend.h
+++ b/src/pk-backend.h
@@ -24,7 +24,8 @@
 
 #include <glib.h>
 #include <gmodule.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-bitfield.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-cache.c b/src/pk-cache.c
index 5c24fe5..9393c78 100644
--- a/src/pk-cache.c
+++ b/src/pk-cache.c
@@ -27,7 +27,6 @@
 
 #include <glib/gi18n.h>
 #include <glib.h>
-#include <packagekit-glib2/packagekit.h>
 
 #include "egg-debug.h"
 #include "pk-cache.h"
diff --git a/src/pk-cache.h b/src/pk-cache.h
index 6678841..03aa8e8 100644
--- a/src/pk-cache.h
+++ b/src/pk-cache.h
@@ -23,7 +23,6 @@
 #define __PK_CACHE_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
 
 G_BEGIN_DECLS
 
diff --git a/src/pk-conf.c b/src/pk-conf.c
index 6cc2fc8..91c5f53 100644
--- a/src/pk-conf.c
+++ b/src/pk-conf.c
@@ -31,7 +31,6 @@
 
 #include <glib/gi18n.h>
 #include <glib.h>
-#include <packagekit-glib2/packagekit.h>
 
 #include "egg-debug.h"
 #include "pk-conf.h"
diff --git a/src/pk-engine.c b/src/pk-engine.c
index 4ae9781..f3970b8 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -37,7 +37,7 @@
 #include <glib/gstdio.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-version.h>
 #ifdef USE_SECURITY_POLKIT
 #include <polkit/polkit.h>
 #endif
diff --git a/src/pk-file-monitor.c b/src/pk-file-monitor.c
index 7e5737e..ed9b23b 100644
--- a/src/pk-file-monitor.c
+++ b/src/pk-file-monitor.c
@@ -36,7 +36,6 @@
 
 #include <glib/gi18n.h>
 #include <gio/gio.h>
-#include <packagekit-glib2/packagekit.h>
 
 #include "egg-debug.h"
 #include "pk-conf.h"
diff --git a/src/pk-network-stack.h b/src/pk-network-stack.h
index 362c556..1f39f1d 100644
--- a/src/pk-network-stack.h
+++ b/src/pk-network-stack.h
@@ -22,7 +22,7 @@
 
 #include <glib-object.h>
 #include <dbus/dbus-glib.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
 
 G_BEGIN_DECLS
 
diff --git a/src/pk-network.h b/src/pk-network.h
index 60f71e6..8722a2a 100644
--- a/src/pk-network.h
+++ b/src/pk-network.h
@@ -30,7 +30,7 @@
 #define __PK_NETWORK_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
 
 G_BEGIN_DECLS
 
diff --git a/src/pk-polkit-action-lookup.c b/src/pk-polkit-action-lookup.c
index 5d1d415..5636474 100644
--- a/src/pk-polkit-action-lookup.c
+++ b/src/pk-polkit-action-lookup.c
@@ -23,7 +23,10 @@
 #include "config.h"
 
 #include <polkitbackend/polkitbackend.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-package-id.h>
+#include <packagekit-glib2/pk-package-ids.h>
+#include <packagekit-glib2/pk-common.h>
 #include <glib/gi18n-lib.h>
 
 #define PK_TYPE_ACTION_LOOKUP		(pk_action_lookup_get_type())
diff --git a/src/pk-spawn.c b/src/pk-spawn.c
index a088395..bb0e872 100644
--- a/src/pk-spawn.c
+++ b/src/pk-spawn.c
@@ -41,7 +41,6 @@
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
-#include <packagekit-glib2/packagekit.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-syslog.h b/src/pk-syslog.h
index b2612d8..ae1ab5e 100644
--- a/src/pk-syslog.h
+++ b/src/pk-syslog.h
@@ -23,7 +23,6 @@
 #define __PK_SYSLOG_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
 
 G_BEGIN_DECLS
 
diff --git a/src/pk-transaction-db.c b/src/pk-transaction-db.c
index ae7c806..b976bb5 100644
--- a/src/pk-transaction-db.c
+++ b/src/pk-transaction-db.c
@@ -35,7 +35,9 @@
 
 #include <glib/gi18n.h>
 #include <sqlite3.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-item.h>
+#include <packagekit-glib2/pk-common.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-transaction-db.h b/src/pk-transaction-db.h
index dc44243..451c451 100644
--- a/src/pk-transaction-db.h
+++ b/src/pk-transaction-db.h
@@ -23,7 +23,7 @@
 #define __PK_TRANSACTION_DB_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
 
 G_BEGIN_DECLS
 
diff --git a/src/pk-transaction-extra.c b/src/pk-transaction-extra.c
index 38c8c28..85fe95f 100644
--- a/src/pk-transaction-extra.c
+++ b/src/pk-transaction-extra.c
@@ -28,7 +28,11 @@
 #include <stdlib.h>
 #include <glib.h>
 #include <glib/gi18n.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-item.h>
+#include <packagekit-glib2/pk-package-id.h>
+#include <packagekit-glib2/pk-desktop.h>
+#include <packagekit-glib2/pk-common.h>
 #include <gio/gdesktopappinfo.h>
 #include <sqlite3.h>
 
diff --git a/src/pk-transaction-list.c b/src/pk-transaction-list.c
index a51da7b..b36db22 100644
--- a/src/pk-transaction-list.c
+++ b/src/pk-transaction-list.c
@@ -37,7 +37,7 @@
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-common.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
diff --git a/src/pk-transaction-list.h b/src/pk-transaction-list.h
index ffb25a9..9838895 100644
--- a/src/pk-transaction-list.h
+++ b/src/pk-transaction-list.h
@@ -23,7 +23,7 @@
 #define __PK_TRANSACTION_LIST_H
 
 #include <glib-object.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
 
 #include "pk-transaction.h"
 
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 9cfc6af..3821624 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -41,7 +41,12 @@
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-lowlevel.h>
 #include <gio/gio.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-common.h>
+#include <packagekit-glib2/pk-enum.h>
+#include <packagekit-glib2/pk-package-id.h>
+#include <packagekit-glib2/pk-package-ids.h>
+#include <packagekit-glib2/pk-results.h>
+#include <packagekit-glib2/pk-service-pack.h>
 #ifdef USE_SECURITY_POLKIT
 #include <polkit/polkit.h>
 #endif
diff --git a/src/pk-transaction.h b/src/pk-transaction.h
index a0aa8f2..99a8562 100644
--- a/src/pk-transaction.h
+++ b/src/pk-transaction.h
@@ -24,7 +24,7 @@
 
 #include <glib-object.h>
 #include <dbus/dbus-glib.h>
-#include <packagekit-glib2/packagekit.h>
+#include <packagekit-glib2/pk-enum.h>
 
 G_BEGIN_DECLS
 
commit 83dafaf7d1665d02de1ed4642aca26a68a8aa150
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Sep 16 14:49:21 2009 +0100

    glib2: Make PkControl cancel pending calls when cancelled

diff --git a/lib/packagekit-glib2/pk-control.c b/lib/packagekit-glib2/pk-control.c
index 71562ba..0e43d2f 100644
--- a/lib/packagekit-glib2/pk-control.c
+++ b/lib/packagekit-glib2/pk-control.c
@@ -109,6 +109,7 @@ typedef struct {
 	gchar			**transaction_list;
 	gchar			*daemon_state;
 	guint			 time;
+	gulong			 cancellable_id;
 	DBusGProxyCall		*call;
 	GCancellable		*cancellable;
 	GSimpleAsyncResult	*res;
@@ -151,6 +152,21 @@ pk_control_fixup_dbus_error (GError *error)
 		error->code = PK_CONTROL_ERROR_FAILED;
 }
 
+/**
+ * pk_control_cancellable_cancel_cb:
+ **/
+static void
+pk_control_cancellable_cancel_cb (GCancellable *cancellable, PkControlState *state)
+{
+	/* dbus method is pending now, just cancel both */
+	if (state->call != NULL) {
+		dbus_g_proxy_cancel_call (state->control->priv->proxy, state->call);
+		dbus_g_proxy_cancel_call (state->control->priv->proxy_props, state->call);
+		egg_debug ("cancelling, ended DBus call: %p", state->call);
+		state->call = NULL;
+	}
+}
+
 /***************************************************************************************************/
 
 /**
@@ -178,8 +194,10 @@ pk_control_get_tid_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_free (state->tid);
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
@@ -242,8 +260,10 @@ pk_control_get_tid_async (PkControl *control, GCancellable *cancellable, GAsyncR
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -316,8 +336,10 @@ pk_control_get_daemon_state_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_free (state->daemon_state);
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
@@ -380,8 +402,10 @@ pk_control_get_daemon_state_async (PkControl *control, GCancellable *cancellable
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -454,8 +478,10 @@ pk_control_set_proxy_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
 }
@@ -517,8 +543,10 @@ pk_control_set_proxy_async (PkControl *control, const gchar *proxy_http, const g
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -593,8 +621,10 @@ pk_control_get_transaction_list_state_finish (PkControlState *state, GError *err
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_strfreev (state->transaction_list);
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
@@ -657,8 +687,10 @@ pk_control_get_transaction_list_async (PkControl *control, GCancellable *cancell
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -731,8 +763,10 @@ pk_control_get_time_since_action_state_finish (PkControlState *state, GError *er
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
 }
@@ -802,8 +836,10 @@ pk_control_get_time_since_action_async (PkControl *control, PkRoleEnum role, GCa
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -878,8 +914,10 @@ pk_control_get_network_state_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
 }
@@ -948,8 +986,10 @@ pk_control_get_network_state_async (PkControl *control, GCancellable *cancellabl
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
 	state->network = PK_NETWORK_ENUM_UNKNOWN;
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
@@ -1021,8 +1061,10 @@ pk_control_can_authorize_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
 }
@@ -1092,8 +1134,10 @@ pk_control_can_authorize_async (PkControl *control, const gchar *action_id, GCan
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	state->authorize = PK_AUTHORIZE_ENUM_UNKNOWN;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
@@ -1167,8 +1211,10 @@ pk_control_get_properties_state_finish (PkControlState *state, GError *error)
 	g_simple_async_result_complete_in_idle (state->res);
 
 	/* deallocate */
-	if (state->cancellable != NULL)
+	if (state->cancellable != NULL) {
+		g_cancellable_disconnect (state->cancellable, state->cancellable_id);
 		g_object_unref (state->cancellable);
+	}
 	g_object_unref (state->res);
 	g_slice_free (PkControlState, state);
 }
@@ -1468,8 +1514,10 @@ pk_control_get_properties_async (PkControl *control, GCancellable *cancellable,
 	/* save state */
 	state = g_slice_new0 (PkControlState);
 	state->res = g_object_ref (res);
-	if (cancellable != NULL)
+	if (cancellable != NULL) {
 		state->cancellable = g_object_ref (cancellable);
+		state->cancellable_id = g_cancellable_connect (cancellable, G_CALLBACK (pk_control_cancellable_cancel_cb), state, NULL);
+	}
 	state->control = control;
 	g_object_add_weak_pointer (G_OBJECT (state->control), (gpointer) &state->control);
 
commit 8bc92d1e2b9e16e20aae1ea9deee6fe8c4dc4862
Author: Richard Hughes <richard at hughsie.com>
Date:   Wed Sep 16 09:13:35 2009 +0100

    bugfix: Ensure we invalidate the updates cache everytime the daemon sends updates-changed. Fixes rh#523593

diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 80d7717..9cfc6af 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -331,8 +331,6 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
 		return FALSE;
 	}
 
-	egg_debug ("invalidating caches");
-
 	/* copy this into the cache if we are getting updates */
 	if (transaction->priv->role == PK_ROLE_ENUM_GET_UPDATES) {
 		array = pk_results_get_package_array (transaction->priv->results);
@@ -340,16 +338,6 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
 		g_ptr_array_unref (array);
 	}
 
-	/* we unref the update cache if it exists */
-	if (transaction->priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
-	    transaction->priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES)
-		pk_cache_invalidate (transaction->priv->cache);
-
-	/* this has to be done as different repos might have different updates */
-	if (transaction->priv->role == PK_ROLE_ENUM_REPO_ENABLE ||
-	    transaction->priv->role == PK_ROLE_ENUM_REPO_SET_DATA)
-		pk_cache_invalidate (transaction->priv->cache);
-
 	/* could the update list have changed? */
 	if (transaction->priv->role == PK_ROLE_ENUM_UPDATE_SYSTEM ||
 	    transaction->priv->role == PK_ROLE_ENUM_UPDATE_PACKAGES ||
@@ -357,6 +345,11 @@ pk_transaction_finish_invalidate_caches (PkTransaction *transaction)
 	    transaction->priv->role == PK_ROLE_ENUM_REPO_ENABLE ||
 	    transaction->priv->role == PK_ROLE_ENUM_REPO_SET_DATA ||
 	    transaction->priv->role == PK_ROLE_ENUM_REFRESH_CACHE) {
+
+		/* the cached list is no longer valid */
+		egg_debug ("invalidating caches");
+		pk_cache_invalidate (transaction->priv->cache);
+
 		/* this needs to be done after a small delay */
 		pk_notify_wait_updates_changed (transaction->priv->notify,
 						PK_TRANSACTION_UPDATES_CHANGED_TIMEOUT);
commit 8e7378579d5f5460a7862ddc8eacd3b0bacfb5a1
Author: ruigo <ruigo at fedoraproject.org>
Date:   Tue Sep 15 23:48:01 2009 +0000

    Sending translation for Portuguese

diff --git a/po/pt.po b/po/pt.po
index 0844b8d..222d955 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-04 14:33+0000\n"
+"POT-Creation-Date: 2009-09-15 15:35+0000\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Rui Gouveia <rui.gouveia at globaltek.pt>\n"
 "Language-Team: pt <fedora-trans-pt at redhat.com>\n"
@@ -15,1206 +15,688 @@ msgstr ""
 "X-Poedit-Basepath: /home/ruigo/src/PackageKit/po/\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:238
-#: ../client/pk-console-test.c:147
+#: ../client/pk-console.c:143
 msgid "Transaction"
 msgstr "Transacção"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:240
-#: ../client/pk-console-test.c:149
+#: ../client/pk-console.c:145
 msgid "System time"
 msgstr "Hora do sistema"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "Succeeded"
 msgstr "Sucesso"
 
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "True"
 msgstr "Verdadeiro"
 
-#: ../client/pk-console.c:242
-#: ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "False"
 msgstr "Falso"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:244
-#: ../client/pk-console-test.c:153
-#: ../src/pk-polkit-action-lookup.c:327
+#: ../client/pk-console.c:149
+#: ../src/pk-polkit-action-lookup.c:333
 msgid "Role"
 msgstr "Função"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:249
-#: ../client/pk-console-test.c:158
+#: ../client/pk-console.c:154
 msgid "Duration"
 msgstr "Duração"
 
-#: ../client/pk-console.c:249
-#: ../client/pk-console-test.c:158
+#: ../client/pk-console.c:154
 msgid "(seconds)"
 msgstr "(segundos)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:253
-#: ../client/pk-console-test.c:162
-#: ../src/pk-polkit-action-lookup.c:341
+#: ../client/pk-console.c:158
+#: ../src/pk-polkit-action-lookup.c:347
 msgid "Command line"
 msgstr "Linha de comando"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:255
-#: ../client/pk-console-test.c:164
+#: ../client/pk-console.c:160
 msgid "User ID"
 msgstr "ID de Utilizador"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:262
-#: ../client/pk-console-test.c:171
+#: ../client/pk-console.c:167
 msgid "Username"
 msgstr "Nome do utilizador"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:266
-#: ../client/pk-console-test.c:175
+#: ../client/pk-console.c:171
 msgid "Real name"
 msgstr "Nome real"
 
-#: ../client/pk-console.c:274
-#: ../client/pk-console-test.c:183
+#: ../client/pk-console.c:179
 msgid "Affected packages:"
 msgstr "Pacotes afectados"
 
-#: ../client/pk-console.c:276
-#: ../client/pk-console-test.c:185
+#: ../client/pk-console.c:181
 msgid "Affected packages: None"
 msgstr "Pacotes afectados: Nenhum"
 
-#. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../client/pk-console.c:337
-#: ../client/pk-task-text.c:220
-msgid "The following packages have to be removed:"
-msgstr "Os seguintes pacotes precisam de ser removidos:"
-
-#. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../client/pk-console.c:340
-#: ../client/pk-task-text.c:225
-msgid "The following packages have to be installed:"
-msgstr "Os seguintes pacotes precisam de ser instalados:"
-
-#. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../client/pk-console.c:343
-#: ../client/pk-task-text.c:230
-msgid "The following packages have to be updated:"
-msgstr "Os seguintes pacotes precisam de ser actualizados:"
-
-#. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../client/pk-console.c:346
-#: ../client/pk-task-text.c:235
-msgid "The following packages have to be reinstalled:"
-msgstr "Os seguintes pacotes precisam de ser reinstalados:"
-
-#. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../client/pk-console.c:349
-#: ../client/pk-task-text.c:240
-msgid "The following packages have to be downgraded:"
-msgstr "Os seguintes pacotes precisam de ser desactualizados:"
-
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:363
-#: ../client/pk-console-test.c:205
+#: ../client/pk-console.c:201
 msgid "Distribution"
 msgstr "Distribuição"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:365
-#: ../client/pk-console-test.c:207
+#: ../client/pk-console.c:203
 msgid "Type"
 msgstr "Tipo"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#. TRANSLATORS: this is any summary text describing the upgrade
-#. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:367
-#: ../client/pk-console.c:390
-#: ../client/pk-console-test.c:209
-#: ../client/pk-console-test.c:230
+#: ../client/pk-console.c:205
+#: ../client/pk-console.c:226
 msgid "Summary"
 msgstr "Sumário"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:379
-#: ../client/pk-console-test.c:219
+#: ../client/pk-console.c:215
 msgid "Category"
 msgstr "Categori­a"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:381
-#: ../client/pk-console-test.c:221
+#: ../client/pk-console.c:217
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:384
-#: ../client/pk-console-test.c:224
+#: ../client/pk-console.c:220
 msgid "Parent"
 msgstr "Pai"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:387
-#: ../client/pk-console-test.c:227
+#: ../client/pk-console.c:223
 msgid "Name"
 msgstr "Nome"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:393
-#: ../client/pk-console-test.c:233
+#: ../client/pk-console.c:229
 msgid "Icon"
 msgstr "Ícone"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:408
-#: ../client/pk-console-test.c:247
+#: ../client/pk-console.c:243
 msgid "Details about the update:"
 msgstr "Detalhes acerca da actualização:"
 
 #. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:410
-#: ../client/pk-console-test.c:253
-#: ../client/pk-task-text.c:101
-#: ../client/pk-task-text.c:153
-#: ../src/pk-polkit-action-lookup.c:352
+#: ../client/pk-console.c:249
+#: ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../lib/packagekit-glib2/pk-task-text.c:172
+#: ../src/pk-polkit-action-lookup.c:358
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Pacote"
 msgstr[1] "Pacotes"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:413
-#: ../client/pk-console-test.c:256
+#: ../client/pk-console.c:252
 msgid "Updates"
 msgstr "Actualizações"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:417
-#: ../client/pk-console-test.c:260
+#: ../client/pk-console.c:256
 msgid "Obsoletes"
 msgstr "Torna absoleto"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:421
-#: ../client/pk-console-test.c:264
-#: ../client/pk-task-text.c:154
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:260
+#: ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "Fabricante"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:425
-#: ../client/pk-console-test.c:268
+#: ../client/pk-console.c:264
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:429
-#: ../client/pk-console-test.c:272
+#: ../client/pk-console.c:268
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:433
-#: ../client/pk-console-test.c:276
+#: ../client/pk-console.c:272
 msgid "Restart"
 msgstr "Reiniciar"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:437
-#: ../client/pk-console-test.c:280
+#: ../client/pk-console.c:276
 msgid "Update text"
 msgstr "Actualizar texto"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:441
-#: ../client/pk-console-test.c:284
+#: ../client/pk-console.c:280
 msgid "Changes"
 msgstr "Alterações"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:445
-#: ../client/pk-console-test.c:288
+#: ../client/pk-console.c:284
 msgid "State"
 msgstr "Estado"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:450
-#: ../client/pk-console-test.c:293
+#: ../client/pk-console.c:289
 msgid "Issued"
 msgstr "Emitido"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:455
-#: ../client/pk-console-test.c:298
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Actualizado"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:475
-#: ../client/pk-console-test.c:316
+#: ../client/pk-console.c:312
 msgid "Enabled"
 msgstr "Activado"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:478
-#: ../client/pk-console-test.c:319
+#: ../client/pk-console.c:315
 msgid "Disabled"
 msgstr "Inactivo"
 
-#: ../client/pk-console.c:555
-#: ../client/pk-console.c:557
-msgid "Percentage"
-msgstr "Percentagem"
-
-#: ../client/pk-console.c:557
-msgid "Unknown"
-msgstr "Desconhecido"
-
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:599
-#: ../client/pk-console-test.c:341
+#: ../client/pk-console.c:337
 msgid "System restart required by:"
 msgstr "Reinicialização do sistema requerida por:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:602
-#: ../client/pk-console-test.c:344
+#: ../client/pk-console.c:340
 msgid "Session restart required:"
 msgstr "Reinicialização da sessão requerida:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:605
-#: ../client/pk-console-test.c:347
+#: ../client/pk-console.c:343
 msgid "System restart (security) required by:"
 msgstr "Reinicialização do sistema (segurança) requerida por:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:608
-#: ../client/pk-console-test.c:350
+#: ../client/pk-console.c:346
 msgid "Session restart (security) required:"
 msgstr "Reinicialização da sessão (segurança) requerida:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:611
-#: ../client/pk-console-test.c:353
+#: ../client/pk-console.c:349
 msgid "Application restart required by:"
 msgstr "Reinicialização da aplicação requerida por:"
 
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:366
+msgid "Package description"
+msgstr "Descrição do pacote"
+
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:384
+msgid "Message:"
+msgstr "Mensagem:"
+
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:398
+msgid "No files"
+msgstr "Sem ficheiros"
+
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:403
+msgid "Package files"
+msgstr "Ficheiros do pacote"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:462
+msgid "Fatal error"
+msgstr "Erro fatal"
+
+#. TRANSLATORS: we failed, but there was no error set
+#: ../client/pk-console.c:475
+msgid "Transaction failed with no error"
+msgstr "A transacção falhou sem erro"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:480
+msgid "The transaction failed"
+msgstr "A transacção falhou"
+
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:666
-#: ../client/pk-console-test.c:702
+#: ../client/pk-console.c:554
 msgid "Please restart the computer to complete the update."
 msgstr "Por favor, reinicie o computador para completar a actualização."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:669
-#: ../client/pk-console-test.c:705
+#: ../client/pk-console.c:557
 msgid "Please logout and login to complete the update."
 msgstr "Por favor, termine e volte a iniciar a sessão para completar a actualização."
 
-#. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:672
-msgid "Please restart the application as it is being used."
-msgstr "Por favor, reinicie a aplicação para completar a actualização."
-
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:675
-#: ../client/pk-console-test.c:708
+#: ../client/pk-console.c:560
 msgid "Please restart the computer to complete the update as important security updates have been installed."
 msgstr "Por favor, reinicie o computador para completar a actualização, pois foram instaladas importantes actualizações de segurança."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:678
-#: ../client/pk-console-test.c:711
+#: ../client/pk-console.c:563
 msgid "Please logout and login to complete the update as important security updates have been installed."
 msgstr "Por favor, termine e volte a iniciar a sessão para completar a actualização, pois foram instaladas importantes actualizações de segurança."
 
-#. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:810
-#, c-format
-msgid "The package %s is already installed"
-msgstr "O pacote %s já está instalado"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:818
-#, c-format
-msgid "The package %s could not be installed: %s"
-msgstr "Não foi possível instalar o pacote %s: %s"
-
-#. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:844
-#: ../client/pk-console.c:892
-#: ../client/pk-console.c:916
-#: ../client/pk-console.c:964
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1173
-#: ../client/pk-console.c:1234
-#: ../client/pk-tools-common.c:63
-#: ../client/pk-tools-common.c:82
-#: ../client/pk-tools-common.c:90
-#, c-format
-msgid "Internal error: %s"
-msgstr "Erro interno: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#. ask the user
-#: ../client/pk-console.c:876
-#: ../client/pk-console.c:948
-#: ../client/pk-console.c:1266
-#: ../client/pk-task-text.c:299
-msgid "Proceed with changes?"
-msgstr "Continuar com as alterações?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:881
-#: ../client/pk-console.c:953
-msgid "The package install was canceled!"
-msgstr "A instalação dos pacotes foi cancelada!"
-
-#. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:900
-#: ../client/pk-console.c:1634
-#, c-format
-msgid "This tool could not install the packages: %s"
-msgstr "Esta ferramenta não conseguiu instalar os pacotes: %s"
-
-#. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:972
-#, c-format
-msgid "This tool could not install the files: %s"
-msgstr "Esta ferramenta não conseguiu instalar os ficheiros: %s"
-
-#. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:1028
-#, c-format
-msgid "This tool could not remove %s: %s"
-msgstr "Esta ferramenta não conseguiu remover %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1051
-#: ../client/pk-console.c:1089
-#: ../client/pk-console.c:1118
-#, c-format
-msgid "This tool could not remove the packages: %s"
-msgstr "Esta ferramenta não conseguiu remover os pacotes: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:1104
-msgid "Proceed with additional packages?"
-msgstr "Continuar com os pacotes adicionais?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1109
-msgid "The package removal was canceled!"
-msgstr "A remoção dos pacotes foi cancelada!"
-
-#. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:1150
-#, c-format
-msgid "This tool could not download the package %s as it could not be found"
-msgstr "Esta ferramenta não conseguiu transferir o pacote %s pois não o conseguiu encontrar"
-
-#. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:1181
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:584
 #, c-format
-msgid "This tool could not download the packages: %s"
-msgstr "Esta ferramenta não conseguiu transferir os pacotes: %s"
+msgid "This tool could not find any available package: %s"
+msgstr "Esta ferramenta não conseguiu encontrar nenhum pacote disponível: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1213
-#: ../client/pk-console.c:1225
-#: ../client/pk-console.c:1280
+#: ../client/pk-console.c:612
 #, c-format
-msgid "This tool could not update %s: %s"
-msgstr "Esta ferramenta não conseguiu actualizar %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1271
-msgid "The package update was canceled!"
-msgstr "A actualização dos pacotes foi cancelada!"
+msgid "This tool could not find the installed package: %s"
+msgstr "Esta ferramenta não conseguiu encontrar o pacote instalado: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1304
-#: ../client/pk-console.c:1312
+#: ../client/pk-console.c:640
+#: ../client/pk-console.c:668
 #, c-format
-msgid "This tool could not get the requirements for %s: %s"
-msgstr "Esta ferramenta não conseguiu obter os requisitos para %s: %s"
+msgid "This tool could not find the package: %s"
+msgstr "Esta ferramenta não conseguiu encontrar o pacote: %s"
 
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1334
-#: ../client/pk-console.c:1342
-#, c-format
-msgid "This tool could not get the dependencies for %s: %s"
-msgstr "Esta ferramenta não conseguiu obter as dependências para %s: %s"
-
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1364
-#: ../client/pk-console.c:1372
-#, c-format
-msgid "This tool could not get package details for %s: %s"
-msgstr "Esta ferramenta não conseguiu obter os detalhes para %s: %s"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1394
-#, c-format
-msgid "This tool could not find the files for %s: %s"
-msgstr "Esta ferramenta não conseguiu encontrar os ficheiros para %s: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1402
-#, c-format
-msgid "This tool could not get the file list for %s: %s"
-msgstr "Esta ferramenta não conseguiu obter a lista de ficheiros para %s: %s"
-
-#. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1424
-#, c-format
-msgid "File already exists: %s"
-msgstr "Ficheiro já existe: %s"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1429
-#: ../client/pk-console.c:1485
-#: ../client/pk-console.c:1560
-msgid "Getting package list"
-msgstr "A obter lista de pacotes"
-
-#. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1435
-#: ../client/pk-console.c:1491
-#: ../client/pk-console.c:1566
-#, c-format
-msgid "This tool could not get package list: %s"
-msgstr "Esta ferramenta não conseguiu obter a lista de pacotes: %s"
-
-#. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1446
-#, c-format
-msgid "Failed to save to disk"
-msgstr "A gravação para disco falhou"
-
-#. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1480
-#: ../client/pk-console.c:1555
-#, c-format
-msgid "File does not exist: %s"
-msgstr "Ficheiro não existe: %s"
-
-#. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1512
-msgid "Packages to add"
-msgstr "Pacotes para adicionar"
-
-#. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1520
-msgid "Packages to remove"
-msgstr "Pacotes para remover"
-
-#. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1588
-#, c-format
-msgid "No new packages need to be installed"
-msgstr "Não existem pacotes novos para instalar"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1594
-msgid "To install"
-msgstr "Para instalar"
-
-#. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1606
-msgid "Searching for package: "
-msgstr "Pesquisar por pacote:"
-
-#. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1610
-msgid "not found."
-msgstr "não encontrado."
-
-#. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1621
-#, c-format
-msgid "No packages can be found to install"
-msgstr "Não foram encontrados pacotes para instalar"
-
-#. TRANSLATORS: installing new packages from package list
-#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
-#: ../client/pk-console.c:1627
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
-#, c-format
-msgid "Installing packages"
-msgstr "A instalar pacotes"
-
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1663
-#, c-format
-msgid "This tool could not find the update details for %s: %s"
-msgstr "Esta ferramenta não conseguiu encontrar os detalhes de actualização para %s: %s"
-
-#. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1671
+#: ../client/pk-console.c:696
+#: ../client/pk-console.c:724
+#: ../client/pk-console.c:752
+#: ../client/pk-console.c:780
+#: ../client/pk-console.c:808
 #, c-format
-msgid "This tool could not get the update details for %s: %s"
-msgstr "Esta ferramenta não conseguiu obter os detalhes de actualização para %s: %s"
-
-#. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1702
-msgid "Error:"
-msgstr "Erro:"
-
-#. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1716
-#: ../client/pk-console-test.c:370
-msgid "Package description"
-msgstr "Descrição do pacote"
-
-#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:1732
-#: ../client/pk-console-test.c:388
-msgid "Message:"
-msgstr "Mensagem:"
-
-#. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1760
-#: ../client/pk-console-test.c:407
-msgid "Package files"
-msgstr "Ficheiros do pacote"
-
-#. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1768
-#: ../client/pk-console-test.c:402
-msgid "No files"
-msgstr "Sem ficheiros"
-
-#. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1791
-msgid "Repository signature required"
-msgstr "A assinatura do repositório é necessária"
-
-#. TRANSLATORS: This a prompt asking the user to import the security key
-#. ask the user
-#: ../client/pk-console.c:1801
-#: ../client/pk-task-text.c:113
-msgid "Do you accept this signature?"
-msgstr "Aceita esta assinatura?"
-
-#. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1805
-#: ../client/pk-task-text.c:117
-msgid "The signature was not accepted."
-msgstr "A assinatura não foi aceite."
-
-#. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1839
-msgid "End user license agreement required"
-msgstr "O acordo de licenciamento com o utilizador final é necessário"
-
-#. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1846
-msgid "Do you agree to this license?"
-msgstr "Concorda com esta licença?"
-
-#. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1850
-msgid "The license was refused."
-msgstr "A licença foi recusada."
+msgid "This tool could not find all the packages: %s"
+msgstr "Esta ferramenta não conseguiu encontrar todos os pacotes: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1879
-#: ../client/pk-console-test.c:968
+#: ../client/pk-console.c:837
 msgid "The daemon crashed mid-transaction!"
 msgstr "O daemon morreu a meio de uma transacção!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1932
-#: ../client/pk-console-test.c:1002
+#: ../client/pk-console.c:871
 msgid "PackageKit Console Interface"
 msgstr "Consola do PackaheKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1934
-#: ../client/pk-console-test.c:1004
+#: ../client/pk-console.c:873
 msgid "Subcommands:"
 msgstr "Sub-comandos:"
 
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:952
+msgid "Failed to get the time since this action was last completed"
+msgstr "Não foi possível obter a hora da última vez que esta acção foi concluída"
+
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:2027
-#: ../client/pk-console-test.c:1095
-#: ../client/pk-generate-pack.c:187
-#: ../client/pk-monitor.c:128
-#: ../contrib/command-not-found/pk-command-not-found.c:616
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:549
+#: ../client/pk-console.c:987
+#: ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:283
+#: ../contrib/command-not-found/pk-command-not-found.c:614
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293
 #: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Mostrar informação de depuração adicional"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:2030
-#: ../client/pk-console-test.c:1098
-#: ../client/pk-monitor.c:130
+#: ../client/pk-console.c:990
+#: ../client/pk-monitor.c:285
 msgid "Show the program version and exit"
 msgstr "Mostrar a versão da aplicação e terminar"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:2033
-#: ../client/pk-console-test.c:1101
+#: ../client/pk-console.c:993
 msgid "Set the filter, e.g. installed"
 msgstr "Configurar o filtro, exemplo, instalado"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:2036
-#: ../client/pk-console-test.c:1104
+#: ../client/pk-console.c:996
 msgid "Exit without waiting for actions to complete"
 msgstr "Sair sem esperar que as acções completem"
 
-#. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:2063
-msgid "This tool could not connect to system DBUS."
-msgstr "Esta ferramenta não conseguiu ligar ao sistema DBUS."
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1021
+msgid "Failed to contact PackageKit"
+msgstr "Falhou o contacto com o PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:2153
-#: ../client/pk-console-test.c:1179
+#: ../client/pk-console.c:1073
 msgid "The filter specified was invalid"
 msgstr "O filtro especificado era inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:2172
-#: ../client/pk-console-test.c:1198
+#: ../client/pk-console.c:1092
 msgid "A search type is required, e.g. name"
 msgstr "Um tipo de pesquisa é necessário. Por exemplo, nome"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:2179
-#: ../client/pk-console.c:2188
-#: ../client/pk-console.c:2197
-#: ../client/pk-console.c:2206
-#: ../client/pk-console-test.c:1205
-#: ../client/pk-console-test.c:1217
-#: ../client/pk-console-test.c:1229
-#: ../client/pk-console-test.c:1241
+#: ../client/pk-console.c:1099
+#: ../client/pk-console.c:1111
+#: ../client/pk-console.c:1123
+#: ../client/pk-console.c:1135
 msgid "A search term is required"
 msgstr "Um termo de pesquisa é necessário"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:2213
-#: ../client/pk-console-test.c:1251
+#: ../client/pk-console.c:1145
 msgid "Invalid search type"
 msgstr "Tipo de pesquisa inválida"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:2219
-msgid "A package name or filename to install is required"
-msgstr "É necessário um nome de pacote ou nome de ficheiro a instalar"
+#: ../client/pk-console.c:1151
+msgid "A package name to install is required"
+msgstr "É necessário indicar um nome de pacote a instalar"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1160
+msgid "A filename to install is required"
+msgstr "É necessário um nome de ficheiro a instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2228
-#: ../client/pk-console-test.c:1278
+#: ../client/pk-console.c:1172
 msgid "A type, key_id and package_id are required"
 msgstr "São necessários um tipo, id de chave e id de pacote"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:2237
-#: ../client/pk-console-test.c:1289
+#: ../client/pk-console.c:1183
 msgid "A package name to remove is required"
 msgstr "É necessário um nome de pacote para remover"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:2245
-#: ../client/pk-console-test.c:1298
+#: ../client/pk-console.c:1192
 msgid "A destination directory and the package names to download are required"
 msgstr "São necessários uma directoria de destino assim como os nomes dos pacotes a transferir"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:2252
-#: ../client/pk-console-test.c:1305
+#: ../client/pk-console.c:1199
 msgid "Directory not found"
 msgstr "Directório não encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2260
-#: ../client/pk-console-test.c:1314
+#: ../client/pk-console.c:1208
 msgid "A licence identifier (eula-id) is required"
 msgstr "É necessário um identificador de licença (eula-id)"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2270
-#: ../client/pk-console-test.c:1325
+#: ../client/pk-console.c:1219
 msgid "A transaction identifier (tid) is required"
 msgstr "É necessário um identificador de transacção (tid)"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2287
-#: ../client/pk-console-test.c:1346
+#: ../client/pk-console.c:1240
 msgid "A package name to resolve is required"
 msgstr "É necessário indicar um nome de pacote"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2296
-#: ../client/pk-console.c:2305
-#: ../client/pk-console-test.c:1357
-#: ../client/pk-console-test.c:1368
+#: ../client/pk-console.c:1251
+#: ../client/pk-console.c:1262
 msgid "A repository name is required"
 msgstr "É obrigatório um nome de repositório"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2314
-#: ../client/pk-console-test.c:1379
+#: ../client/pk-console.c:1273
 msgid "A repo name, parameter and value are required"
 msgstr "É necessário indicar um repositório, parâmetro e valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2328
-#: ../client/pk-console-test.c:1397
+#: ../client/pk-console.c:1290
 msgid "An action, e.g. 'update-system' is required"
 msgstr "É necessária uma acção, por exemplo 'update-system'"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2335
-#: ../client/pk-console-test.c:1404
+#: ../client/pk-console.c:1297
 msgid "A correct role is required"
 msgstr "É necessária uma função correcta"
 
-#. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2342
-#: ../client/pk-console-test.c:1411
-msgid "Failed to get the time since this action was last completed"
-msgstr "Não foi possível obter a hora da última vez que esta acção foi concluída"
-
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2352
-#: ../client/pk-console.c:2364
-#: ../client/pk-console.c:2373
-#: ../client/pk-console.c:2391
-#: ../client/pk-console.c:2400
-#: ../client/pk-console-test.c:1421
-#: ../client/pk-console-test.c:1436
-#: ../client/pk-console-test.c:1445
-#: ../client/pk-console-test.c:1465
-#: ../client/pk-console-test.c:1474
-#: ../client/pk-generate-pack.c:243
+#: ../client/pk-console.c:1307
+#: ../client/pk-console.c:1322
+#: ../client/pk-console.c:1331
+#: ../client/pk-console.c:1351
+#: ../client/pk-console.c:1360
+#: ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "É obrigatório um nome de pacote"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2382
-#: ../client/pk-console-test.c:1454
+#: ../client/pk-console.c:1340
 msgid "A package provide string is required"
 msgstr "É necessário especificar a string que define o que o pacote disponibiliza"
 
-#. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2409
-msgid "A list file name to create is required"
-msgstr "É necessário indicar o nome do ficheiro a criar com a lista"
-
-#. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2419
-#: ../client/pk-console.c:2429
-msgid "A list file to open is required"
-msgstr "É necessária uma lista de ficheiros"
-
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2483
-#: ../client/pk-console-test.c:1534
+#: ../client/pk-console.c:1420
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "A opção '%s' não é suportada"
 
-#. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2496
-msgid "Incorrect privileges for this operation"
-msgstr "Privilégios incorrectos para esta operação"
-
 #. TRANSLATORS: Generic failure of what they asked to do
-#. /* TRANSLATORS: User does not have permission to do this */
-#. g_print ("%s\n", _("Incorrect privileges for this operation"));
-#. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2499
-#: ../client/pk-console-test.c:1546
+#: ../client/pk-console.c:1430
 msgid "Command failed"
 msgstr "Comando falhou"
 
-#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-console-test.c:521
-#: ../client/pk-tools-common.c:131
-msgid "More than one package matches:"
-msgstr "Mais do que um pacote corresponde:"
-
-#. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-console-test.c:530
-#: ../client/pk-tools-common.c:138
-msgid "Please choose the correct package: "
-msgstr "Por favor, escolha o pacote correcto:"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:730
-#, c-format
-msgid "This tool could not find the available package: %s"
-msgstr "Esta ferramenta não conseguiu encontrar o pacote: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:758
-#, c-format
-msgid "This tool could not find the installed package: %s"
-msgstr "Esta ferramenta não conseguiu encontrar o pacote instalado: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:786
-#: ../client/pk-console-test.c:814
-#, c-format
-msgid "This tool could not find the package: %s"
-msgstr "Esta ferramenta não conseguiu encontrar o pacote: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console-test.c:842
-#: ../client/pk-console-test.c:868
-#: ../client/pk-console-test.c:894
-#: ../client/pk-console-test.c:920
-#: ../client/pk-console-test.c:946
-#, c-format
-msgid "This tool could not find all the packages: %s"
-msgstr "Esta ferramenta não conseguiu encontrar todos os pacotes: %s"
-
-#. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console-test.c:1257
-msgid "A package name to install is required"
-msgstr "É necessário indicar um nome de pacote a instalar"
-
-#. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console-test.c:1266
-msgid "A filename to install is required"
-msgstr "É necessário um nome de ficheiro a instalar"
-
-#. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:103
-msgid "Downloading"
-msgstr "A transferir"
-
-#. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:123
-msgid "Downloading packages"
-msgstr "A transferir pacotes"
-
-#. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:128
-msgid "Downloading dependencies"
-msgstr "A transferir dependências"
-
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:190
+#: ../client/pk-generate-pack.c:225
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Indique o nome do ficheiro para a lista de dependências a excluir"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:193
+#: ../client/pk-generate-pack.c:228
 msgid "The output file or directory (the current directory is used if ommitted)"
 msgstr "O ficheiro ou directório de destino (se omitido, é utilizado o directório actual)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:196
+#: ../client/pk-generate-pack.c:231
 msgid "The package to be put into the service pack"
 msgstr "O pacote para colocar no \"service pack\""
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:199
+#: ../client/pk-generate-pack.c:234
 msgid "Put all updates available in the service pack"
 msgstr "Colocar todas as actualizações disponíveis no \"service pack\""
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:227
+#: ../client/pk-generate-pack.c:269
 msgid "Neither --package or --updates option selected."
 msgstr "Nenhuma das opções, --package ou --updates, foi seleccionada."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:235
+#: ../client/pk-generate-pack.c:277
 msgid "Both options selected."
 msgstr "Seleccionou ambas as opções"
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:251
+#: ../client/pk-generate-pack.c:293
 msgid "A output directory or file name is required"
 msgstr "É necessário um directório de destino ou nome de ficheiro"
 
+#. TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:311
+msgid "The dameon failed to startup"
+msgstr "O serviço falhou o arranque"
+
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:269
-#: ../client/pk-generate-pack.c:275
+#: ../client/pk-generate-pack.c:322
+#: ../client/pk-generate-pack.c:328
 msgid "The package manager cannot perform this type of operation."
 msgstr "O gestor de pacotes não pode realizar este tipo de operação."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:282
+#: ../client/pk-generate-pack.c:335
 msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
 msgstr "\"Service packs\" não podem ser criados pois o PackageKit não foi criado com suporte a libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:293
+#: ../client/pk-generate-pack.c:346
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Se especificar um ficheiro, o nome do \"service pack\" tem de terminar com"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:309
+#: ../client/pk-generate-pack.c:362
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Um \"service pack\" com esse nome já existe. Deseja substituí-lo?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:312
+#: ../client/pk-generate-pack.c:365
 msgid "The pack was not overwritten."
 msgstr "O \"service pack\" não foi substituído."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:325
+#: ../client/pk-generate-pack.c:378
 msgid "Failed to create directory:"
 msgstr "Criação da directoria falhou:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:335
+#: ../client/pk-generate-pack.c:390
 msgid "Failed to open package list."
 msgstr "Impossível abrir a lista de pacotes"
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:346
+#: ../client/pk-generate-pack.c:399
 msgid "Finding package name."
 msgstr "A procurar o nome do pacote."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:350
+#: ../client/pk-generate-pack.c:403
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Não foi possível encontrar o pacote '%s': %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:367
+#: ../client/pk-generate-pack.c:411
 msgid "Creating service pack..."
 msgstr "A criar o \"service pack\"..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:374
+#: ../client/pk-generate-pack.c:426
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "\"Service pack\" criado '%s'"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:379
+#: ../client/pk-generate-pack.c:431
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Não foi possível criar '%s': %s"
 
+#: ../client/pk-monitor.c:205
+msgid "Failed to get transaction list"
+msgstr "Falha ao obter a lista da transacção"
+
+#: ../client/pk-monitor.c:236
+msgid "Failed to get daemon state"
+msgstr "Falha ao obter o estado do serviço"
+
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:146
+#: ../client/pk-monitor.c:300
 msgid "PackageKit Monitor"
 msgstr "Monitorizar o PackageKit"
 
-#: ../client/pk-monitor.c:183
-msgid "Cannot show the list of transactions"
-msgstr "Impossível mostrar a lista de transacções"
-
-#. ask the user
-#: ../client/pk-task-text.c:64
-msgid "Do you want to allow installing of unsigned software?"
-msgstr "Deseja permitir a instalação de software não assinado?"
-
-#: ../client/pk-task-text.c:68
-msgid "The unsigned software will not be installed."
-msgstr "O software não assinado não será instalado."
-
-#: ../client/pk-task-text.c:100
-msgid "Software source signature required"
-msgstr "A assinatura do repositório é necessária"
-
-#: ../client/pk-task-text.c:102
-msgid "Software source name"
-msgstr "O nome da origem do software"
-
-#: ../client/pk-task-text.c:103
-msgid "Key URL"
-msgstr "URL Chave"
-
-#: ../client/pk-task-text.c:104
-msgid "Key user"
-msgstr "Utilizador Chave"
-
-#: ../client/pk-task-text.c:105
-msgid "Key ID"
-msgstr "ID da Chave"
-
-#: ../client/pk-task-text.c:106
-msgid "Key fingerprint"
-msgstr "Impressão Digital da Chave"
-
-#: ../client/pk-task-text.c:107
-msgid "Key Timestamp"
-msgstr "timestamp da Chave"
-
-#: ../client/pk-task-text.c:151
-msgid "End user licence agreement required"
-msgstr "O acordo de licenciamento com o utilizador final é necessário"
-
-#: ../client/pk-task-text.c:152
-msgid "EULA ID"
-msgstr "ID da EULA"
-
-#: ../client/pk-task-text.c:155
-msgid "Agreement"
-msgstr "Acordo"
-
-#. ask the user
-#: ../client/pk-task-text.c:161
-msgid "Do you accept this agreement?"
-msgstr "Aceita este acordo?"
-
-#: ../client/pk-task-text.c:165
-msgid "The agreement was not accepted."
-msgstr "O acordo não foi aceite."
-
-#: ../client/pk-task-text.c:194
-msgid "Media change required"
-msgstr "É necessário mudar o suporte"
-
-#: ../client/pk-task-text.c:195
-msgid "Media type"
-msgstr "Tipo de Suporte"
-
-#: ../client/pk-task-text.c:196
-msgid "Media ID"
-msgstr "ID do Suporte:"
-
-#: ../client/pk-task-text.c:197
-msgid "Text"
-msgstr "Texto"
-
-#. ask the user
-#: ../client/pk-task-text.c:201
-msgid "Please insert the correct media"
-msgstr "Por favor, insira o suporte correcto"
-
-#: ../client/pk-task-text.c:205
-msgid "The correct media was not inserted."
-msgstr "Não foi inserido o suporte correcto."
-
-#: ../client/pk-task-text.c:303
-msgid "The transaction did not proceed."
-msgstr "A transacção não prosseguiu."
-
-#: ../client/pk-text.c:50
-#, c-format
-msgid "Please enter a number from 1 to %i: "
-msgstr "Por favor insira um número de 1 a %i: "
-
-#. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:119
-#, c-format
-msgid "The package could not be found"
-msgstr "O pacote não foi encontrado"
-
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:466
+#: ../contrib/browser-plugin/pk-plugin-install.c:495
 msgid "Getting package information..."
 msgstr "A obter informação de pacotes..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:472
+#: ../contrib/browser-plugin/pk-plugin-install.c:501
 #, c-format
 msgid "Run %s"
 msgstr "Executar %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:478
+#: ../contrib/browser-plugin/pk-plugin-install.c:507
 msgid "Installed version"
 msgstr "Versão instalada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:486
+#: ../contrib/browser-plugin/pk-plugin-install.c:515
 #, c-format
 msgid "Run version %s now"
 msgstr "Executar a versão %s agora"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:492
+#: ../contrib/browser-plugin/pk-plugin-install.c:521
 msgid "Run now"
 msgstr "Executar agora"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:498
+#: ../contrib/browser-plugin/pk-plugin-install.c:527
 #, c-format
 msgid "Update to version %s"
 msgstr "Actualizar para a versão %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:504
+#: ../contrib/browser-plugin/pk-plugin-install.c:533
 #, c-format
 msgid "Install %s now"
 msgstr "Instalar %s agora"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:507
+#: ../contrib/browser-plugin/pk-plugin-install.c:536
 msgid "Version"
 msgstr "Versão"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:512
+#: ../contrib/browser-plugin/pk-plugin-install.c:541
 msgid "No packages found for your system"
 msgstr "Não foram encontrados pacotes para o seu sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:546
 msgid "Installing..."
 msgstr "A instalar..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:349
+#: ../contrib/command-not-found/pk-command-not-found.c:358
 msgid "Downloading details about the software sources."
 msgstr "A descarregar detalhes acerca das fontes do software."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:353
+#: ../contrib/command-not-found/pk-command-not-found.c:362
 msgid "Downloading filelists (this may take some time to complete)."
 msgstr "A descarregar lista de ficheiros (isto pode demorar algum tempo para concluir)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:357
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Waiting for package manager lock."
 msgstr "A esperar pelo bloqueio do gestor de pacotes."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:361
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Loading list of packages."
 msgstr "A carregar lista de pacotes."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:420
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Não foi possível encontrar o ficheiro"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:557
+#: ../contrib/command-not-found/pk-command-not-found.c:570
 msgid "Failed to launch:"
 msgstr "Incapaz de iniciar:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:632
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "PackageKit Command Not Found"
 msgstr "Comando PackageKit não encontrado"
 
@@ -1273,185 +755,194 @@ msgid "Please choose a package to install"
 msgstr "Por favor, escolha um pacote para instalar"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "A Iniciar instalação"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:406
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "Não foi possível encontrar o pacote %s, ou já está instalado: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:552
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:507
 msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "Não instala realmente nenhum pacote, apenas simula o que seria instalado."
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:555
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:510
 msgid "Do not install dependencies of the core packages"
 msgstr "Não instala dependências dos pacotes principais."
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:558
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:513
 msgid "Do not display information or progress"
 msgstr "Não apresenta informação ou progresso"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:576
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:528
 msgid "PackageKit Debuginfo Installer"
 msgstr "Instalador de Dados de Depuração do PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:588
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "ERRO: Especifique nomes de pacotes para instalar."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:622
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:572
 #, c-format
 msgid "Getting sources list"
 msgstr "A obter a lista de fontes"
 
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:582
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:741
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
+msgid "FAILED."
+msgstr "FALHOU."
+
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:680
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:715
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:799
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:843
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:910
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:954
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:597
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:637
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:672
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:756
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:867
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:643
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "foram encontradas %i fontes activas e %i desactivadas."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:650
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:607
 #, c-format
 msgid "Finding debugging sources"
 msgstr "A procurar fontes de depuração"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:683
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Foram encontrados %i repositórios desactivados de dados de depuração."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:647
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "A activar fontes de depuração"
 
-#. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:784
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:895
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:939
-msgid "FAILED."
-msgstr "FALHOU."
-
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:718
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Activadas %i fontes de depuração."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:725
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:682
 #, c-format
 msgid "Finding debugging packages"
 msgstr "A procurar pacotes de depuração"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:694
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Não foi possível encontrar o pacote %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:760
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:717
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Não foi possível encontrar o pacote de dados de depuração %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:745
 #, c-format
 msgid "Found no packages to install."
 msgstr "Não foram encontrados pacotes para instalar."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:802
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
 #, c-format
 msgid "Found %i packages:"
 msgstr "Encontrados %i pacotes:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:775
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Procura pacotes que dependem destes pacotes"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:831
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "Não foi possível encontrar pacotes de dependências: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:847
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:804
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Encontrados %i pacotes extra."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:851
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
 #, c-format
 msgid "No extra packages required."
 msgstr "Não são necessários pacotes extra."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:817
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Encontrados %i pacotes para instalar:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "No modo de simulação não se instalam pacotes"
 
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#, c-format
+msgid "Installing packages"
+msgstr "A instalar pacotes"
+
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:898
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:855
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "Não foi possível instalar pacotes: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:930
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "A desactivar fontes previamente activas"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:942
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "Não foi possível desactivar as fontes de dados de depuração: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:957
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Desactivadas %i fontes de depuração."
@@ -1510,7 +1001,7 @@ msgstr "Caminhos dos dispositivos"
 #. TRANSLATORS: tool that gets called when the device needs reloading after installing firmware
 #: ../contrib/device-rebind/pk-device-rebind.c:314
 msgid "PackageKit Device Reloader"
-msgstr ""
+msgstr "PackageKit Device Reloader"
 
 #. TRANSLATORS: user did not specify a valid device sysfs path
 #: ../contrib/device-rebind/pk-device-rebind.c:322
@@ -1554,6 +1045,443 @@ msgstr "Lista de Pacotes do PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit Service Pack"
 
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "Por favor insira um número de 1 a %i: "
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
+msgid "More than one package matches:"
+msgstr "Mais do que um pacote corresponde:"
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
+msgid "Please choose the correct package: "
+msgstr "Por favor, escolha o pacote correcto:"
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
+msgid "Unknown state"
+msgstr "Estado desconhecido"
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
+msgid "Starting"
+msgstr "A iniciar"
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
+msgid "Waiting in queue"
+msgstr "A aguardar na fila"
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
+msgid "Running"
+msgstr "A executar"
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
+msgid "Querying"
+msgstr "A consultar"
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
+msgid "Getting information"
+msgstr "A obter informação"
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
+msgid "Removing packages"
+msgstr "A remover pacotes"
+
+#. TRANSLATORS: transaction state, downloading package files
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+msgid "Downloading packages"
+msgstr "A transferir pacotes"
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
+msgid "Refreshing software list"
+msgstr "A actualizar a lista de software"
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
+msgid "Installing updates"
+msgstr "A instalar actualizações"
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
+msgid "Cleaning up packages"
+msgstr "A limpar pacotes"
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
+msgid "Obsoleting packages"
+msgstr "A tornar pacotes obsoletos"
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
+msgid "Resolving dependencies"
+msgstr "A resolver dependências"
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
+msgid "Checking signatures"
+msgstr "A verificar assinaturas"
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+msgid "Rolling back"
+msgstr "A reverter"
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
+msgid "Testing changes"
+msgstr "A testar alterações"
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
+msgid "Committing changes"
+msgstr "A aplicar alterações"
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
+msgid "Requesting data"
+msgstr "A pedir dados"
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
+msgid "Finished"
+msgstr "Terminado"
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
+msgid "Cancelling"
+msgstr "A cancelar"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
+msgid "Downloading repository information"
+msgstr "A transferir informação dos repositórios"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
+msgid "Downloading list of packages"
+msgstr "A transferir lista de pacotes"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
+msgid "Downloading file lists"
+msgstr "A transferir listas de ficheiros"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
+msgid "Downloading lists of changes"
+msgstr "A transferir listas de alterações"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
+msgid "Downloading groups"
+msgstr "A transferir grupos"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
+msgid "Downloading update information"
+msgstr "A transferir informações de actualizações"
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
+msgid "Repackaging files"
+msgstr "A empacotar ficheiros novamente"
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
+msgid "Loading cache"
+msgstr "A carregar cache"
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
+msgid "Scanning applications"
+msgstr "A analisar aplicações"
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
+msgid "Generating package lists"
+msgstr "A gerar lista de pacotes"
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
+msgid "Waiting for package manager lock"
+msgstr "A esperar pelo bloqueio do gestor de pacotes"
+
+#. TRANSLATORS: waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
+msgid "Waiting for authentication"
+msgstr "À espera de autenticação"
+
+#. TRANSLATORS: we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
+msgid "Updating running applications"
+msgstr "A actualizar aplicações em execução"
+
+#. TRANSLATORS: we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
+msgid "Checking applications in use"
+msgstr "A verificar aplicações em uso"
+
+#. TRANSLATORS: we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
+msgid "Checking libraries in use"
+msgstr "A verificar bibliotecas em uso"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
+msgid "Trivial"
+msgstr "Trivial"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
+msgid "Normal"
+msgstr "Normal"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
+msgid "Important"
+msgstr "Importante"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
+msgid "Security"
+msgstr "Segurança"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
+msgid "Bug fix "
+msgstr "Correcção de erro"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
+msgid "Enhancement"
+msgstr "Melhoramentos"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
+msgid "Blocked"
+msgstr "Bloqueado"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
+msgid "Installed"
+msgstr "Instalado"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
+msgid "Available"
+msgstr "Disponível"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
+msgid "Downloading"
+msgstr "A transferir"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
+msgid "Updating"
+msgstr "A actualizar"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+msgid "Installing"
+msgstr "A instalar"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+msgid "Removing"
+msgstr "A remover"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
+msgid "Cleaning up"
+msgstr "A limpar"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
+msgid "Obsoleting"
+msgstr "A torna obsoleto"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
+msgid "Reinstalling"
+msgstr "A reinstalar"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
+msgid "Downloaded"
+msgstr "Transferido"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
+msgid "Removed"
+msgstr "Removido"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
+msgid "Cleaned up"
+msgstr "Limpo"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
+msgid "Obsoleted"
+msgstr "obsoleto"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
+msgid "Reinstalled"
+msgstr "Reinstalado"
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:64
+msgid "Do you want to allow installing of unsigned software?"
+msgstr "Deseja permitir a instalação de software não assinado?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:69
+msgid "The unsigned software will not be installed."
+msgstr "O software não assinado não será instalado."
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:102
+msgid "Software source signature required"
+msgstr "A assinatura do repositório é necessária"
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:108
+msgid "Software source name"
+msgstr "O nome da origem do software"
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:111
+msgid "Key URL"
+msgstr "URL Chave"
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:114
+msgid "Key user"
+msgstr "Utilizador Chave"
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:117
+msgid "Key ID"
+msgstr "ID da Chave"
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:120
+msgid "Key fingerprint"
+msgstr "Impressão Digital da Chave"
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:123
+msgid "Key Timestamp"
+msgstr "timestamp da Chave"
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:129
+msgid "Do you accept this signature?"
+msgstr "Aceita esta assinatura?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:134
+msgid "The signature was not accepted."
+msgstr "A assinatura não foi aceite."
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:169
+msgid "End user licence agreement required"
+msgstr "O acordo de licenciamento com o utilizador final é necessário"
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:178
+msgid "Agreement"
+msgstr "Acordo"
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:184
+msgid "Do you accept this agreement?"
+msgstr "Aceita este acordo?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:189
+msgid "The agreement was not accepted."
+msgstr "O acordo não foi aceite."
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:219
+msgid "Media change required"
+msgstr "É necessário mudar o suporte"
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:222
+msgid "Media type"
+msgstr "Tipo de Suporte"
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:225
+msgid "Media label"
+msgstr "Etiqueta do suporte"
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:228
+msgid "Text"
+msgstr "Texto"
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:232
+msgid "Please insert the correct media"
+msgstr "Por favor, insira o suporte correcto"
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:237
+msgid "The correct media was not inserted."
+msgstr "Não foi inserido o suporte correcto."
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:252
+msgid "The following packages have to be removed:"
+msgstr "Os seguintes pacotes precisam de ser removidos:"
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:257
+msgid "The following packages have to be installed:"
+msgstr "Os seguintes pacotes precisam de ser instalados:"
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:262
+msgid "The following packages have to be updated:"
+msgstr "Os seguintes pacotes precisam de ser actualizados:"
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:267
+msgid "The following packages have to be reinstalled:"
+msgstr "Os seguintes pacotes precisam de ser reinstalados:"
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:272
+msgid "The following packages have to be downgraded:"
+msgstr "Os seguintes pacotes precisam de ser desactualizados:"
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:331
+msgid "Proceed with changes?"
+msgstr "Continuar com as alterações?"
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:336
+msgid "The transaction did not proceed."
+msgstr "A transacção não prosseguiu."
+
 #. SECURITY:
 #. - Normal users do not require admin authentication to accept new
 #. licence agreements.
@@ -1822,7 +1750,107 @@ msgid "Many packages"
 msgstr "Muitos pacotes"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:334
+#: ../src/pk-polkit-action-lookup.c:340
 msgid "Only trusted"
 msgstr "Apenas de confiança"
 
+#~ msgid "Percentage"
+#~ msgstr "Percentagem"
+#~ msgid "Please restart the application as it is being used."
+#~ msgstr "Por favor, reinicie a aplicação para completar a actualização."
+#~ msgid "The package %s is already installed"
+#~ msgstr "O pacote %s já está instalado"
+#~ msgid "The package %s could not be installed: %s"
+#~ msgstr "Não foi possível instalar o pacote %s: %s"
+#~ msgid "The package install was canceled!"
+#~ msgstr "A instalação dos pacotes foi cancelada!"
+#~ msgid "This tool could not install the packages: %s"
+#~ msgstr "Esta ferramenta não conseguiu instalar os pacotes: %s"
+#~ msgid "This tool could not install the files: %s"
+#~ msgstr "Esta ferramenta não conseguiu instalar os ficheiros: %s"
+#~ msgid "This tool could not remove %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu remover %s: %s"
+#~ msgid "This tool could not remove the packages: %s"
+#~ msgstr "Esta ferramenta não conseguiu remover os pacotes: %s"
+#~ msgid "Proceed with additional packages?"
+#~ msgstr "Continuar com os pacotes adicionais?"
+#~ msgid "The package removal was canceled!"
+#~ msgstr "A remoção dos pacotes foi cancelada!"
+#~ msgid "This tool could not download the package %s as it could not be found"
+#~ msgstr ""
+#~ "Esta ferramenta não conseguiu transferir o pacote %s pois não o conseguiu "
+#~ "encontrar"
+#~ msgid "This tool could not download the packages: %s"
+#~ msgstr "Esta ferramenta não conseguiu transferir os pacotes: %s"
+#~ msgid "This tool could not update %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu actualizar %s: %s"
+#~ msgid "The package update was canceled!"
+#~ msgstr "A actualização dos pacotes foi cancelada!"
+#~ msgid "This tool could not get the requirements for %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu obter os requisitos para %s: %s"
+#~ msgid "This tool could not get the dependencies for %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu obter as dependências para %s: %s"
+#~ msgid "This tool could not get package details for %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu obter os detalhes para %s: %s"
+#~ msgid "This tool could not find the files for %s: %s"
+#~ msgstr "Esta ferramenta não conseguiu encontrar os ficheiros para %s: %s"
+#~ msgid "This tool could not get the file list for %s: %s"
+#~ msgstr ""
+#~ "Esta ferramenta não conseguiu obter a lista de ficheiros para %s: %s"
+#~ msgid "File already exists: %s"
+#~ msgstr "Ficheiro já existe: %s"
+#~ msgid "This tool could not get package list: %s"
+#~ msgstr "Esta ferramenta não conseguiu obter a lista de pacotes: %s"
+#~ msgid "Failed to save to disk"
+#~ msgstr "A gravação para disco falhou"
+#~ msgid "File does not exist: %s"
+#~ msgstr "Ficheiro não existe: %s"
+#~ msgid "Packages to add"
+#~ msgstr "Pacotes para adicionar"
+#~ msgid "Packages to remove"
+#~ msgstr "Pacotes para remover"
+#~ msgid "No new packages need to be installed"
+#~ msgstr "Não existem pacotes novos para instalar"
+#~ msgid "Searching for package: "
+#~ msgstr "Pesquisar por pacote:"
+#~ msgid "not found."
+#~ msgstr "não encontrado."
+#~ msgid "No packages can be found to install"
+#~ msgstr "Não foram encontrados pacotes para instalar"
+#~ msgid "This tool could not find the update details for %s: %s"
+#~ msgstr ""
+#~ "Esta ferramenta não conseguiu encontrar os detalhes de actualização para %"
+#~ "s: %s"
+#~ msgid "This tool could not get the update details for %s: %s"
+#~ msgstr ""
+#~ "Esta ferramenta não conseguiu obter os detalhes de actualização para %s: %"
+#~ "s"
+#~ msgid "Error:"
+#~ msgstr "Erro:"
+#~ msgid "Repository signature required"
+#~ msgstr "A assinatura do repositório é necessária"
+#~ msgid "End user license agreement required"
+#~ msgstr "O acordo de licenciamento com o utilizador final é necessário"
+#~ msgid "Do you agree to this license?"
+#~ msgstr "Concorda com esta licença?"
+#~ msgid "The license was refused."
+#~ msgstr "A licença foi recusada."
+#~ msgid "This tool could not connect to system DBUS."
+#~ msgstr "Esta ferramenta não conseguiu ligar ao sistema DBUS."
+#~ msgid "A package name or filename to install is required"
+#~ msgstr "É necessário um nome de pacote ou nome de ficheiro a instalar"
+#~ msgid "A list file name to create is required"
+#~ msgstr "É necessário indicar o nome do ficheiro a criar com a lista"
+#~ msgid "A list file to open is required"
+#~ msgstr "É necessária uma lista de ficheiros"
+#~ msgid "Incorrect privileges for this operation"
+#~ msgstr "Privilégios incorrectos para esta operação"
+#~ msgid "Cannot show the list of transactions"
+#~ msgstr "Impossível mostrar a lista de transacções"
+#~ msgid "EULA ID"
+#~ msgstr "ID da EULA"
+#~ msgid "Media ID"
+#~ msgstr "ID do Suporte:"
+#~ msgid "The package could not be found"
+#~ msgstr "O pacote não foi encontrado"
+
commit 109f7b51bb278a915e7525c9b68147d4503a1fb5
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 17:39:37 2009 +0100

    trivial: fix minor build problem to fix make distcheck

diff --git a/lib/packagekit-glib/Makefile.am b/lib/packagekit-glib/Makefile.am
index 5573659..612ff20 100644
--- a/lib/packagekit-glib/Makefile.am
+++ b/lib/packagekit-glib/Makefile.am
@@ -38,11 +38,9 @@ libpackagekit_glib_include_HEADERS =				\
 	pk-category-obj.h					\
 	pk-client.h						\
 	pk-client-pool.h					\
-	pk-client-sync.h					\
 	pk-common.h						\
 	pk-connection.h						\
 	pk-control.h						\
-	pk-control-sync.h					\
 	pk-desktop.h						\
 	pk-details-obj.h					\
 	pk-distro-upgrade-obj.h					\
diff --git a/lib/packagekit-glib2/Makefile.am b/lib/packagekit-glib2/Makefile.am
index 5c82ece..22ca7c5 100644
--- a/lib/packagekit-glib2/Makefile.am
+++ b/lib/packagekit-glib2/Makefile.am
@@ -33,8 +33,10 @@ libpackagekit_glib2_include_HEADERS =				\
 	packagekit.h						\
 	pk-bitfield.h						\
 	pk-client.h						\
+	pk-client-sync.h					\
 	pk-common.h						\
 	pk-control.h						\
+	pk-control-sync.h					\
 	pk-desktop.h						\
 	pk-enum.h						\
 	pk-item.h						\
commit e36d0b543543a1efc2b45606a4b2560aac5577ac
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 17:17:47 2009 +0100

    glib2: unexport pk_strv_to_ptr_array() as there are no users

diff --git a/lib/packagekit-glib2/pk-common.c b/lib/packagekit-glib2/pk-common.c
index 42183ac..7fd594c 100644
--- a/lib/packagekit-glib2/pk-common.c
+++ b/lib/packagekit-glib2/pk-common.c
@@ -363,31 +363,6 @@ pk_ptr_array_to_strv (GPtrArray *array)
 	return strv_array;
 }
 
-/**
- * pk_strv_to_ptr_array:
- * @array: the gchar** array of strings
- *
- * Form a GPtrArray array of strings.
- * The data in the array is copied.
- *
- * Return value: the string array, or %NULL if invalid
- **/
-GPtrArray *
-pk_strv_to_ptr_array (gchar **array)
-{
-	guint i;
-	guint length;
-	GPtrArray *parray;
-
-	g_return_val_if_fail (array != NULL, NULL);
-
-	parray = g_ptr_array_new ();
-	length = g_strv_length (array);
-	for (i=0; i<length; i++)
-		g_ptr_array_add (parray, g_strdup (array[i]));
-	return parray;
-}
-
 /***************************************************************************
  ***                          MAKE CHECK TESTS                           ***
  ***************************************************************************/
diff --git a/lib/packagekit-glib2/pk-common.h b/lib/packagekit-glib2/pk-common.h
index f007d3f..84e332c 100644
--- a/lib/packagekit-glib2/pk-common.h
+++ b/lib/packagekit-glib2/pk-common.h
@@ -77,8 +77,6 @@ G_BEGIN_DECLS
 void		 pk_common_test				(gpointer	 user_data);
 gchar		**pk_ptr_array_to_strv			(GPtrArray	*array)
 							 G_GNUC_WARN_UNUSED_RESULT;
-GPtrArray	*pk_strv_to_ptr_array			(gchar		**array)
-							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		*pk_iso8601_present			(void)
 							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		*pk_iso8601_from_date			(const GDate	*date);
commit 3bccad5dd21900e4f4df0aa25907f889a5a8dc91
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 17:03:43 2009 +0100

    glib2: unexport pk_va_list_to_argv() as the daemon is the only user

diff --git a/lib/packagekit-glib2/pk-common.c b/lib/packagekit-glib2/pk-common.c
index 49a6f39..42183ac 100644
--- a/lib/packagekit-glib2/pk-common.c
+++ b/lib/packagekit-glib2/pk-common.c
@@ -388,72 +388,16 @@ pk_strv_to_ptr_array (gchar **array)
 	return parray;
 }
 
-/**
- * pk_va_list_to_argv:
- * @string_first: the first string
- * @args: any subsequant string's
- *
- * Form a composite string array of the va_list
- *
- * Return value: the string array, or %NULL if invalid
- **/
-gchar **
-pk_va_list_to_argv (const gchar *string_first, va_list *args)
-{
-	GPtrArray *ptr_array;
-	gchar **array;
-	gchar *value_temp;
-	guint i;
-
-	g_return_val_if_fail (args != NULL, NULL);
-	g_return_val_if_fail (string_first != NULL, NULL);
-
-	/* find how many elements we have in a temp array */
-	ptr_array = g_ptr_array_new ();
-	g_ptr_array_add (ptr_array, g_strdup (string_first));
-
-	/* process all the va_list entries */
-	for (i=0;; i++) {
-		value_temp = va_arg (*args, gchar *);
-		if (value_temp == NULL)
-			break;
-		g_ptr_array_add (ptr_array, g_strdup (value_temp));
-	}
-
-	/* convert the array to a strv type */
-	array = pk_ptr_array_to_strv (ptr_array);
-
-	/* get rid of the array, and free the contents */
-	g_ptr_array_foreach (ptr_array, (GFunc) g_free, NULL);
-	g_ptr_array_free (ptr_array, TRUE);
-	return array;
-}
-
 /***************************************************************************
  ***                          MAKE CHECK TESTS                           ***
  ***************************************************************************/
 #ifdef EGG_TEST
 #include "egg-test.h"
 
-static gchar **
-pk_va_list_to_argv_test (const gchar *first_element, ...)
-{
-	va_list args;
-	gchar **array;
-
-	/* get the argument list */
-	va_start (args, first_element);
-	array = pk_va_list_to_argv (first_element, &args);
-	va_end (args);
-
-	return array;
-}
-
 void
 pk_common_test (gpointer user_data)
 {
 	EggTest *test = (EggTest *) user_data;
-	gchar **array;
 	gchar *text_safe;
 	gchar *present;
 	GDate *date;
@@ -473,30 +417,6 @@ pk_common_test (gpointer user_data)
 	g_free (text_safe);
 
 	/************************************************************
-	 ****************      splitting va_list       **************
-	 ************************************************************/
-	egg_test_title (test, "va_list_to_argv single");
-	array = pk_va_list_to_argv_test ("richard", NULL);
-	if (g_strcmp0 (array[0], "richard") == 0 &&
-	    array[1] == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "incorrect array '%s'", array[0]);
-	g_strfreev (array);
-
-	/************************************************************/
-	egg_test_title (test, "va_list_to_argv triple");
-	array = pk_va_list_to_argv_test ("richard", "phillip", "hughes", NULL);
-	if (g_strcmp0 (array[0], "richard") == 0 &&
-	    g_strcmp0 (array[1], "phillip") == 0 &&
-	    g_strcmp0 (array[2], "hughes") == 0 &&
-	    array[3] == NULL)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "incorrect array '%s','%s','%s'", array[0], array[1], array[2]);
-	g_strfreev (array);
-
-	/************************************************************
 	 **************            iso8601           ****************
 	 ************************************************************/
 	egg_test_title (test, "get present iso8601");
@@ -505,11 +425,8 @@ pk_common_test (gpointer user_data)
 		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "present is NULL");
-
-	/************************************************************/
 	g_free (present);
 
-
 	/************************************************************
 	 **************        Date handling         ****************
 	 ************************************************************/
diff --git a/lib/packagekit-glib2/pk-common.h b/lib/packagekit-glib2/pk-common.h
index 060defb..f007d3f 100644
--- a/lib/packagekit-glib2/pk-common.h
+++ b/lib/packagekit-glib2/pk-common.h
@@ -79,9 +79,6 @@ gchar		**pk_ptr_array_to_strv			(GPtrArray	*array)
 							 G_GNUC_WARN_UNUSED_RESULT;
 GPtrArray	*pk_strv_to_ptr_array			(gchar		**array)
 							 G_GNUC_WARN_UNUSED_RESULT;
-gchar		**pk_va_list_to_argv			(const gchar	*string_first,
-							 va_list	*args)
-							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		*pk_iso8601_present			(void)
 							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		*pk_iso8601_from_date			(const GDate	*date);
diff --git a/src/pk-backend-spawn.c b/src/pk-backend-spawn.c
index 6de0d12..87c0d59 100644
--- a/src/pk-backend-spawn.c
+++ b/src/pk-backend-spawn.c
@@ -621,6 +621,47 @@ pk_backend_spawn_get_envp (PkBackendSpawn *backend_spawn)
 }
 
 /**
+ * pk_backend_spawn_va_list_to_argv:
+ * @string_first: the first string
+ * @args: any subsequant string's
+ *
+ * Form a composite string array of the va_list
+ *
+ * Return value: the string array, or %NULL if invalid
+ **/
+static gchar **
+pk_backend_spawn_va_list_to_argv (const gchar *string_first, va_list *args)
+{
+	GPtrArray *ptr_array;
+	gchar **array;
+	gchar *value_temp;
+	guint i;
+
+	g_return_val_if_fail (args != NULL, NULL);
+	g_return_val_if_fail (string_first != NULL, NULL);
+
+	/* find how many elements we have in a temp array */
+	ptr_array = g_ptr_array_new ();
+	g_ptr_array_add (ptr_array, g_strdup (string_first));
+
+	/* process all the va_list entries */
+	for (i=0;; i++) {
+		value_temp = va_arg (*args, gchar *);
+		if (value_temp == NULL)
+			break;
+		g_ptr_array_add (ptr_array, g_strdup (value_temp));
+	}
+
+	/* convert the array to a strv type */
+	array = pk_ptr_array_to_strv (ptr_array);
+
+	/* get rid of the array, and free the contents */
+	g_ptr_array_foreach (ptr_array, (GFunc) g_free, NULL);
+	g_ptr_array_free (ptr_array, TRUE);
+	return array;
+}
+
+/**
  * pk_backend_spawn_helper_va_list:
  **/
 static gboolean
@@ -637,7 +678,7 @@ pk_backend_spawn_helper_va_list (PkBackendSpawn *backend_spawn, const gchar *exe
 	g_return_val_if_fail (PK_IS_BACKEND_SPAWN (backend_spawn), FALSE);
 
 	/* convert to a argv */
-	argv = pk_va_list_to_argv (executable, args);
+	argv = pk_backend_spawn_va_list_to_argv (executable, args);
 	if (argv == NULL) {
 		egg_warning ("argv NULL");
 		return FALSE;
@@ -917,6 +958,20 @@ pk_backend_spawn_test_package_cb (PkBackend *backend, PkInfoEnum info,
 	number_packages++;
 }
 
+static gchar **
+pk_backend_spawn_va_list_to_argv_test (const gchar *first_element, ...)
+{
+	va_list args;
+	gchar **array;
+
+	/* get the argument list */
+	va_start (args, first_element);
+	array = pk_backend_spawn_va_list_to_argv (first_element, &args);
+	va_end (args);
+
+	return array;
+}
+
 void
 pk_backend_test_spawn (EggTest *test)
 {
@@ -926,12 +981,37 @@ pk_backend_test_spawn (EggTest *test)
 	guint refcount;
 	gboolean ret;
 	gchar *uri;
+	gchar **array;
 
 	loop = g_main_loop_new (NULL, FALSE);
 
 	if (!egg_test_start (test, "PkBackendSpawn"))
 		return;
 
+	/************************************************************
+	 ****************      splitting va_list       **************
+	 ************************************************************/
+	egg_test_title (test, "va_list_to_argv single");
+	array = pk_backend_spawn_va_list_to_argv_test ("richard", NULL);
+	if (g_strcmp0 (array[0], "richard") == 0 &&
+	    array[1] == NULL)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "incorrect array '%s'", array[0]);
+	g_strfreev (array);
+
+	/************************************************************/
+	egg_test_title (test, "va_list_to_argv triple");
+	array = pk_backend_spawn_va_list_to_argv_test ("richard", "phillip", "hughes", NULL);
+	if (g_strcmp0 (array[0], "richard") == 0 &&
+	    g_strcmp0 (array[1], "phillip") == 0 &&
+	    g_strcmp0 (array[2], "hughes") == 0 &&
+	    array[3] == NULL)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "incorrect array '%s','%s','%s'", array[0], array[1], array[2]);
+	g_strfreev (array);
+
 	/************************************************************/
 	egg_test_title (test, "get an backend_spawn");
 	backend_spawn = pk_backend_spawn_new ();
diff --git a/src/pk-transaction-db.c b/src/pk-transaction-db.c
index f4897e5..ae7c806 100644
--- a/src/pk-transaction-db.c
+++ b/src/pk-transaction-db.c
@@ -946,14 +946,6 @@ pk_transaction_db_test (EggTest *test)
 	if (!egg_test_start (test, "PkTransactionDb"))
 		return;
 
-	/************************************************************/
-	egg_test_title (test, "get difference in iso8601");
-	seconds = pk_transaction_db_iso8601_difference (present);
-	if (seconds == 2)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "seconds is wrong, %i", seconds);
-
 	/* remove the self check file */
 #if PK_BUILD_LOCAL
 	ret = g_file_test (PK_TRANSACTION_DB_FILE, G_FILE_TEST_EXISTS);
commit 1aa96411962e5d7446c3cb5220cf8787eaac7349
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 16:57:47 2009 +0100

    glib2: unexport pk_iso8601_difference() as the daemon is the only user

diff --git a/lib/packagekit-glib2/pk-common.c b/lib/packagekit-glib2/pk-common.c
index 81565c5..49a6f39 100644
--- a/lib/packagekit-glib2/pk-common.c
+++ b/lib/packagekit-glib2/pk-common.c
@@ -264,36 +264,6 @@ pk_iso8601_present (void)
 }
 
 /**
- * pk_iso8601_difference:
- * @isodate: The ISO8601 date to compare
- *
- * Return value: The difference in seconds between the iso8601 date and current
- **/
-guint
-pk_iso8601_difference (const gchar *isodate)
-{
-	GTimeVal timeval_then;
-	GTimeVal timeval_now;
-	gboolean ret;
-	guint time_s;
-
-	g_return_val_if_fail (isodate != NULL, 0);
-
-	/* convert date */
-	ret = g_time_val_from_iso8601 (isodate, &timeval_then);
-	if (!ret) {
-		egg_warning ("failed to parse '%s'", isodate);
-		return 0;
-	}
-	g_get_current_time (&timeval_now);
-
-	/* work out difference */
-	time_s = timeval_now.tv_sec - timeval_then.tv_sec;
-
-	return time_s;
-}
-
-/**
  * pk_iso8601_from_date:
  * @date: a %GDate to convert
  *
@@ -483,11 +453,9 @@ void
 pk_common_test (gpointer user_data)
 {
 	EggTest *test = (EggTest *) user_data;
-	gboolean ret;
 	gchar **array;
 	gchar *text_safe;
 	gchar *present;
-	guint seconds;
 	GDate *date;
 
 	if (!egg_test_start (test, "PkCommon"))
@@ -538,16 +506,6 @@ pk_common_test (gpointer user_data)
 	else
 		egg_test_failed (test, "present is NULL");
 
-	g_usleep (2000000);
-
-	/************************************************************/
-	egg_test_title (test, "get difference in iso8601");
-	seconds = pk_iso8601_difference (present);
-	if (seconds == 2)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "seconds is wrong, %i", seconds);
-
 	/************************************************************/
 	g_free (present);
 
diff --git a/lib/packagekit-glib2/pk-common.h b/lib/packagekit-glib2/pk-common.h
index 2600a01..060defb 100644
--- a/lib/packagekit-glib2/pk-common.h
+++ b/lib/packagekit-glib2/pk-common.h
@@ -84,7 +84,6 @@ gchar		**pk_va_list_to_argv			(const gchar	*string_first,
 							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		*pk_iso8601_present			(void)
 							 G_GNUC_WARN_UNUSED_RESULT;
-guint		 pk_iso8601_difference			(const gchar	*isodate);
 gchar		*pk_iso8601_from_date			(const GDate	*date);
 GDate		*pk_iso8601_to_date			(const gchar	*iso_date);
 gchar		*pk_get_distro_id			(void)
diff --git a/src/pk-transaction-db.c b/src/pk-transaction-db.c
index 2e9b664..f4897e5 100644
--- a/src/pk-transaction-db.c
+++ b/src/pk-transaction-db.c
@@ -195,6 +195,36 @@ pk_time_action_sqlite_callback (void *data, gint argc, gchar **argv, gchar **col
 }
 
 /**
+ * pk_transaction_db_iso8601_difference:
+ * @isodate: The ISO8601 date to compare
+ *
+ * Return value: The difference in seconds between the iso8601 date and current
+ **/
+static guint
+pk_transaction_db_iso8601_difference (const gchar *isodate)
+{
+	GTimeVal timeval_then;
+	GTimeVal timeval_now;
+	gboolean ret;
+	guint time_s;
+
+	g_return_val_if_fail (isodate != NULL, 0);
+
+	/* convert date */
+	ret = g_time_val_from_iso8601 (isodate, &timeval_then);
+	if (!ret) {
+		egg_warning ("failed to parse '%s'", isodate);
+		return 0;
+	}
+	g_get_current_time (&timeval_now);
+
+	/* work out difference */
+	time_s = timeval_now.tv_sec - timeval_then.tv_sec;
+
+	return time_s;
+}
+
+/**
  * pk_transaction_db_action_time_since:
  **/
 guint
@@ -227,7 +257,7 @@ pk_transaction_db_action_time_since (PkTransactionDb *tdb, PkRoleEnum role)
 	}
 
 	/* work out the difference */
-	time_ms = pk_iso8601_difference (timespec);
+	time_ms = pk_transaction_db_iso8601_difference (timespec);
 	egg_debug ("timespec=%s, difference=%i", timespec, time_ms);
 	g_free (timespec);
 
@@ -911,10 +941,19 @@ pk_transaction_db_test (EggTest *test)
 	guint ms;
 	gchar *proxy_http = NULL;
 	gchar *proxy_ftp = NULL;
+	guint seconds;
 
 	if (!egg_test_start (test, "PkTransactionDb"))
 		return;
 
+	/************************************************************/
+	egg_test_title (test, "get difference in iso8601");
+	seconds = pk_transaction_db_iso8601_difference (present);
+	if (seconds == 2)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "seconds is wrong, %i", seconds);
+
 	/* remove the self check file */
 #if PK_BUILD_LOCAL
 	ret = g_file_test (PK_TRANSACTION_DB_FILE, G_FILE_TEST_EXISTS);
commit 416883aa42628e3ca352443fb2cc0315001ff6fa
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 16:50:14 2009 +0100

    glib2: unexport pk_error_code_is_need_untrusted() as the daemon is the only user

diff --git a/lib/packagekit-glib2/pk-common.c b/lib/packagekit-glib2/pk-common.c
index dee88c3..81565c5 100644
--- a/lib/packagekit-glib2/pk-common.c
+++ b/lib/packagekit-glib2/pk-common.c
@@ -459,32 +459,6 @@ pk_va_list_to_argv (const gchar *string_first, va_list *args)
 	return array;
 }
 
-/**
- * pk_error_code_is_need_untrusted:
- * @error_code: the transactions #PkErrorCodeEnum
- *
- * Is this error could be handled with retrying with only_trusted %FALSE.
- *
- * Return value: if the error code suggests to try with only_trusted %FALSE
- **/
-gboolean
-pk_error_code_is_need_untrusted (PkErrorCodeEnum error_code)
-{
-	gboolean ret = FALSE;
-	switch (error_code) {
-		case PK_ERROR_ENUM_GPG_FAILURE:
-		case PK_ERROR_ENUM_BAD_GPG_SIGNATURE:
-		case PK_ERROR_ENUM_MISSING_GPG_SIGNATURE:
-		case PK_ERROR_ENUM_CANNOT_INSTALL_REPO_UNSIGNED:
-		case PK_ERROR_ENUM_CANNOT_UPDATE_REPO_UNSIGNED:
-			ret = TRUE;
-			break;
-		default:
-			break;
-	}
-	return ret;
-}
-
 /***************************************************************************
  ***                          MAKE CHECK TESTS                           ***
  ***************************************************************************/
diff --git a/lib/packagekit-glib2/pk-common.h b/lib/packagekit-glib2/pk-common.h
index 3c1878c..2600a01 100644
--- a/lib/packagekit-glib2/pk-common.h
+++ b/lib/packagekit-glib2/pk-common.h
@@ -89,7 +89,6 @@ gchar		*pk_iso8601_from_date			(const GDate	*date);
 GDate		*pk_iso8601_to_date			(const gchar	*iso_date);
 gchar		*pk_get_distro_id			(void)
 							 G_GNUC_WARN_UNUSED_RESULT;
-gboolean	 pk_error_code_is_need_untrusted	(PkErrorCodeEnum error_code);
 
 G_END_DECLS
 
diff --git a/src/pk-backend.c b/src/pk-backend.c
index cb5d7f5..26be01e 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -1639,6 +1639,27 @@ out:
 }
 
 /**
+ * pk_backend_error_code_is_need_untrusted:
+ **/
+static gboolean
+pk_backend_error_code_is_need_untrusted (PkErrorCodeEnum error_code)
+{
+	gboolean ret = FALSE;
+	switch (error_code) {
+		case PK_ERROR_ENUM_GPG_FAILURE:
+		case PK_ERROR_ENUM_BAD_GPG_SIGNATURE:
+		case PK_ERROR_ENUM_MISSING_GPG_SIGNATURE:
+		case PK_ERROR_ENUM_CANNOT_INSTALL_REPO_UNSIGNED:
+		case PK_ERROR_ENUM_CANNOT_UPDATE_REPO_UNSIGNED:
+			ret = TRUE;
+			break;
+		default:
+			break;
+	}
+	return ret;
+}
+
+/**
  * pk_backend_error_code:
  **/
 gboolean
@@ -1676,7 +1697,7 @@ pk_backend_error_code (PkBackend *backend, PkErrorCodeEnum error_code, const gch
 							     pk_backend_error_timeout_delay_cb, backend);
 
 	/* some error codes have a different exit code */
-	need_untrusted = pk_error_code_is_need_untrusted (error_code);
+	need_untrusted = pk_backend_error_code_is_need_untrusted (error_code);
 	if (need_untrusted)
 		pk_backend_set_exit_code (backend, PK_EXIT_ENUM_NEED_UNTRUSTED);
 	else
commit 468e2b0d1356b6552c694d97281443d3b9cbfa84
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 16:47:27 2009 +0100

    glib2: unexport pk_strvalidate() and pk_strsafe() as the daemon is the only user

diff --git a/lib/packagekit-glib2/pk-common.c b/lib/packagekit-glib2/pk-common.c
index d9d1f5a..dee88c3 100644
--- a/lib/packagekit-glib2/pk-common.c
+++ b/lib/packagekit-glib2/pk-common.c
@@ -364,99 +364,6 @@ out:
 }
 
 /**
- * pk_strvalidate_char:
- * @item: A single char to test
- *
- * Tests a char to see if it may be dangerous.
- *
- * Return value: %TRUE if the char is valid
- **/
-static gboolean
-pk_strvalidate_char (gchar item)
-{
-	switch (item) {
-	case '$':
-	case '`':
-	case '\'':
-	case '"':
-	case '^':
-	case '[':
-	case ']':
-	case '{':
-	case '}':
-	case '\\':
-	case '<':
-	case '>':
-		return FALSE;
-	}
-	return TRUE;
-}
-
-/**
- * pk_strsafe:
- * @text: The input text to make safe
- *
- * Replaces chars in the text that may be dangerous, or that may print
- * incorrectly. These chars include new lines, tabs and line feed, and are
- * replaced by spaces.
- *
- * Return value: the new string with no insane chars
- **/
-gchar *
-pk_strsafe (const gchar *text)
-{
-	gchar *text_safe;
-	gboolean ret;
-	const gchar *delimiters;
-
-	if (text == NULL)
-		return NULL;
-
-	/* is valid UTF8? */
-	ret = g_utf8_validate (text, -1, NULL);
-	if (!ret) {
-		egg_warning ("text '%s' was not valid UTF8!", text);
-		return NULL;
-	}
-
-	/* rip out any insane characters */
-	delimiters = "\\\f\r\t";
-	text_safe = g_strdup (text);
-	g_strdelimit (text_safe, delimiters, ' ');
-	return text_safe;
-}
-
-/**
- * pk_strvalidate:
- * @text: The text to check for validity
- *
- * Tests a string to see if it may be dangerous or invalid.
- *
- * Return value: %TRUE if the string is valid
- **/
-gboolean
-pk_strvalidate (const gchar *text)
-{
-	guint i;
-	guint length;
-
-	/* maximum size is 1024 */
-	length = egg_strlen (text, 1024);
-	if (length > 1024) {
-		egg_warning ("input too long: %u", length);
-		return FALSE;
-	}
-
-	for (i=0; i<length; i++) {
-		if (pk_strvalidate_char (text[i]) == FALSE) {
-			egg_warning ("invalid char '%c' in text!", text[i]);
-			return FALSE;
-		}
-	}
-	return TRUE;
-}
-
-/**
  * pk_ptr_array_to_strv:
  * @array: the GPtrArray of strings
  *
@@ -648,71 +555,6 @@ pk_common_test (gpointer user_data)
 	g_strfreev (array);
 
 	/************************************************************
-	 ****************        validate text         **************
-	 ************************************************************/
-	egg_test_title (test, "validate correct char 1");
-	ret = pk_strvalidate_char ('a');
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "validate correct char 2");
-	ret = pk_strvalidate_char ('~');
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "validate incorrect char");
-	ret = pk_strvalidate_char ('$');
-	egg_test_assert (test, !ret);
-
-	/************************************************************/
-	egg_test_title (test, "validate incorrect text");
-	ret = pk_strvalidate ("richard$hughes");
-	egg_test_assert (test, !ret);
-
-	/************************************************************/
-	egg_test_title (test, "validate correct text");
-	ret = pk_strvalidate ("richardhughes");
-	egg_test_assert (test, ret);
-
-	/************************************************************
-	 ****************       REPLACE CHARS      ******************
-	 ************************************************************/
-	egg_test_title (test, "test replace unsafe (okay)");
-	text_safe = pk_strsafe ("Richard Hughes");
-	if (g_strcmp0 (text_safe, "Richard Hughes") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "test replace UTF8 unsafe (okay)");
-	text_safe = pk_strsafe ("Gölas");
-	if (g_strcmp0 (text_safe, "Gölas") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "test replace unsafe (one invalid)");
-	text_safe = pk_strsafe ("Richard\rHughes");
-	if (g_strcmp0 (text_safe, "Richard Hughes") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "test replace unsafe (multiple invalid)");
-	text_safe = pk_strsafe (" Richard\rHughes\f");
-	if (g_strcmp0 (text_safe, " Richard Hughes ") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************
 	 **************            iso8601           ****************
 	 ************************************************************/
 	egg_test_title (test, "get present iso8601");
diff --git a/lib/packagekit-glib2/pk-common.h b/lib/packagekit-glib2/pk-common.h
index 27fd225..3c1878c 100644
--- a/lib/packagekit-glib2/pk-common.h
+++ b/lib/packagekit-glib2/pk-common.h
@@ -75,10 +75,6 @@ G_BEGIN_DECLS
 #define	PK_SYSTEM_PACKAGE_LIST_FILENAME	"/var/lib/PackageKit/system.package-list"
 
 void		 pk_common_test				(gpointer	 user_data);
-gboolean	 pk_strvalidate				(const gchar	*text)
-							 G_GNUC_WARN_UNUSED_RESULT;
-gchar		*pk_strsafe				(const gchar	*text)
-							 G_GNUC_WARN_UNUSED_RESULT;
 gchar		**pk_ptr_array_to_strv			(GPtrArray	*array)
 							 G_GNUC_WARN_UNUSED_RESULT;
 GPtrArray	*pk_strv_to_ptr_array			(gchar		**array)
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 9499d5f..cb5d7f5 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -858,6 +858,40 @@ pk_backend_package_emulate_finished_for_package (PkBackend *backend, const PkIte
 }
 
 /**
+ * pk_backend_strsafe:
+ * @text: The input text to make safe
+ *
+ * Replaces chars in the text that may be dangerous, or that may print
+ * incorrectly. These chars include new lines, tabs and line feed, and are
+ * replaced by spaces.
+ *
+ * Return value: the new string with no insane chars
+ **/
+static gchar *
+pk_backend_strsafe (const gchar *text)
+{
+	gchar *text_safe;
+	gboolean ret;
+	const gchar *delimiters;
+
+	if (text == NULL)
+		return NULL;
+
+	/* is valid UTF8? */
+	ret = g_utf8_validate (text, -1, NULL);
+	if (!ret) {
+		egg_warning ("text '%s' was not valid UTF8!", text);
+		return NULL;
+	}
+
+	/* rip out any insane characters */
+	delimiters = "\\\f\r\t";
+	text_safe = g_strdup (text);
+	g_strdelimit (text_safe, delimiters, ' ');
+	return text_safe;
+}
+
+/**
  * pk_backend_package:
  **/
 gboolean
@@ -879,7 +913,7 @@ pk_backend_package (PkBackend *backend, PkInfoEnum info, const gchar *package_id
 	}
 
 	/* replace unsafe chars */
-	summary_safe = pk_strsafe (summary);
+	summary_safe = pk_backend_strsafe (summary);
 
 	/* fix up available and installed when doing simulate roles */
 	if (backend->priv->role == PK_ROLE_ENUM_SIMULATE_INSTALL_FILES ||
@@ -991,7 +1025,7 @@ pk_backend_update_detail (PkBackend *backend, const gchar *package_id,
 	updated = pk_iso8601_to_date (updated_text);
 
 	/* replace unsafe chars */
-	update_text_safe = pk_strsafe (update_text);
+	update_text_safe = pk_backend_strsafe (update_text);
 
 	/* form PkItemUpdateDetail struct */
 	item = pk_item_update_detail_new (package_id, updates, obsoletes, vendor_url,
@@ -1217,7 +1251,7 @@ pk_backend_details (PkBackend *backend, const gchar *package_id,
 	}
 
 	/* replace unsafe chars */
-	description_safe = pk_strsafe (description);
+	description_safe = pk_backend_strsafe (description);
 
 	/* form PkItemDetails struct */
 	item = pk_item_details_new (package_id, license, group, description_safe, url, size);
@@ -1315,8 +1349,8 @@ pk_backend_distro_upgrade (PkBackend *backend, PkDistroUpgradeEnum type, const g
 	}
 
 	/* replace unsafe chars */
-	name_safe = pk_strsafe (name);
-	summary_safe = pk_strsafe (summary);
+	name_safe = pk_backend_strsafe (name);
+	summary_safe = pk_backend_strsafe (summary);
 
 	/* form PkItemDistroUpgrade struct */
 	item = pk_item_distro_upgrade_new (type, name_safe, summary_safe);
@@ -1501,7 +1535,7 @@ pk_backend_repo_detail (PkBackend *backend, const gchar *repo_id,
 	}
 
 	/* replace unsafe chars */
-	description_safe = pk_strsafe (description);
+	description_safe = pk_backend_strsafe (description);
 
 	/* form PkItemRepoDetail struct */
 	item = pk_item_repo_detail_new (repo_id, description, enabled);
@@ -1544,7 +1578,7 @@ pk_backend_category (PkBackend *backend, const gchar *parent_id, const gchar *ca
 	}
 
 	/* replace unsafe chars */
-	summary_safe = pk_strsafe (summary);
+	summary_safe = pk_backend_strsafe (summary);
 
 	/* form PkItemCategory struct */
 	item = pk_item_category_new (parent_id, cat_id, name, summary, icon);
@@ -2782,6 +2816,7 @@ pk_backend_test (EggTest *test)
 	PkBackend *backend;
 	PkConf *conf;
 	gchar *text;
+	gchar *text_safe;
 	gboolean ret;
 	const gchar *filename;
 	gboolean developer_mode;
@@ -2789,6 +2824,44 @@ pk_backend_test (EggTest *test)
 	if (!egg_test_start (test, "PkBackend"))
 		return;
 
+	/************************************************************
+	 ****************       REPLACE CHARS      ******************
+	 ************************************************************/
+	egg_test_title (test, "test replace unsafe (okay)");
+	text_safe = pk_backend_strsafe ("Richard Hughes");
+	if (g_strcmp0 (text_safe, "Richard Hughes") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "test replace UTF8 unsafe (okay)");
+	text_safe = pk_backend_strsafe ("Gölas");
+	if (g_strcmp0 (text_safe, "Gölas") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "test replace unsafe (one invalid)");
+	text_safe = pk_backend_strsafe ("Richard\rHughes");
+	if (g_strcmp0 (text_safe, "Richard Hughes") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "test replace unsafe (multiple invalid)");
+	text_safe = pk_backend_strsafe (" Richard\rHughes\f");
+	if (g_strcmp0 (text_safe, " Richard Hughes ") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace unsafe '%s'", text_safe);
+	g_free (text_safe);
+
 	/************************************************************/
 	egg_test_title (test, "get an backend");
 	backend = pk_backend_new ();
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index c4aafab..80d7717 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -1694,6 +1694,66 @@ pk_transaction_finished_idle_cb (PkTransaction *transaction)
 	return FALSE;
 }
 
+
+/**
+ * pk_transaction_strvalidate_char:
+ * @item: A single char to test
+ *
+ * Tests a char to see if it may be dangerous.
+ *
+ * Return value: %TRUE if the char is valid
+ **/
+static gboolean
+pk_transaction_strvalidate_char (gchar item)
+{
+	switch (item) {
+	case '$':
+	case '`':
+	case '\'':
+	case '"':
+	case '^':
+	case '[':
+	case ']':
+	case '{':
+	case '}':
+	case '\\':
+	case '<':
+	case '>':
+		return FALSE;
+	}
+	return TRUE;
+}
+
+/**
+ * pk_transaction_strvalidate:
+ * @text: The text to check for validity
+ *
+ * Tests a string to see if it may be dangerous or invalid.
+ *
+ * Return value: %TRUE if the string is valid
+ **/
+static gboolean
+pk_transaction_strvalidate (const gchar *text)
+{
+	guint i;
+	guint length;
+
+	/* maximum size is 1024 */
+	length = egg_strlen (text, 1024);
+	if (length > 1024) {
+		egg_warning ("input too long: %u", length);
+		return FALSE;
+	}
+
+	for (i=0; i<length; i++) {
+		if (pk_transaction_strvalidate_char (text[i]) == FALSE) {
+			egg_warning ("invalid char '%c' in text!", text[i]);
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
 /**
  * pk_transaction_search_check:
  **/
@@ -1731,7 +1791,7 @@ pk_transaction_search_check (const gchar *search, GError **error)
 				     "The search string length is too large");
 		return FALSE;
 	}
-	ret = pk_strvalidate (search);
+	ret = pk_transaction_strvalidate (search);
 	if (!ret) {
 		*error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid search term");
@@ -1761,7 +1821,7 @@ pk_transaction_filter_check (const gchar *filter, GError **error)
 	}
 
 	/* check for invalid input */
-	ret = pk_strvalidate (filter);
+	ret = pk_transaction_strvalidate (filter);
 	if (!ret) {
 		*error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid filter term: %s", filter);
@@ -2123,7 +2183,7 @@ pk_transaction_accept_eula (PkTransaction *transaction, const gchar *eula_id, DB
 	}
 
 	/* check for sanity */
-	ret = pk_strvalidate (eula_id);
+	ret = pk_transaction_strvalidate (eula_id);
 	if (!ret) {
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid input passed to daemon");
@@ -3458,7 +3518,7 @@ pk_transaction_install_signature (PkTransaction *transaction, const gchar *sig_t
 	}
 
 	/* check for sanity */
-	ret = pk_strvalidate (key_id);
+	ret = pk_transaction_strvalidate (key_id);
 	if (!ret) {
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid input passed to daemon");
@@ -3670,7 +3730,7 @@ pk_transaction_repo_enable (PkTransaction *transaction, const gchar *repo_id, gb
 	}
 
 	/* check for sanity */
-	ret = pk_strvalidate (repo_id);
+	ret = pk_transaction_strvalidate (repo_id);
 	if (!ret) {
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid input passed to daemon");
@@ -3730,7 +3790,7 @@ pk_transaction_repo_set_data (PkTransaction *transaction, const gchar *repo_id,
 	}
 
 	/* check for sanity */
-	ret = pk_strvalidate (repo_id);
+	ret = pk_transaction_strvalidate (repo_id);
 	if (!ret) {
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid input passed to daemon");
@@ -3816,7 +3876,7 @@ pk_transaction_resolve (PkTransaction *transaction, const gchar *filter,
 
 	/* check each package for sanity */
 	for (i=0; i<length; i++) {
-		ret = pk_strvalidate (packages[i]);
+		ret = pk_transaction_strvalidate (packages[i]);
 		if (!ret) {
 			error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 					     "Invalid input passed to daemon");
@@ -3878,7 +3938,7 @@ pk_transaction_rollback (PkTransaction *transaction, const gchar *transaction_id
 	}
 
 	/* check for sanity */
-	ret = pk_strvalidate (transaction_id);
+	ret = pk_transaction_strvalidate (transaction_id);
 	if (!ret) {
 		error = g_error_new (PK_TRANSACTION_ERROR, PK_TRANSACTION_ERROR_INPUT_INVALID,
 				     "Invalid input passed to daemon");
@@ -5338,6 +5398,33 @@ egg_test_transaction (EggTest *test)
 	egg_test_assert (test, ret);
 	g_clear_error (&error);
 
+	/************************************************************
+	 ****************        validate text         **************
+	 ************************************************************/
+	egg_test_title (test, "validate correct char 1");
+	ret = pk_transaction_strvalidate_char ('a');
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "validate correct char 2");
+	ret = pk_transaction_strvalidate_char ('~');
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "validate incorrect char");
+	ret = pk_transaction_strvalidate_char ('$');
+	egg_test_assert (test, !ret);
+
+	/************************************************************/
+	egg_test_title (test, "validate incorrect text");
+	ret = pk_transaction_strvalidate ("richard$hughes");
+	egg_test_assert (test, !ret);
+
+	/************************************************************/
+	egg_test_title (test, "validate correct text");
+	ret = pk_transaction_strvalidate ("richardhughes");
+	egg_test_assert (test, ret);
+
 	g_object_unref (transaction);
 
 	egg_test_end (test);
commit 154868ad1fd800cd02218743164703b8c39cb1ab
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 16:29:47 2009 +0100

    glib2: ship the -sync versions of PkClient and PkControl in the shared library, it's virtually impossible to write some client programs without them

diff --git a/client/pk-console.c b/client/pk-console.c
index 208de0d..e9e818c 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -1015,7 +1015,7 @@ main (int argc, char *argv[])
 
 	/* we need the roles early, as we only show the user only what they can do */
 	control = pk_control_new ();
-	ret = pk_control_get_properties_sync (control, &error);
+	ret = pk_control_get_properties (control, NULL, &error);
 	if (!ret) {
 		/* TRANSLATORS: we failed to contact the daemon */
 		g_print ("%s: %s\n", _("Failed to contact PackageKit"), error->message);
diff --git a/client/pk-generate-pack.c b/client/pk-generate-pack.c
index f22fa17..a96cc4a 100644
--- a/client/pk-generate-pack.c
+++ b/client/pk-generate-pack.c
@@ -305,7 +305,7 @@ main (int argc, char *argv[])
 
 	/* are we dumb and can't do some actions */
 	control = pk_control_new ();
-	ret = pk_control_get_properties_sync (control, &error);
+	ret = pk_control_get_properties (control, NULL, &error);
 	if (!ret) {
 		/* TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup */
 		g_print ("%s: %s\n", _("The dameon failed to startup"), error->message);
diff --git a/contrib/command-not-found/pk-command-not-found.c b/contrib/command-not-found/pk-command-not-found.c
index 1d14c3f..f9271c6 100644
--- a/contrib/command-not-found/pk-command-not-found.c
+++ b/contrib/command-not-found/pk-command-not-found.c
@@ -392,7 +392,7 @@ pk_cnf_search_file (PkClient *client_, PkBitfield filter, const gchar *filename,
 	const PkItemPackage *item;
 
 	/* get the list of possibles */
-	results = pk_client_search_file_sync (client_, filter, filename, cancellable,
+	results = pk_client_search_file (client_, filter, filename, cancellable,
 					      (PkProgressCallback) pk_cnf_progress_cb, NULL, error);
 	if (results == NULL)
 		goto out;
diff --git a/contrib/debuginfo-install/pk-debuginfo-install.c b/contrib/debuginfo-install/pk-debuginfo-install.c
index 7c8d353..4534687 100644
--- a/contrib/debuginfo-install/pk-debuginfo-install.c
+++ b/contrib/debuginfo-install/pk-debuginfo-install.c
@@ -130,7 +130,7 @@ pk_debuginfo_install_enable_repos (PkDebuginfoInstallPrivate *priv, GPtrArray *a
 		repo_id = g_ptr_array_index (array, i);
 
 		/* enable this repo */
-		results = pk_client_repo_enable_sync (priv->client, repo_id, enable, NULL, NULL, NULL, &error_local);
+		results = pk_client_repo_enable (priv->client, repo_id, enable, NULL, NULL, NULL, &error_local);
 		if (results == NULL) {
 			*error = g_error_new (1, 0, "failed to enable %s: %s", repo_id, error_local->message);
 			g_error_free (error_local);
@@ -240,7 +240,7 @@ pk_debuginfo_install_resolve_name_to_id (PkDebuginfoInstallPrivate *priv, const
 	names = g_strsplit (package_name, ";", -1);
 
 	/* resolve */
-	results = pk_client_resolve_sync (priv->client, pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST, -1), names, NULL, NULL, NULL, &error_local);
+	results = pk_client_resolve (priv->client, pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST, -1), names, NULL, NULL, NULL, &error_local);
 	if (results == NULL) {
 		*error = g_error_new (1, 0, "failed to resolve: %s", error_local->message);
 		g_error_free (error_local);
@@ -372,7 +372,7 @@ pk_debuginfo_install_add_deps (PkDebuginfoInstallPrivate *priv, GPtrArray *packa
 
 	/* get depends for them all, not adding dup's */
 	package_ids = pk_ptr_array_to_strv (packages_search);
-	results = pk_client_get_depends_sync (priv->client, PK_FILTER_ENUM_NONE, package_ids, TRUE, NULL, NULL, NULL, &error_local);
+	results = pk_client_get_depends (priv->client, PK_FILTER_ENUM_NONE, package_ids, TRUE, NULL, NULL, NULL, &error_local);
 	if (results == NULL) {
 		*error = g_error_new (1, 0, "failed to get_depends: %s", error_local->message);
 		g_error_free (error_local);
@@ -443,7 +443,7 @@ pk_debuginfo_install_get_repo_list (PkDebuginfoInstallPrivate *priv, GError **er
 	const PkItemRepoDetail *item;
 
 	/* get all repo details */
-	results = pk_client_get_repo_list_sync (priv->client, PK_FILTER_ENUM_NONE, NULL, NULL, NULL, &error_local);
+	results = pk_client_get_repo_list (priv->client, PK_FILTER_ENUM_NONE, NULL, NULL, NULL, &error_local);
 	if (results == NULL) {
 		*error = g_error_new (1, 0, "failed to get repo list: %s", error_local->message);
 		g_error_free (error_local);
diff --git a/lib/packagekit-glib/Makefile.am b/lib/packagekit-glib/Makefile.am
index 5f92eb5..5573659 100644
--- a/lib/packagekit-glib/Makefile.am
+++ b/lib/packagekit-glib/Makefile.am
@@ -33,29 +33,31 @@ libpackagekit_glib_includedir = $(includedir)/PackageKit/packagekit-glib
 
 libpackagekit_glib_include_HEADERS =				\
 	packagekit.h						\
-	pk-version.h						\
-	pk-desktop.h						\
+	pk-bitfield.h						\
+	pk-catalog.h						\
+	pk-category-obj.h					\
+	pk-client.h						\
+	pk-client-pool.h					\
+	pk-client-sync.h					\
+	pk-common.h						\
 	pk-connection.h						\
+	pk-control.h						\
+	pk-control-sync.h					\
+	pk-desktop.h						\
+	pk-details-obj.h					\
+	pk-distro-upgrade-obj.h					\
+	pk-enum.h						\
+	pk-obj-list.h						\
 	pk-package-id.h						\
 	pk-package-ids.h					\
+	pk-package-list.h					\
 	pk-package-obj.h					\
 	pk-require-restart-obj.h				\
-	pk-obj-list.h						\
-	pk-package-list.h					\
-	pk-category-obj.h					\
-	pk-update-detail-obj.h					\
-	pk-distro-upgrade-obj.h					\
-	pk-details-obj.h					\
-	pk-transaction-obj.h					\
-	pk-enum.h						\
-	pk-bitfield.h						\
-	pk-common.h						\
-	pk-client.h						\
-	pk-client-pool.h					\
-	pk-catalog.h						\
-	pk-control.h						\
-	pk-task-list.h						\
 	pk-service-pack.h					\
+	pk-task-list.h						\
+	pk-transaction-obj.h					\
+	pk-update-detail-obj.h					\
+	pk-version.h						\
 	$(NULL)
 
 libpackagekit_glib_la_SOURCES =					\
diff --git a/lib/packagekit-glib2/Makefile.am b/lib/packagekit-glib2/Makefile.am
index 256ebe3..5c82ece 100644
--- a/lib/packagekit-glib2/Makefile.am
+++ b/lib/packagekit-glib2/Makefile.am
@@ -59,10 +59,14 @@ libpackagekit_glib2_la_SOURCES =				\
 	pk-bitfield.h						\
 	pk-client.c						\
 	pk-client.h						\
+	pk-client-sync.c					\
+	pk-client-sync.h					\
 	pk-common.c						\
 	pk-common.h						\
 	pk-control.c						\
 	pk-control.h						\
+	pk-control-sync.c					\
+	pk-control-sync.h					\
 	pk-desktop.c						\
 	pk-desktop.h						\
 	pk-enum.c						\
@@ -116,8 +120,6 @@ libpackagekitprivate_a_SOURCES =				\
 	egg-string.c						\
 	egg-string.h						\
 	packagekit-private.h					\
-	pk-client-sync.c					\
-	pk-client-sync.h					\
 	pk-console-shared.c					\
 	pk-console-shared.h					\
 	pk-progress-bar.c					\
@@ -148,8 +150,6 @@ pk_self_test_SOURCES =						\
 	pk-task-text.h						\
 	pk-console-shared.c					\
 	pk-console-shared.h					\
-	pk-client-sync.c					\
-	pk-client-sync.h					\
 	pk-self-test.c						\
 	$(NULL)
 
diff --git a/lib/packagekit-glib2/packagekit-private.h b/lib/packagekit-glib2/packagekit-private.h
index 0c0c889..f52856d 100644
--- a/lib/packagekit-glib2/packagekit-private.h
+++ b/lib/packagekit-glib2/packagekit-private.h
@@ -24,7 +24,6 @@
 
 #define __PACKAGEKIT_PRIVATE_H_INSIDE__
 
-#include <packagekit-glib2/pk-client-sync.h>
 #include <packagekit-glib2/pk-task-sync.h>
 #include <packagekit-glib2/pk-task-text.h>
 #include <packagekit-glib2/pk-console-shared.h>
diff --git a/lib/packagekit-glib2/packagekit.h b/lib/packagekit-glib2/packagekit.h
index a495015..10e9c1e 100644
--- a/lib/packagekit-glib2/packagekit.h
+++ b/lib/packagekit-glib2/packagekit.h
@@ -25,8 +25,10 @@
 #define __PACKAGEKIT_H_INSIDE__
 
 #include <packagekit-glib2/pk-client.h>
+#include <packagekit-glib2/pk-client-sync.h>
 #include <packagekit-glib2/pk-common.h>
 #include <packagekit-glib2/pk-control.h>
+#include <packagekit-glib2/pk-control-sync.h>
 #include <packagekit-glib2/pk-desktop.h>
 #include <packagekit-glib2/pk-enum.h>
 #include <packagekit-glib2/pk-item.h>
diff --git a/lib/packagekit-glib2/pk-client-sync.c b/lib/packagekit-glib2/pk-client-sync.c
index d12d390..1521edc 100644
--- a/lib/packagekit-glib2/pk-client-sync.c
+++ b/lib/packagekit-glib2/pk-client-sync.c
@@ -54,7 +54,7 @@ pk_client_generic_finish_sync (PkClient *client, GAsyncResult *res, PkClientHelp
 }
 
 /**
- * pk_client_resolve_sync:
+ * pk_client_resolve:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @packages: an array of package names to resolve, e.g. "gnome-system-tools"
@@ -73,8 +73,8 @@ pk_client_generic_finish_sync (PkClient *client, GAsyncResult *res, PkClientHelp
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_resolve_sync (PkClient *client, PkBitfield filters, gchar **packages, GCancellable *cancellable,
-			PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_resolve (PkClient *client, PkBitfield filters, gchar **packages, GCancellable *cancellable,
+		   PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -103,7 +103,7 @@ pk_client_resolve_sync (PkClient *client, PkBitfield filters, gchar **packages,
 }
 
 /**
- * pk_client_search_name_sync:
+ * pk_client_search_name:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @search: free text to search for, for instance, "power"
@@ -121,8 +121,8 @@ pk_client_resolve_sync (PkClient *client, PkBitfield filters, gchar **packages,
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_search_name_sync (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_search_name (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -151,7 +151,7 @@ pk_client_search_name_sync (PkClient *client, PkBitfield filters, const gchar *s
 }
 
 /**
- * pk_client_search_details_sync:
+ * pk_client_search_details:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @search: free text to search for, for instance, "power"
@@ -170,8 +170,8 @@ pk_client_search_name_sync (PkClient *client, PkBitfield filters, const gchar *s
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_search_details_sync (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
-			       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_search_details (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
+			  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -200,7 +200,7 @@ pk_client_search_details_sync (PkClient *client, PkBitfield filters, const gchar
 }
 
 /**
- * pk_client_search_group_sync:
+ * pk_client_search_group:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @search: a group enum to search for, for instance, "system-tools"
@@ -217,8 +217,8 @@ pk_client_search_details_sync (PkClient *client, PkBitfield filters, const gchar
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_search_group_sync (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
-			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_search_group (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
+			PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -247,7 +247,7 @@ pk_client_search_group_sync (PkClient *client, PkBitfield filters, const gchar *
 }
 
 /**
- * pk_client_search_file_sync:
+ * pk_client_search_file:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @search: file to search for, for instance, "/sbin/service"
@@ -264,8 +264,8 @@ pk_client_search_group_sync (PkClient *client, PkBitfield filters, const gchar *
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_search_file_sync (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_search_file (PkClient *client, PkBitfield filters, const gchar *search, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -294,7 +294,7 @@ pk_client_search_file_sync (PkClient *client, PkBitfield filters, const gchar *s
 }
 
 /**
- * pk_client_get_details_sync:
+ * pk_client_get_details:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -311,8 +311,8 @@ pk_client_search_file_sync (PkClient *client, PkBitfield filters, const gchar *s
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_details_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_details (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -341,7 +341,7 @@ pk_client_get_details_sync (PkClient *client, gchar **package_ids, GCancellable
 }
 
 /**
- * pk_client_get_update_detail_sync:
+ * pk_client_get_update_detail:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -358,8 +358,8 @@ pk_client_get_details_sync (PkClient *client, gchar **package_ids, GCancellable
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_update_detail_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-				  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_update_detail (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -388,7 +388,7 @@ pk_client_get_update_detail_sync (PkClient *client, gchar **package_ids, GCancel
 }
 
 /**
- * pk_client_download_packages_sync:
+ * pk_client_download_packages:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @directory: the location where packages are to be downloaded
@@ -405,8 +405,8 @@ pk_client_get_update_detail_sync (PkClient *client, gchar **package_ids, GCancel
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_download_packages_sync (PkClient *client, gchar **package_ids, const gchar *directory, GCancellable *cancellable,
-				  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_download_packages (PkClient *client, gchar **package_ids, const gchar *directory, GCancellable *cancellable,
+			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -435,7 +435,7 @@ pk_client_download_packages_sync (PkClient *client, gchar **package_ids, const g
 }
 
 /**
- * pk_client_get_updates_sync:
+ * pk_client_get_updates:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_DEVEL or %PK_FILTER_ENUM_NONE
  * @cancellable: a #GCancellable or %NULL
@@ -451,8 +451,8 @@ pk_client_download_packages_sync (PkClient *client, gchar **package_ids, const g
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_updates_sync (PkClient *client, PkBitfield filters, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_updates (PkClient *client, PkBitfield filters, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -481,7 +481,7 @@ pk_client_get_updates_sync (PkClient *client, PkBitfield filters, GCancellable *
 }
 
 /**
- * pk_client_get_old_transactions_sync:
+ * pk_client_get_old_transactions:
  * @client: a valid #PkClient instance
  * @number: the number of past transactions to return, or 0 for all
  * @cancellable: a #GCancellable or %NULL
@@ -497,8 +497,8 @@ pk_client_get_updates_sync (PkClient *client, PkBitfield filters, GCancellable *
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_old_transactions_sync (PkClient *client, guint number, GCancellable *cancellable,
-				     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_old_transactions (PkClient *client, guint number, GCancellable *cancellable,
+			        PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -527,7 +527,7 @@ pk_client_get_old_transactions_sync (PkClient *client, guint number, GCancellabl
 }
 
 /**
- * pk_client_update_system_sync:
+ * pk_client_update_system:
  * @client: a valid #PkClient instance
  * @only_trusted: only trusted packages should be installed
  * @cancellable: a #GCancellable or %NULL
@@ -548,8 +548,8 @@ pk_client_get_old_transactions_sync (PkClient *client, guint number, GCancellabl
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_update_system_sync (PkClient *client, gboolean only_trusted, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_update_system (PkClient *client, gboolean only_trusted, GCancellable *cancellable,
+			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -578,7 +578,7 @@ pk_client_update_system_sync (PkClient *client, gboolean only_trusted, GCancella
 }
 
 /**
- * pk_client_get_depends_sync:
+ * pk_client_get_depends:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
@@ -596,8 +596,8 @@ pk_client_update_system_sync (PkClient *client, gboolean only_trusted, GCancella
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_depends_sync (PkClient *client, PkBitfield filters, gchar **package_ids, gboolean recursive, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_depends (PkClient *client, PkBitfield filters, gchar **package_ids, gboolean recursive, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -626,7 +626,7 @@ pk_client_get_depends_sync (PkClient *client, PkBitfield filters, gchar **packag
 }
 
 /**
- * pk_client_get_packages_sync:
+ * pk_client_get_packages:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @cancellable: a #GCancellable or %NULL
@@ -642,8 +642,8 @@ pk_client_get_depends_sync (PkClient *client, PkBitfield filters, gchar **packag
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_packages_sync (PkClient *client, PkBitfield filters, GCancellable *cancellable,
-			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_packages (PkClient *client, PkBitfield filters, GCancellable *cancellable,
+		        PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -672,7 +672,7 @@ pk_client_get_packages_sync (PkClient *client, PkBitfield filters, GCancellable
 }
 
 /**
- * pk_client_get_requires_sync:
+ * pk_client_get_requires:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
@@ -690,8 +690,8 @@ pk_client_get_packages_sync (PkClient *client, PkBitfield filters, GCancellable
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_requires_sync (PkClient *client, PkBitfield filters, gchar **package_ids, gboolean recursive, GCancellable *cancellable,
-			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_requires (PkClient *client, PkBitfield filters, gchar **package_ids, gboolean recursive, GCancellable *cancellable,
+		        PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -720,7 +720,7 @@ pk_client_get_requires_sync (PkClient *client, PkBitfield filters, gchar **packa
 }
 
 /**
- * pk_client_what_provides_sync:
+ * pk_client_what_provides:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_GUI | %PK_FILTER_ENUM_FREE or %PK_FILTER_ENUM_NONE
  * @provides: a #PkProvidesEnum value such as PK_PROVIDES_ENUM_CODEC
@@ -740,8 +740,8 @@ pk_client_get_requires_sync (PkClient *client, PkBitfield filters, gchar **packa
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_what_provides_sync (PkClient *client, PkBitfield filters, PkProvidesEnum provides, const gchar *search, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_what_provides (PkClient *client, PkBitfield filters, PkProvidesEnum provides, const gchar *search, GCancellable *cancellable,
+		         PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -770,7 +770,7 @@ pk_client_what_provides_sync (PkClient *client, PkBitfield filters, PkProvidesEn
 }
 
 /**
- * pk_client_get_distro_upgrades_sync:
+ * pk_client_get_distro_upgrades:
  * @client: a valid #PkClient instance
  * @cancellable: a #GCancellable or %NULL
  * @progress_callback: the function to run when the progress changes
@@ -786,8 +786,8 @@ pk_client_what_provides_sync (PkClient *client, PkBitfield filters, PkProvidesEn
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_distro_upgrades_sync (PkClient *client, GCancellable *cancellable,
-				    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_distro_upgrades (PkClient *client, GCancellable *cancellable,
+			       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -816,7 +816,7 @@ pk_client_get_distro_upgrades_sync (PkClient *client, GCancellable *cancellable,
 }
 
 /**
- * pk_client_get_files_sync:
+ * pk_client_get_files:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -832,8 +832,8 @@ pk_client_get_distro_upgrades_sync (PkClient *client, GCancellable *cancellable,
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_files_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-			  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_files (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+		     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -862,7 +862,7 @@ pk_client_get_files_sync (PkClient *client, gchar **package_ids, GCancellable *c
 }
 
 /**
- * pk_client_get_categories_sync:
+ * pk_client_get_categories:
  * @client: a valid #PkClient instance
  * @cancellable: a #GCancellable or %NULL
  * @progress_callback: the function to run when the progress changes
@@ -877,9 +877,8 @@ pk_client_get_files_sync (PkClient *client, gchar **package_ids, GCancellable *c
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_categories_sync (PkClient *client, GCancellable *cancellable,
-				PkProgressCallback progress_callback, gpointer progress_user_data,
-				GError **error)
+pk_client_get_categories (PkClient *client, GCancellable *cancellable,
+			  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -908,7 +907,7 @@ pk_client_get_categories_sync (PkClient *client, GCancellable *cancellable,
 }
 
 /**
- * pk_client_remove_packages_sync:
+ * pk_client_remove_packages:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @allow_deps: if other dependant packages are allowed to be removed from the computer
@@ -928,8 +927,8 @@ pk_client_get_categories_sync (PkClient *client, GCancellable *cancellable,
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_remove_packages_sync (PkClient *client, gchar **package_ids, gboolean allow_deps, gboolean autoremove, GCancellable *cancellable,
-				PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_remove_packages (PkClient *client, gchar **package_ids, gboolean allow_deps, gboolean autoremove, GCancellable *cancellable,
+			   PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -958,7 +957,7 @@ pk_client_remove_packages_sync (PkClient *client, gchar **package_ids, gboolean
 }
 
 /**
- * pk_client_refresh_cache_sync:
+ * pk_client_refresh_cache:
  * @client: a valid #PkClient instance
  * @force: if we should aggressively drop caches
  * @cancellable: a #GCancellable or %NULL
@@ -977,8 +976,8 @@ pk_client_remove_packages_sync (PkClient *client, gchar **package_ids, gboolean
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_refresh_cache_sync (PkClient *client, gboolean force, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_refresh_cache (PkClient *client, gboolean force, GCancellable *cancellable,
+			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1007,7 +1006,7 @@ pk_client_refresh_cache_sync (PkClient *client, gboolean force, GCancellable *ca
 }
 
 /**
- * pk_client_install_packages_sync:
+ * pk_client_install_packages:
  * @client: a valid #PkClient instance
  * @only_trusted: only trusted packages should be installed
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
@@ -1024,8 +1023,8 @@ pk_client_refresh_cache_sync (PkClient *client, gboolean force, GCancellable *ca
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_install_packages_sync (PkClient *client, gboolean only_trusted, gchar **package_ids, GCancellable *cancellable,
-				 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_install_packages (PkClient *client, gboolean only_trusted, gchar **package_ids, GCancellable *cancellable,
+			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1054,7 +1053,7 @@ pk_client_install_packages_sync (PkClient *client, gboolean only_trusted, gchar
 }
 
 /**
- * pk_client_install_signature_sync:
+ * pk_client_install_signature:
  * @client: a valid #PkClient instance
  * @type: the signature type, e.g. %PK_SIGTYPE_ENUM_GPG
  * @key_id: a key ID such as "0df23df"
@@ -1072,8 +1071,8 @@ pk_client_install_packages_sync (PkClient *client, gboolean only_trusted, gchar
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_install_signature_sync (PkClient *client, PkSigTypeEnum type, const gchar *key_id, const gchar *package_id, GCancellable *cancellable,
-				  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_install_signature (PkClient *client, PkSigTypeEnum type, const gchar *key_id, const gchar *package_id, GCancellable *cancellable,
+			     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1102,7 +1101,7 @@ pk_client_install_signature_sync (PkClient *client, PkSigTypeEnum type, const gc
 }
 
 /**
- * pk_client_update_packages_sync:
+ * pk_client_update_packages:
  * @client: a valid #PkClient instance
  * @only_trusted: only trusted packages should be installed
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
@@ -1119,8 +1118,8 @@ pk_client_install_signature_sync (PkClient *client, PkSigTypeEnum type, const gc
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_update_packages_sync (PkClient *client, gboolean only_trusted, gchar **package_ids, GCancellable *cancellable,
-				PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_update_packages (PkClient *client, gboolean only_trusted, gchar **package_ids, GCancellable *cancellable,
+			   PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1149,7 +1148,7 @@ pk_client_update_packages_sync (PkClient *client, gboolean only_trusted, gchar *
 }
 
 /**
- * pk_client_install_files_sync:
+ * pk_client_install_files:
  * @client: a valid #PkClient instance
  * @only_trusted: only trusted packages should be installed
  * @files: a file such as "/home/hughsie/Desktop/hal-devel-0.10.0.rpm"
@@ -1167,8 +1166,8 @@ pk_client_update_packages_sync (PkClient *client, gboolean only_trusted, gchar *
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_install_files_sync (PkClient *client, gboolean only_trusted, gchar **files, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_install_files (PkClient *client, gboolean only_trusted, gchar **files, GCancellable *cancellable,
+			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1197,7 +1196,7 @@ pk_client_install_files_sync (PkClient *client, gboolean only_trusted, gchar **f
 }
 
 /**
- * pk_client_accept_eula_sync:
+ * pk_client_accept_eula:
  * @client: a valid #PkClient instance
  * @eula_id: the <literal>eula_id</literal> we are agreeing to
  * @cancellable: a #GCancellable or %NULL
@@ -1213,8 +1212,8 @@ pk_client_install_files_sync (PkClient *client, gboolean only_trusted, gchar **f
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_accept_eula_sync (PkClient *client, const gchar *eula_id, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_accept_eula (PkClient *client, const gchar *eula_id, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1243,7 +1242,7 @@ pk_client_accept_eula_sync (PkClient *client, const gchar *eula_id, GCancellable
 }
 
 /**
- * pk_client_rollback_sync:
+ * pk_client_rollback:
  * @client: a valid #PkClient instance
  * @transaction_id: the <literal>transaction_id</literal> we want to return to
  * @cancellable: a #GCancellable or %NULL
@@ -1259,8 +1258,8 @@ pk_client_accept_eula_sync (PkClient *client, const gchar *eula_id, GCancellable
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_rollback_sync (PkClient *client, const gchar *transaction_id, GCancellable *cancellable,
-			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_rollback (PkClient *client, const gchar *transaction_id, GCancellable *cancellable,
+		    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1289,7 +1288,7 @@ pk_client_rollback_sync (PkClient *client, const gchar *transaction_id, GCancell
 }
 
 /**
- * pk_client_get_repo_list_sync:
+ * pk_client_get_repo_list:
  * @client: a valid #PkClient instance
  * @filters: a %PkBitfield such as %PK_FILTER_ENUM_DEVEL or %PK_FILTER_ENUM_NONE
  * @cancellable: a #GCancellable or %NULL
@@ -1305,8 +1304,8 @@ pk_client_rollback_sync (PkClient *client, const gchar *transaction_id, GCancell
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_get_repo_list_sync (PkClient *client, PkBitfield filters, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_get_repo_list (PkClient *client, PkBitfield filters, GCancellable *cancellable,
+			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1335,7 +1334,7 @@ pk_client_get_repo_list_sync (PkClient *client, PkBitfield filters, GCancellable
 }
 
 /**
- * pk_client_repo_enable_sync:
+ * pk_client_repo_enable:
  * @client: a valid #PkClient instance
  * @repo_id: a repo_id structure such as "livna-devel"
  * @enabled: if we should enable the repository
@@ -1352,8 +1351,8 @@ pk_client_get_repo_list_sync (PkClient *client, PkBitfield filters, GCancellable
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_repo_enable_sync (PkClient *client, const gchar *repo_id, gboolean enabled, GCancellable *cancellable,
-			    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_repo_enable (PkClient *client, const gchar *repo_id, gboolean enabled, GCancellable *cancellable,
+		       PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1382,7 +1381,7 @@ pk_client_repo_enable_sync (PkClient *client, const gchar *repo_id, gboolean ena
 }
 
 /**
- * pk_client_repo_set_data_sync:
+ * pk_client_repo_set_data:
  * @client: a valid #PkClient instance
  * @repo_id: a repo_id structure such as "livna-devel"
  * @parameter: the parameter to change
@@ -1401,8 +1400,8 @@ pk_client_repo_enable_sync (PkClient *client, const gchar *repo_id, gboolean ena
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_repo_set_data_sync (PkClient *client, const gchar *repo_id, const gchar *parameter, const gchar *value, GCancellable *cancellable,
-			      PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_repo_set_data (PkClient *client, const gchar *repo_id, const gchar *parameter, const gchar *value, GCancellable *cancellable,
+			 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1431,7 +1430,7 @@ pk_client_repo_set_data_sync (PkClient *client, const gchar *repo_id, const gcha
 }
 
 /**
- * pk_client_simulate_install_files_sync:
+ * pk_client_simulate_install_files:
  * @client: a valid #PkClient instance
  * @files: a file such as "/home/hughsie/Desktop/hal-devel-0.10.0.rpm"
  * @cancellable: a #GCancellable or %NULL
@@ -1447,9 +1446,9 @@ pk_client_repo_set_data_sync (PkClient *client, const gchar *repo_id, const gcha
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_simulate_install_files_sync (PkClient *client, gchar **files, GCancellable *cancellable,
-					PkProgressCallback progress_callback, gpointer progress_user_data,
-					GError **error)
+pk_client_simulate_install_files (PkClient *client, gchar **files, GCancellable *cancellable,
+				  PkProgressCallback progress_callback, gpointer progress_user_data,
+				  GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1478,7 +1477,7 @@ pk_client_simulate_install_files_sync (PkClient *client, gchar **files, GCancell
 }
 
 /**
- * pk_client_simulate_install_packages_sync:
+ * pk_client_simulate_install_packages:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -1494,8 +1493,8 @@ pk_client_simulate_install_files_sync (PkClient *client, gchar **files, GCancell
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_simulate_install_packages_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-					  PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_simulate_install_packages (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+				     PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1524,7 +1523,7 @@ pk_client_simulate_install_packages_sync (PkClient *client, gchar **package_ids,
 }
 
 /**
- * pk_client_simulate_remove_packages_sync:
+ * pk_client_simulate_remove_packages:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -1540,8 +1539,8 @@ pk_client_simulate_install_packages_sync (PkClient *client, gchar **package_ids,
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_simulate_remove_packages_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-					 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_simulate_remove_packages (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+				    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
@@ -1570,7 +1569,7 @@ pk_client_simulate_remove_packages_sync (PkClient *client, gchar **package_ids,
 }
 
 /**
- * pk_client_simulate_update_packages_sync:
+ * pk_client_simulate_update_packages:
  * @client: a valid #PkClient instance
  * @package_ids: a null terminated array of package_id structures such as "hal;0.0.1;i386;fedora"
  * @cancellable: a #GCancellable or %NULL
@@ -1586,8 +1585,8 @@ pk_client_simulate_remove_packages_sync (PkClient *client, gchar **package_ids,
  * Return value: a %PkResults object, or NULL for error
  **/
 PkResults *
-pk_client_simulate_update_packages_sync (PkClient *client, gchar **package_ids, GCancellable *cancellable,
-					 PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
+pk_client_simulate_update_packages (PkClient *client, gchar **package_ids, GCancellable *cancellable,
+				    PkProgressCallback progress_callback, gpointer progress_user_data, GError **error)
 {
 	PkClientHelper *helper;
 	PkResults *results;
diff --git a/lib/packagekit-glib2/pk-client-sync.h b/lib/packagekit-glib2/pk-client-sync.h
index db0b395..5d69f12 100644
--- a/lib/packagekit-glib2/pk-client-sync.h
+++ b/lib/packagekit-glib2/pk-client-sync.h
@@ -25,7 +25,7 @@
 #include <glib.h>
 #include <packagekit-glib2/packagekit.h>
 
-PkResults	*pk_client_resolve_sync			(PkClient		*client,
+PkResults	*pk_client_resolve			(PkClient		*client,
 							 PkBitfield		 filters,
 							 gchar			**packages,
 							 GCancellable		*cancellable,
@@ -33,7 +33,7 @@ PkResults	*pk_client_resolve_sync			(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_search_name_sync		(PkClient		*client,
+PkResults	*pk_client_search_name			(PkClient		*client,
 							 PkBitfield		 filters,
 							 const gchar		*search,
 							 GCancellable		*cancellable,
@@ -41,7 +41,7 @@ PkResults	*pk_client_search_name_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_search_details_sync		(PkClient		*client,
+PkResults	*pk_client_search_details		(PkClient		*client,
 							 PkBitfield		 filters,
 							 const gchar		*search,
 							 GCancellable		*cancellable,
@@ -49,7 +49,7 @@ PkResults	*pk_client_search_details_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_search_group_sync		(PkClient		*client,
+PkResults	*pk_client_search_group			(PkClient		*client,
 							 PkBitfield		 filters,
 							 const gchar		*search,
 							 GCancellable		*cancellable,
@@ -57,7 +57,7 @@ PkResults	*pk_client_search_group_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_search_file_sync		(PkClient		*client,
+PkResults	*pk_client_search_file			(PkClient		*client,
 							 PkBitfield		 filters,
 							 const gchar		*search,
 							 GCancellable		*cancellable,
@@ -65,21 +65,21 @@ PkResults	*pk_client_search_file_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_details_sync		(PkClient		*client,
+PkResults	*pk_client_get_details			(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_update_detail_sync	(PkClient		*client,
+PkResults	*pk_client_get_update_detail		(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_download_packages_sync	(PkClient		*client,
+PkResults	*pk_client_download_packages		(PkClient		*client,
 							 gchar			**package_ids,
 							 const gchar		*directory,
 							 GCancellable		*cancellable,
@@ -87,28 +87,28 @@ PkResults	*pk_client_download_packages_sync	(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_updates_sync		(PkClient		*client,
+PkResults	*pk_client_get_updates			(PkClient		*client,
 							 PkBitfield		 filters,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_old_transactions_sync	(PkClient		*client,
+PkResults	*pk_client_get_old_transactions		(PkClient		*client,
 							 guint			 number,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_update_system_sync		(PkClient		*client,
+PkResults	*pk_client_update_system		(PkClient		*client,
 							 gboolean		 only_trusted,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_depends_sync		(PkClient		*client,
+PkResults	*pk_client_get_depends			(PkClient		*client,
 							 PkBitfield		 filters,
 							 gchar			**package_ids,
 							 gboolean		 recursive,
@@ -117,14 +117,14 @@ PkResults	*pk_client_get_depends_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_packages_sync		(PkClient		*client,
+PkResults	*pk_client_get_packages			(PkClient		*client,
 							 PkBitfield		 filters,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_requires_sync		(PkClient		*client,
+PkResults	*pk_client_get_requires			(PkClient		*client,
 							 PkBitfield		 filters,
 							 gchar			**package_ids,
 							 gboolean		 recursive,
@@ -133,7 +133,7 @@ PkResults	*pk_client_get_requires_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_what_provides_sync		(PkClient		*client,
+PkResults	*pk_client_what_provides		(PkClient		*client,
 							 PkBitfield		 filters,
 							 PkProvidesEnum		 provides,
 							 const gchar		*search,
@@ -142,26 +142,26 @@ PkResults	*pk_client_what_provides_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_distro_upgrades_sync	(PkClient		*client,
+PkResults	*pk_client_get_distro_upgrades		(PkClient		*client,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_files_sync		(PkClient		*client,
+PkResults	*pk_client_get_files			(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_categories_sync		(PkClient		*client,
+PkResults	*pk_client_get_categories		(PkClient		*client,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_remove_packages_sync	(PkClient		*client,
+PkResults	*pk_client_remove_packages		(PkClient		*client,
 							 gchar			**package_ids,
 							 gboolean		 allow_deps,
 							 gboolean		 autoremove,
@@ -170,14 +170,14 @@ PkResults	*pk_client_remove_packages_sync	(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_refresh_cache_sync		(PkClient		*client,
+PkResults	*pk_client_refresh_cache		(PkClient		*client,
 							 gboolean		 force,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_install_packages_sync	(PkClient		*client,
+PkResults	*pk_client_install_packages		(PkClient		*client,
 							 gboolean		 only_trusted,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
@@ -185,7 +185,7 @@ PkResults	*pk_client_install_packages_sync	(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_install_signature_sync	(PkClient		*client,
+PkResults	*pk_client_install_signature		(PkClient		*client,
 							 PkSigTypeEnum		 type,
 							 const gchar		*key_id,
 							 const gchar		*package_id,
@@ -194,7 +194,7 @@ PkResults	*pk_client_install_signature_sync	(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_update_packages_sync		(PkClient		*client,
+PkResults	*pk_client_update_packages		(PkClient		*client,
 							 gboolean		 only_trusted,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
@@ -202,7 +202,7 @@ PkResults	*pk_client_update_packages_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_install_files_sync		(PkClient		*client,
+PkResults	*pk_client_install_files		(PkClient		*client,
 							 gboolean		 only_trusted,
 							 gchar			**files,
 							 GCancellable		*cancellable,
@@ -210,28 +210,28 @@ PkResults	*pk_client_install_files_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_accept_eula_sync		(PkClient		*client,
+PkResults	*pk_client_accept_eula			(PkClient		*client,
 							 const gchar		*eula_id,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_rollback_sync		(PkClient		*client,
+PkResults	*pk_client_rollback			(PkClient		*client,
 							 const gchar		*transaction_id,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_get_repo_list_sync		(PkClient		*client,
+PkResults	*pk_client_get_repo_list		(PkClient		*client,
 							 PkBitfield		 filters,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_repo_enable_sync		(PkClient		*client,
+PkResults	*pk_client_repo_enable			(PkClient		*client,
 							 const gchar		*repo_id,
 							 gboolean		 enabled,
 							 GCancellable		*cancellable,
@@ -239,7 +239,7 @@ PkResults	*pk_client_repo_enable_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_repo_set_data_sync		(PkClient		*client,
+PkResults	*pk_client_repo_set_data		(PkClient		*client,
 							 const gchar		*repo_id,
 							 const gchar		*parameter,
 							 const gchar		*value,
@@ -248,35 +248,35 @@ PkResults	*pk_client_repo_set_data_sync		(PkClient		*client,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_simulate_install_files_sync	(PkClient		*client,
+PkResults	*pk_client_simulate_install_files	(PkClient		*client,
 							 gchar			**files,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_simulate_install_packages_sync (PkClient		*client,
+PkResults	*pk_client_simulate_install_packages	(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_simulate_remove_packages_sync (PkClient		*client,
+PkResults	*pk_client_simulate_remove_packages	(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_simulate_update_packages_sync (PkClient		*client,
+PkResults	*pk_client_simulate_update_packages	(PkClient		*client,
 							 gchar			**package_ids,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
 							 gpointer		 progress_user_data,
 							 GError			**error);
 
-PkResults	*pk_client_adopt_sync 			(PkClient		*client,
+PkResults	*pk_client_adopt 			(PkClient		*client,
 							 const gchar		*transaction_id,
 							 GCancellable		*cancellable,
 							 PkProgressCallback	 progress_callback,
diff --git a/lib/packagekit-glib2/pk-console-shared.c b/lib/packagekit-glib2/pk-console-shared.c
index 41bee6b..b49a30a 100644
--- a/lib/packagekit-glib2/pk-console-shared.c
+++ b/lib/packagekit-glib2/pk-console-shared.c
@@ -149,7 +149,7 @@ pk_console_resolve_package (PkClient *client, PkBitfield filter, const gchar *pa
 	tmp = g_strsplit (package, ",", -1);
 
 	/* get the list of possibles */
-	results = pk_client_resolve_sync (client, filter, tmp, NULL, NULL, NULL, error);
+	results = pk_client_resolve (client, filter, tmp, NULL, NULL, NULL, error);
 	if (results == NULL)
 		goto out;
 
diff --git a/lib/packagekit-glib2/pk-control-sync.c b/lib/packagekit-glib2/pk-control-sync.c
new file mode 100644
index 0000000..7dba3ee
--- /dev/null
+++ b/lib/packagekit-glib2/pk-control-sync.c
@@ -0,0 +1,90 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008-2009 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <gio/gio.h>
+#include <glib.h>
+#include <packagekit-glib2/packagekit.h>
+
+#include "egg-debug.h"
+
+#include "pk-control-sync.h"
+
+/* tiny helper to help us do the async operation */
+typedef struct {
+	GError		**error;
+	GMainLoop	*loop;
+	gboolean	 ret;
+	guint		 seconds;
+} PkControlHelper;
+
+/**
+ * pk_control_get_properties_cb:
+ **/
+static void
+pk_control_get_properties_cb (PkControl *control, GAsyncResult *res, PkControlHelper *helper)
+{
+	/* get the result */
+	helper->ret = pk_control_get_properties_finish (control, res, helper->error);
+	g_main_loop_quit (helper->loop);
+}
+
+/**
+ * pk_control_get_properties:
+ * @control: a valid #PkControl instance
+ * @cancellable: a #GCancellable or %NULL
+ * @error: A #GError or %NULL
+ *
+ * Gets the properties the daemon supports.
+ * Warning: this function is synchronous, and may block. Do not use it in GUI
+ * applications.
+ *
+ * Return value: %TRUE if the properties were set correctly
+ **/
+gboolean
+pk_control_get_properties (PkControl *control, GCancellable *cancellable, GError **error)
+{
+	gboolean ret;
+	PkControlHelper *helper;
+
+	g_return_val_if_fail (PK_IS_CONTROL (control), FALSE);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	/* create temp object */
+	helper = g_new0 (PkControlHelper, 1);
+	helper->loop = g_main_loop_new (NULL, FALSE);
+	helper->error = error;
+
+	/* run async method */
+	pk_control_get_properties_async (control, cancellable, (GAsyncReadyCallback) pk_control_get_properties_cb, helper);
+	g_main_loop_run (helper->loop);
+
+	ret = helper->ret;
+
+	/* free temp object */
+	g_main_loop_unref (helper->loop);
+	g_free (helper);
+
+	return ret;
+}
+
diff --git a/lib/packagekit-glib2/pk-control-sync.h b/lib/packagekit-glib2/pk-control-sync.h
new file mode 100644
index 0000000..7262257
--- /dev/null
+++ b/lib/packagekit-glib2/pk-control-sync.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __PK_CONTROL_SYNC_H
+#define __PK_CONTROL_SYNC_H
+
+#include <glib.h>
+#include <packagekit-glib2/packagekit.h>
+
+gboolean	 pk_control_get_properties		(PkControl		*control,
+							 GCancellable		*cancellable,
+							 GError			**error);
+
+#endif /* __PK_CONTROL_SYNC_H */
+
+
+
diff --git a/lib/packagekit-glib2/pk-control.c b/lib/packagekit-glib2/pk-control.c
index e8a02cd..71562ba 100644
--- a/lib/packagekit-glib2/pk-control.c
+++ b/lib/packagekit-glib2/pk-control.c
@@ -117,14 +117,6 @@ typedef struct {
 	PkNetworkEnum		 network;
 } PkControlState;
 
-/* tiny helper to help us do the async operation */
-typedef struct {
-	GError		**error;
-	GMainLoop	*loop;
-	gboolean	 ret;
-	guint		 seconds;
-} PkControlHelper;
-
 /**
  * pk_control_error_quark:
  *
@@ -1524,55 +1516,6 @@ pk_control_get_properties_finish (PkControl *control, GAsyncResult *res, GError
 	return g_simple_async_result_get_op_res_gboolean (simple);
 }
 
-/**
- * pk_control_get_properties_sync_cb:
- **/
-static void
-pk_control_get_properties_sync_cb (PkControl *control, GAsyncResult *res, PkControlHelper *helper)
-{
-	/* get the result */
-	helper->ret = pk_control_get_properties_finish (control, res, helper->error);
-	g_main_loop_quit (helper->loop);
-}
-
-/**
- * pk_control_get_properties_sync:
- * @control: a valid #PkControl instance
- * @error: A #GError or %NULL
- *
- * Gets the properties the daemon supports.
- * Warning: this function is synchronous, and may block. Do not use it in GUI
- * applications.
- *
- * Return value: %TRUE if the properties were set correctly
- **/
-gboolean
-pk_control_get_properties_sync (PkControl *control, GError **error)
-{
-	gboolean ret;
-	PkControlHelper *helper;
-
-	g_return_val_if_fail (PK_IS_CONTROL (control), FALSE);
-	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-	/* create temp object */
-	helper = g_new0 (PkControlHelper, 1);
-	helper->loop = g_main_loop_new (NULL, FALSE);
-	helper->error = error;
-
-	/* run async method */
-	pk_control_get_properties_async (control, NULL, (GAsyncReadyCallback) pk_control_get_properties_sync_cb, helper);
-	g_main_loop_run (helper->loop);
-
-	ret = helper->ret;
-
-	/* free temp object */
-	g_main_loop_unref (helper->loop);
-	g_free (helper);
-
-	return ret;
-}
-
 /***************************************************************************************************/
 
 /**
@@ -2133,6 +2076,7 @@ pk_control_new (void)
  ***************************************************************************/
 #ifdef EGG_TEST
 #include "egg-test.h"
+#include "pk-control-sync.h"
 
 static void
 pk_control_test_get_tid_cb (GObject *object, GAsyncResult *res, EggTest *test)
@@ -2347,7 +2291,7 @@ pk_control_test (gpointer user_data)
 
 	/************************************************************/
 	egg_test_title (test, "get properties sync");
-	ret = pk_control_get_properties_sync (control, &error);
+	ret = pk_control_get_properties (control, NULL, &error);
 	if (!ret)
 		egg_test_failed (test, "failed to get properties: %s", error->message);
 
diff --git a/lib/packagekit-glib2/pk-control.h b/lib/packagekit-glib2/pk-control.h
index 2e01022..c273e8f 100644
--- a/lib/packagekit-glib2/pk-control.h
+++ b/lib/packagekit-glib2/pk-control.h
@@ -151,8 +151,6 @@ void		 pk_control_get_properties_async	(PkControl		*control,
 gboolean	 pk_control_get_properties_finish	(PkControl		*control,
 							 GAsyncResult		*res,
 							 GError			**error);
-gboolean	 pk_control_get_properties_sync		(PkControl		*control,
-							 GError			**error);
 
 G_END_DECLS
 
commit 361d85aab7abb246d30ca276c2221e181faa2c33
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 15:57:14 2009 +0100

    trivial: fix the param type of network-state

diff --git a/lib/packagekit-glib2/pk-control.c b/lib/packagekit-glib2/pk-control.c
index 71568b0..e8a02cd 100644
--- a/lib/packagekit-glib2/pk-control.c
+++ b/lib/packagekit-glib2/pk-control.c
@@ -1914,9 +1914,9 @@ pk_control_class_init (PkControlClass *klass)
 	/**
 	 * PkControl:network-state:
 	 */
-	pspec = g_param_spec_boolean ("network-state", NULL, NULL,
-				      FALSE,
-				      G_PARAM_READWRITE);
+	pspec = g_param_spec_uint ("network-state", NULL, NULL,
+				   0, G_MAXUINT, PK_NETWORK_ENUM_UNKNOWN,
+				   G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_NETWORK_STATE, pspec);
 
 	/**
commit 342d410a01b496dc83979d74bda875af29bc79ea
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 13:57:03 2009 +0100

    yum: Catch RepoError in one more place if the yum sqlite is malformed

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index 65d1898..69de6cb 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1296,6 +1296,8 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
                     resolve_list.append(pkg)
                     try:
                         txmbrs = self.yumbase.install(po=pkg)
+                    except yum.Errors.RepoError, e:
+                        self.error(ERROR_REPO_NOT_AVAILABLE, _to_unicode(e))
                     except Exception, e:
                         self.error(ERROR_INTERNAL_ERROR, _format_str(traceback.format_exc()))
             percentage += bump
commit e40ab91a48f65721a3f4944f9cfde70d228b5c2e
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 13:56:44 2009 +0100

    trivial: update the fedora spec file

diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in
index 7214586..f9802ef 100644
--- a/contrib/PackageKit.spec.in
+++ b/contrib/PackageKit.spec.in
@@ -244,7 +244,7 @@ user to restart the computer or remove and re-insert the device.
 %setup -q
 
 %build
-%configure --disable-static --enable-yum --enable-smart --enable-glib2 --with-default-backend=yum --disable-local
+%configure --disable-static --enable-yum --enable-smart --with-default-backend=yum --disable-local
 
 make %{?_smp_mflags}
 
commit ddd11bbb3b8fedd46542859b1933933aa7010766
Author: vpv <vpv at fedoraproject.org>
Date:   Tue Sep 15 11:03:40 2009 +0000

    Sending translation for Finnish

diff --git a/po/fi.po b/po/fi.po
index 3e3a0b9..1789f7e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-04 14:33+0000\n"
-"PO-Revision-Date: 2009-09-04 23:14+0300\n"
+"POT-Creation-Date: 2009-09-15 06:44+0000\n"
+"PO-Revision-Date: 2009-09-15 13:59+0300\n"
 "Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
 "Language-Team: Finnish <laatu at lokalisointi.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,274 +16,269 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:238 ../client/pk-console-test.c:147
+#: ../client/pk-console.c:143
 msgid "Transaction"
 msgstr "Transaktio"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:240 ../client/pk-console-test.c:149
+#: ../client/pk-console.c:145
 msgid "System time"
 msgstr "Järjestelmän aika"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:242 ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "Succeeded"
 msgstr "Onnistui"
 
-#: ../client/pk-console.c:242 ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "True"
 msgstr "Tosi"
 
-#: ../client/pk-console.c:242 ../client/pk-console-test.c:151
+#: ../client/pk-console.c:147
 msgid "False"
 msgstr "Epätosi"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:244 ../client/pk-console-test.c:153
-#: ../src/pk-polkit-action-lookup.c:327
+#: ../client/pk-console.c:149 ../src/pk-polkit-action-lookup.c:333
 msgid "Role"
 msgstr "Rooli"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:249 ../client/pk-console-test.c:158
+#: ../client/pk-console.c:154
 msgid "Duration"
 msgstr "Kesto"
 
-#: ../client/pk-console.c:249 ../client/pk-console-test.c:158
+#: ../client/pk-console.c:154
 msgid "(seconds)"
 msgstr "(sekuntia)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:253 ../client/pk-console-test.c:162
-#: ../src/pk-polkit-action-lookup.c:341
+#: ../client/pk-console.c:158 ../src/pk-polkit-action-lookup.c:347
 msgid "Command line"
 msgstr "Komentorivi"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:255 ../client/pk-console-test.c:164
+#: ../client/pk-console.c:160
 msgid "User ID"
 msgstr "Käyttäjän tunniste"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:262 ../client/pk-console-test.c:171
+#: ../client/pk-console.c:167
 msgid "Username"
 msgstr "Käyttäjätunnus"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:266 ../client/pk-console-test.c:175
+#: ../client/pk-console.c:171
 msgid "Real name"
 msgstr "Oikea nimi"
 
-#: ../client/pk-console.c:274 ../client/pk-console-test.c:183
+#: ../client/pk-console.c:179
 msgid "Affected packages:"
 msgstr "Käsiteltävät paketit:"
 
-#: ../client/pk-console.c:276 ../client/pk-console-test.c:185
+#: ../client/pk-console.c:181
 msgid "Affected packages: None"
 msgstr "Käsiteltävät paketit: Ei yhtään"
 
-#. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../client/pk-console.c:337 ../client/pk-task-text.c:220
-msgid "The following packages have to be removed:"
-msgstr "Seuraavat paketit on poistettava:"
-
-#. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../client/pk-console.c:340 ../client/pk-task-text.c:225
-msgid "The following packages have to be installed:"
-msgstr "Seuraavat paketit on asennettava:"
-
-#. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../client/pk-console.c:343 ../client/pk-task-text.c:230
-msgid "The following packages have to be updated:"
-msgstr "Seuraavat paketit on päivitettävä:"
-
-#. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../client/pk-console.c:346 ../client/pk-task-text.c:235
-msgid "The following packages have to be reinstalled:"
-msgstr "Seuraavat paketit on asennettava uudelleen:"
-
-#. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../client/pk-console.c:349 ../client/pk-task-text.c:240
-msgid "The following packages have to be downgraded:"
-msgstr "Seuraavat paketit on vaihdettava vanhempaan versioon:"
-
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:363 ../client/pk-console-test.c:205
+#: ../client/pk-console.c:201
 msgid "Distribution"
 msgstr "Jakeluversio"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:365 ../client/pk-console-test.c:207
+#: ../client/pk-console.c:203
 msgid "Type"
 msgstr "Tyyppi"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#. TRANSLATORS: this is any summary text describing the upgrade
-#. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:367 ../client/pk-console.c:390
-#: ../client/pk-console-test.c:209 ../client/pk-console-test.c:230
+#: ../client/pk-console.c:205 ../client/pk-console.c:226
 msgid "Summary"
 msgstr "Yhteenveto"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:379 ../client/pk-console-test.c:219
+#: ../client/pk-console.c:215
 msgid "Category"
 msgstr "Luokka"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:381 ../client/pk-console-test.c:221
+#: ../client/pk-console.c:217
 msgid "ID"
 msgstr "Tunniste"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:384 ../client/pk-console-test.c:224
+#: ../client/pk-console.c:220
 msgid "Parent"
 msgstr "Pääluokka"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:387 ../client/pk-console-test.c:227
+#: ../client/pk-console.c:223
 msgid "Name"
 msgstr "Nimi"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:393 ../client/pk-console-test.c:233
+#: ../client/pk-console.c:229
 msgid "Icon"
 msgstr "Kuvake"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:408 ../client/pk-console-test.c:247
+#: ../client/pk-console.c:243
 msgid "Details about the update:"
 msgstr "Tietoja päivityksestä:"
 
 #. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:410 ../client/pk-console-test.c:253
-#: ../client/pk-task-text.c:101 ../client/pk-task-text.c:153
-#: ../src/pk-polkit-action-lookup.c:352
+#: ../client/pk-console.c:249 ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../lib/packagekit-glib2/pk-task-text.c:172
+#: ../src/pk-polkit-action-lookup.c:358
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Paketti"
 msgstr[1] "Paketit"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:413 ../client/pk-console-test.c:256
+#: ../client/pk-console.c:252
 msgid "Updates"
 msgstr "Päivitykset"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:417 ../client/pk-console-test.c:260
+#: ../client/pk-console.c:256
 msgid "Obsoletes"
 msgstr "Vanhentaa"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:421 ../client/pk-console-test.c:264
-#: ../client/pk-task-text.c:154
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:260 ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "Toimittaja"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:425 ../client/pk-console-test.c:268
+#: ../client/pk-console.c:264
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:429 ../client/pk-console-test.c:272
+#: ../client/pk-console.c:268
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:433 ../client/pk-console-test.c:276
+#: ../client/pk-console.c:272
 msgid "Restart"
 msgstr "Uudelleenkäynnistys"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:437 ../client/pk-console-test.c:280
+#: ../client/pk-console.c:276
 msgid "Update text"
 msgstr "Päivityksen kuvaus"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:441 ../client/pk-console-test.c:284
+#: ../client/pk-console.c:280
 msgid "Changes"
 msgstr "Muutokset"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:445 ../client/pk-console-test.c:288
+#: ../client/pk-console.c:284
 msgid "State"
 msgstr "Tila"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:450 ../client/pk-console-test.c:293
+#: ../client/pk-console.c:289
 msgid "Issued"
 msgstr "Julkaistu"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:455 ../client/pk-console-test.c:298
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:294 ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Päivitetty"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:475 ../client/pk-console-test.c:316
+#: ../client/pk-console.c:312
 msgid "Enabled"
 msgstr "Käytössä"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:478 ../client/pk-console-test.c:319
+#: ../client/pk-console.c:315
 msgid "Disabled"
 msgstr "Poissa käytöstä"
 
-#: ../client/pk-console.c:555 ../client/pk-console.c:557
-msgid "Percentage"
-msgstr "Prosentti"
-
-#: ../client/pk-console.c:557
-msgid "Unknown"
-msgstr "Tuntematon"
-
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:599 ../client/pk-console-test.c:341
+#: ../client/pk-console.c:337
 msgid "System restart required by:"
 msgstr "Järjestelmän uudelleenkäynnistyksen tarvitsee:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:602 ../client/pk-console-test.c:344
+#: ../client/pk-console.c:340
 msgid "Session restart required:"
 msgstr "Istunnon uudelleenkäynnistyksen tarvitsee"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:605 ../client/pk-console-test.c:347
+#: ../client/pk-console.c:343
 msgid "System restart (security) required by:"
 msgstr "Järjestelmän uudelleenkäynnistyksen (turvallisuussyistä) tarvitsee:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:608 ../client/pk-console-test.c:350
+#: ../client/pk-console.c:346
 msgid "Session restart (security) required:"
 msgstr "Istunnon uudelleenkäynnistyksen (turvallisuussyistä) tarvitsee:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:611 ../client/pk-console-test.c:353
+#: ../client/pk-console.c:349
 msgid "Application restart required by:"
 msgstr "Sovelluksen uudelleenkäynnistyksen tarvitsee"
 
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:366
+msgid "Package description"
+msgstr "Paketin kuvaus"
+
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:384
+msgid "Message:"
+msgstr "Viesti:"
+
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:398
+msgid "No files"
+msgstr "Ei tiedostoja"
+
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:403
+msgid "Package files"
+msgstr "Paketin tiedostot"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:462
+msgid "Fatal error"
+msgstr "Vakava virhe"
+
+#. TRANSLATORS: we failed, but there was no error set
+#: ../client/pk-console.c:475
+msgid "Transaction failed with no error"
+msgstr "Transaktio epäonnistui, mutta virhetietoja ei ole asetettu"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:480
+msgid "The transaction failed"
+msgstr "Transaktio epäonnistui"
+
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:666 ../client/pk-console-test.c:702
+#: ../client/pk-console.c:554
 msgid "Please restart the computer to complete the update."
 msgstr "Käynnistä tietokone uudelleen päivityksen viimeistelemiseksi."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:669 ../client/pk-console-test.c:705
+#: ../client/pk-console.c:557
 msgid "Please logout and login to complete the update."
 msgstr "Kirjaudu ulos ja takaisin sisään päivityksen viimeistelemiseksi."
 
-#. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:672
-msgid "Please restart the application as it is being used."
-msgstr "Ohjelmaa käytetään tällä hetkellä, käynnistä se uudelleen."
-
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:675 ../client/pk-console-test.c:708
+#: ../client/pk-console.c:560
 msgid ""
 "Please restart the computer to complete the update as important security "
 "updates have been installed."
@@ -292,7 +287,7 @@ msgstr ""
 "turvallisuuspäivityksiä on asennettu."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:678 ../client/pk-console-test.c:711
+#: ../client/pk-console.c:563
 msgid ""
 "Please logout and login to complete the update as important security updates "
 "have been installed."
@@ -300,527 +295,203 @@ msgstr ""
 "Kirjaudu ulos ja takaisin sisään päivityksen viimeistelemiseksi, tärkeitä "
 "turvallisuuspäivityksiä on asennettu."
 
-#. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:810
-#, c-format
-msgid "The package %s is already installed"
-msgstr "Paketti %s on jo asennettu"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:818
-#, c-format
-msgid "The package %s could not be installed: %s"
-msgstr "Pakettia %s ei voitu asentaa: %s"
-
-#. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:844 ../client/pk-console.c:892
-#: ../client/pk-console.c:916 ../client/pk-console.c:964
-#: ../client/pk-console.c:1060 ../client/pk-console.c:1173
-#: ../client/pk-console.c:1234 ../client/pk-tools-common.c:63
-#: ../client/pk-tools-common.c:82 ../client/pk-tools-common.c:90
-#, c-format
-msgid "Internal error: %s"
-msgstr "Sisäinen virhe: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#. ask the user
-#: ../client/pk-console.c:876 ../client/pk-console.c:948
-#: ../client/pk-console.c:1266 ../client/pk-task-text.c:299
-msgid "Proceed with changes?"
-msgstr "Tehdäänkö muutokset?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:881 ../client/pk-console.c:953
-msgid "The package install was canceled!"
-msgstr "Pakettien asennus peruttiin!"
-
-#. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:900 ../client/pk-console.c:1634
-#, c-format
-msgid "This tool could not install the packages: %s"
-msgstr "Tämä työkalu ei voinut asentaa paketteja: %s"
-
-#. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:972
-#, c-format
-msgid "This tool could not install the files: %s"
-msgstr "Tämä työkalu ei voinut asentaa tiedostoja: %s"
-
-#. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:1028
-#, c-format
-msgid "This tool could not remove %s: %s"
-msgstr "Tämä työkalu ei voinut poistaa pakettia %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1051 ../client/pk-console.c:1089
-#: ../client/pk-console.c:1118
-#, c-format
-msgid "This tool could not remove the packages: %s"
-msgstr "Tämä työkalu ei voinut poistaa paketteja: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:1104
-msgid "Proceed with additional packages?"
-msgstr "Poistetaanko lisäpaketteja?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1109
-msgid "The package removal was canceled!"
-msgstr "Pakettien poisto peruttiin!"
-
-#. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:1150
-#, c-format
-msgid "This tool could not download the package %s as it could not be found"
-msgstr "Ladattavaksi pyydettyä pakettia %s ei löytynyt"
-
-#. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:1181
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:584
 #, c-format
-msgid "This tool could not download the packages: %s"
-msgstr "Tämä työkalu ei voinut ladata paketteja: %s"
+msgid "This tool could not find any available package: %s"
+msgstr "Tämä työkalu ei löytänyt saatavilla olevaa pakettia: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1213 ../client/pk-console.c:1225
-#: ../client/pk-console.c:1280
+#: ../client/pk-console.c:612
 #, c-format
-msgid "This tool could not update %s: %s"
-msgstr "Tämä työkalu ei voinut päivittää pakettia %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1271
-msgid "The package update was canceled!"
-msgstr "Pakettien päivitys peruttiin!"
+msgid "This tool could not find the installed package: %s"
+msgstr "Tämä työkalu ei löytänyt asennettua pakettia: %s"
 
-# TODO: tarkista
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1304 ../client/pk-console.c:1312
+#: ../client/pk-console.c:640 ../client/pk-console.c:668
 #, c-format
-msgid "This tool could not get the requirements for %s: %s"
-msgstr "Tämä työkalu ei voinut hakea vaatijoita paketille %s: %s"
+msgid "This tool could not find the package: %s"
+msgstr "Tämä työkalu ei löytänyt pakettia: %s"
 
-# TODO: tarkista
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1334 ../client/pk-console.c:1342
-#, c-format
-msgid "This tool could not get the dependencies for %s: %s"
-msgstr "Tämä työkalu ei voinut hakea riippuvuuksia paketille %s: %s"
-
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1364 ../client/pk-console.c:1372
-#, c-format
-msgid "This tool could not get package details for %s: %s"
-msgstr "Tämä työkalu ei voinut hakea tietoja paketista %s: %s"
-
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1394
-#, c-format
-msgid "This tool could not find the files for %s: %s"
-msgstr "Tämä työkalu ei löytänyt paketin %s tiedostoja: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1402
-#, c-format
-msgid "This tool could not get the file list for %s: %s"
-msgstr "Tämä työkalu ei voinut hakea paketin %s tiedostoluetteloa: %s"
-
-#. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1424
+#: ../client/pk-console.c:696 ../client/pk-console.c:724
+#: ../client/pk-console.c:752 ../client/pk-console.c:780
+#: ../client/pk-console.c:808
 #, c-format
-msgid "File already exists: %s"
-msgstr "Tiedosto on jo olemassa: %s"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1429 ../client/pk-console.c:1485
-#: ../client/pk-console.c:1560
-msgid "Getting package list"
-msgstr "Haetaan pakettiluetteloa"
-
-#. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1435 ../client/pk-console.c:1491
-#: ../client/pk-console.c:1566
-#, c-format
-msgid "This tool could not get package list: %s"
-msgstr "Tämä työkalu ei voinut hakea pakettiluetteloa: %s"
-
-#. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1446
-#, c-format
-msgid "Failed to save to disk"
-msgstr "Tallennus epäonnistui"
-
-#. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1480 ../client/pk-console.c:1555
-#, c-format
-msgid "File does not exist: %s"
-msgstr "Tiedostoa ei ole olemassa: %s"
-
-#. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1512
-msgid "Packages to add"
-msgstr "Lisättävät paketit"
-
-#. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1520
-msgid "Packages to remove"
-msgstr "Poistettavat paketit"
-
-#. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1588
-#, c-format
-msgid "No new packages need to be installed"
-msgstr "Yhtään uutta pakettia ei tarvitse asentaa"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1594
-msgid "To install"
-msgstr "Asennetaan"
-
-#. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1606
-msgid "Searching for package: "
-msgstr "Etsitään pakettia: "
-
-#. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1610
-msgid "not found."
-msgstr "ei löytynyt."
-
-#. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1621
-#, c-format
-msgid "No packages can be found to install"
-msgstr "Asennettavia paketteja ei löytynyt"
-
-#. TRANSLATORS: installing new packages from package list
-#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
-#: ../client/pk-console.c:1627
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:885
-#, c-format
-msgid "Installing packages"
-msgstr "Asennetaan paketteja"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1663
-#, c-format
-msgid "This tool could not find the update details for %s: %s"
-msgstr "Tämä työkalu ei löytänyt paketin %s päivitystietoja: %s"
-
-#. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1671
-#, c-format
-msgid "This tool could not get the update details for %s: %s"
-msgstr "Tämä työkalu ei voinut hakea paketin %s päivitystietoja: %s"
-
-#. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1702
-msgid "Error:"
-msgstr "Virhe:"
-
-#. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1716 ../client/pk-console-test.c:370
-msgid "Package description"
-msgstr "Paketin kuvaus"
-
-#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:1732 ../client/pk-console-test.c:388
-msgid "Message:"
-msgstr "Viesti:"
-
-#. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1760 ../client/pk-console-test.c:407
-msgid "Package files"
-msgstr "Paketin tiedostot"
-
-#. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1768 ../client/pk-console-test.c:402
-msgid "No files"
-msgstr "Ei tiedostoja"
-
-#. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1791
-msgid "Repository signature required"
-msgstr "Asennuslähteen allekirjoitus vaaditaan"
-
-#. TRANSLATORS: This a prompt asking the user to import the security key
-#. ask the user
-#: ../client/pk-console.c:1801 ../client/pk-task-text.c:113
-msgid "Do you accept this signature?"
-msgstr "Hyväksytkö tämän allekirjoituksen?"
-
-#. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1805 ../client/pk-task-text.c:117
-msgid "The signature was not accepted."
-msgstr "Allekirjoitusta ei hyväksytty."
-
-#. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1839
-msgid "End user license agreement required"
-msgstr "Käyttöoikeussopimus vaaditaan"
-
-#. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1846
-msgid "Do you agree to this license?"
-msgstr "Hyväksytkö tämän käyttöoikeussopimuksen?"
-
-#. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1850
-msgid "The license was refused."
-msgstr "Käyttöoikeussopimusta ei hyväksytty"
+msgid "This tool could not find all the packages: %s"
+msgstr "Tämä työkalu ei löytänyt paketteja: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1879 ../client/pk-console-test.c:968
+#: ../client/pk-console.c:832
 msgid "The daemon crashed mid-transaction!"
 msgstr "Taustaprosessi kaatui kesken toimenpiteen"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1932 ../client/pk-console-test.c:1002
+#: ../client/pk-console.c:866
 msgid "PackageKit Console Interface"
 msgstr "PackageKitin konsolikäyttöliittymä"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1934 ../client/pk-console-test.c:1004
+#: ../client/pk-console.c:868
 msgid "Subcommands:"
 msgstr "Alikomennot:"
 
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:947
+msgid "Failed to get the time since this action was last completed"
+msgstr "Tämän toiminnon edellisen suorittamisen aikaa ei saatu"
+
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:2027 ../client/pk-console-test.c:1095
-#: ../client/pk-generate-pack.c:187 ../client/pk-monitor.c:128
-#: ../contrib/command-not-found/pk-command-not-found.c:616
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:549
+#: ../client/pk-console.c:982 ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:282
+#: ../contrib/command-not-found/pk-command-not-found.c:614
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293 ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Näytä ylimääräisiä virheenjäljitystietoja"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:2030 ../client/pk-console-test.c:1098
-#: ../client/pk-monitor.c:130
+#: ../client/pk-console.c:985 ../client/pk-monitor.c:284
 msgid "Show the program version and exit"
 msgstr "Näytä ohjelman versio ja lopeta"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:2033 ../client/pk-console-test.c:1101
+#: ../client/pk-console.c:988
 msgid "Set the filter, e.g. installed"
 msgstr "Aseta suodin, esim. asennettu"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:2036 ../client/pk-console-test.c:1104
+#: ../client/pk-console.c:991
 msgid "Exit without waiting for actions to complete"
 msgstr "Lopeta odottamatta toimintojen valmistumista"
 
-#. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:2063
-msgid "This tool could not connect to system DBUS."
-msgstr "Tämä työkalu ei voinut yhdistää järjestelmän DBUSiin."
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1016
+msgid "Failed to contact PackageKit"
+msgstr "PackageKitiin ei saatu yhteyttä"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:2153 ../client/pk-console-test.c:1179
+#: ../client/pk-console.c:1068
 msgid "The filter specified was invalid"
 msgstr "Annettu suodin oli virheellinen"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:2172 ../client/pk-console-test.c:1198
+#: ../client/pk-console.c:1087
 msgid "A search type is required, e.g. name"
 msgstr "Haun tyyppi tarvitaan, esim. nimi"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:2179 ../client/pk-console.c:2188
-#: ../client/pk-console.c:2197 ../client/pk-console.c:2206
-#: ../client/pk-console-test.c:1205 ../client/pk-console-test.c:1217
-#: ../client/pk-console-test.c:1229 ../client/pk-console-test.c:1241
+#: ../client/pk-console.c:1094 ../client/pk-console.c:1106
+#: ../client/pk-console.c:1118 ../client/pk-console.c:1130
 msgid "A search term is required"
 msgstr "Hakutermi on annettava"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:2213 ../client/pk-console-test.c:1251
+#: ../client/pk-console.c:1140
 msgid "Invalid search type"
 msgstr "Virheellinen haun tyyppi"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:2219
-msgid "A package name or filename to install is required"
-msgstr "Paketin nimi tai asennettavan tiedoston nimi on annettava"
+#: ../client/pk-console.c:1146
+msgid "A package name to install is required"
+msgstr "Asennettavan paketin nimi on annettava"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1155
+msgid "A filename to install is required"
+msgstr "Asennettavan tiedoston nimi on annettava"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2228 ../client/pk-console-test.c:1278
+#: ../client/pk-console.c:1167
 msgid "A type, key_id and package_id are required"
 msgstr "Tyyppi, key_id ja package_id on annettava"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:2237 ../client/pk-console-test.c:1289
+#: ../client/pk-console.c:1178
 msgid "A package name to remove is required"
 msgstr "Poistettavan paketin nimi on annettava"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:2245 ../client/pk-console-test.c:1298
+#: ../client/pk-console.c:1187
 msgid "A destination directory and the package names to download are required"
 msgstr "Kohdehakemisto ja ladattavien pakettien nimet paketit on annettava"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:2252 ../client/pk-console-test.c:1305
+#: ../client/pk-console.c:1194
 msgid "Directory not found"
 msgstr "Hakemistoa ei löytynyt"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2260 ../client/pk-console-test.c:1314
+#: ../client/pk-console.c:1203
 msgid "A licence identifier (eula-id) is required"
 msgstr "Lisenssin tunniste (eula-id) on annettava"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2270 ../client/pk-console-test.c:1325
+#: ../client/pk-console.c:1214
 msgid "A transaction identifier (tid) is required"
 msgstr "Transaktion tunniste (tid) on annettava"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2287 ../client/pk-console-test.c:1346
+#: ../client/pk-console.c:1235
 msgid "A package name to resolve is required"
 msgstr "Ratkaistavan paketin nimi on annettava"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2296 ../client/pk-console.c:2305
-#: ../client/pk-console-test.c:1357 ../client/pk-console-test.c:1368
+#: ../client/pk-console.c:1246 ../client/pk-console.c:1257
 msgid "A repository name is required"
 msgstr "Asennuslähteen nimi on annettava"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2314 ../client/pk-console-test.c:1379
+#: ../client/pk-console.c:1268
 msgid "A repo name, parameter and value are required"
 msgstr "Asennuslähteen nimi, parametri ja arvo on annettava"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2328 ../client/pk-console-test.c:1397
+#: ../client/pk-console.c:1285
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Toiminto, esim. ”update-system” on annettava"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2335 ../client/pk-console-test.c:1404
+#: ../client/pk-console.c:1292
 msgid "A correct role is required"
 msgstr "Sopiva rooli on annettava"
 
-#. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2342 ../client/pk-console-test.c:1411
-msgid "Failed to get the time since this action was last completed"
-msgstr "Tämän toiminnon edellisen suorittamisen aikaa ei saatu"
-
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2352 ../client/pk-console.c:2364
-#: ../client/pk-console.c:2373 ../client/pk-console.c:2391
-#: ../client/pk-console.c:2400 ../client/pk-console-test.c:1421
-#: ../client/pk-console-test.c:1436 ../client/pk-console-test.c:1445
-#: ../client/pk-console-test.c:1465 ../client/pk-console-test.c:1474
-#: ../client/pk-generate-pack.c:243
+#: ../client/pk-console.c:1302 ../client/pk-console.c:1317
+#: ../client/pk-console.c:1326 ../client/pk-console.c:1346
+#: ../client/pk-console.c:1355 ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "Paketin nimi on annettava"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2382 ../client/pk-console-test.c:1454
+#: ../client/pk-console.c:1335
 msgid "A package provide string is required"
 msgstr "Paketin tarjoaja-merkkijono on annettava"
 
-#. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2409
-msgid "A list file name to create is required"
-msgstr "Luotavan luettelotiedoston nimi on annetta"
-
-#. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2419 ../client/pk-console.c:2429
-msgid "A list file to open is required"
-msgstr "Avattavan luettelotiedoston nimi on annettava"
-
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2483 ../client/pk-console-test.c:1534
+#: ../client/pk-console.c:1415
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "Valitsinta ”%s” ei tueta"
 
-#. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2496
-msgid "Incorrect privileges for this operation"
-msgstr "Sinulla ei ole tähän toimintoon tarvittavia oikeuksia"
-
-#. TRANSLATORS: Generic failure of what they asked to do
-#. /* TRANSLATORS: User does not have permission to do this */
-#. g_print ("%s\n", _("Incorrect privileges for this operation"));
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2499 ../client/pk-console-test.c:1546
+#: ../client/pk-console.c:1425
 msgid "Command failed"
 msgstr "Komento epäonnistui"
 
-#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-console-test.c:521 ../client/pk-tools-common.c:131
-msgid "More than one package matches:"
-msgstr "Useita vastaavia paketteja saatavilla:"
-
-#. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-console-test.c:530 ../client/pk-tools-common.c:138
-msgid "Please choose the correct package: "
-msgstr "Valitse oikea paketti:"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:730
-#, c-format
-msgid "This tool could not find the available package: %s"
-msgstr "Tämä työkalu ei löytänyt saatavilla olevaa pakettia: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:758
-#, c-format
-msgid "This tool could not find the installed package: %s"
-msgstr "Tämä työkalu ei löytänyt asennettua pakettia: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console-test.c:786 ../client/pk-console-test.c:814
-#, c-format
-msgid "This tool could not find the package: %s"
-msgstr "Tämä työkalu ei löytänyt pakettia: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console-test.c:842 ../client/pk-console-test.c:868
-#: ../client/pk-console-test.c:894 ../client/pk-console-test.c:920
-#: ../client/pk-console-test.c:946
-#, c-format
-msgid "This tool could not find all the packages: %s"
-msgstr "Tämä työkalu ei löytänyt paketteja: %s"
-
-#. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console-test.c:1257
-msgid "A package name to install is required"
-msgstr "Asennettavan paketin nimi on annettava"
-
-#. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console-test.c:1266
-msgid "A filename to install is required"
-msgstr "Asennettavan tiedoston nimi on annettava"
-
-#. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:103
-msgid "Downloading"
-msgstr "Ladataan"
-
-#. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:123
-msgid "Downloading packages"
-msgstr "Ladataan paketteja"
-
-#. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:128
-msgid "Downloading dependencies"
-msgstr "Ladataan riippuvuuksia"
-
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:190
+#: ../client/pk-generate-pack.c:225
 msgid "Set the file name of dependencies to be excluded"
 msgstr ""
 "Aseta pois jätettävien riippuvuuksien luettelon sisältävän tiedoston nimi"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:193
+#: ../client/pk-generate-pack.c:228
 msgid ""
 "The output file or directory (the current directory is used if ommitted)"
 msgstr ""
@@ -828,38 +499,43 @@ msgstr ""
 "automaattisesti nykyinen hakemisto."
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:196
+#: ../client/pk-generate-pack.c:231
 msgid "The package to be put into the service pack"
 msgstr "Paketti joka laitetaan huoltopakkaukseen"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:199
+#: ../client/pk-generate-pack.c:234
 msgid "Put all updates available in the service pack"
 msgstr "Laita kaikki saatavilla olevat päivitykset huoltopakkaukseen"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:227
+#: ../client/pk-generate-pack.c:269
 msgid "Neither --package or --updates option selected."
 msgstr "Kumpaakaan valitsimista --package tai --updates ei ole käytetty."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:235
+#: ../client/pk-generate-pack.c:277
 msgid "Both options selected."
 msgstr "Molempia valitsimia on käytetty."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:251
+#: ../client/pk-generate-pack.c:293
 msgid "A output directory or file name is required"
 msgstr "Kohdehakemiston tai -tiedoston nimi on annettava"
 
+#. TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:311
+msgid "The dameon failed to startup"
+msgstr "Taustaprosessin käynnistys epäonnistui"
+
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:269 ../client/pk-generate-pack.c:275
+#: ../client/pk-generate-pack.c:322 ../client/pk-generate-pack.c:328
 msgid "The package manager cannot perform this type of operation."
 msgstr "Paketinhallinta ei voi suorittaa tämäntyyppistä toimintoa."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:282
+#: ../client/pk-generate-pack.c:335
 msgid ""
 "Service packs cannot be created as PackageKit was not built with libarchive "
 "support."
@@ -868,251 +544,157 @@ msgstr ""
 "tuella."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:293
+#: ../client/pk-generate-pack.c:346
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Annettaessa tiedosto nimen on päätyttävä"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:309
+#: ../client/pk-generate-pack.c:362
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Samalla nimellä on jo olemassa pakkaus, haluatko korvata sen?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:312
+#: ../client/pk-generate-pack.c:365
 msgid "The pack was not overwritten."
 msgstr "Pakkausta ei korvattu."
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:325
+#: ../client/pk-generate-pack.c:378
 msgid "Failed to create directory:"
 msgstr "Hakemiston luominen epäonnistui:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:335
+#: ../client/pk-generate-pack.c:390
 msgid "Failed to open package list."
 msgstr "Pakettiluettelon luominen epäonnistui."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:346
+#: ../client/pk-generate-pack.c:399
 msgid "Finding package name."
 msgstr "Etsitään paketin nimeä."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:350
+#: ../client/pk-generate-pack.c:403
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Pakettia ”%s” ei löytynyt: %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:367
+#: ../client/pk-generate-pack.c:411
 msgid "Creating service pack..."
 msgstr "Luodaan huoltopakkausta..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:374
+#: ../client/pk-generate-pack.c:426
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Huoltopakkaus ”%s” on luotu"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:379
+#: ../client/pk-generate-pack.c:431
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Huoltopakkauksen ”%s” luominen epäonnistui: %s"
 
+#: ../client/pk-monitor.c:204
+msgid "Failed to get transaction list"
+msgstr "Transaktioluettelon noutaminen epäonnistui"
+
+#: ../client/pk-monitor.c:235
+msgid "Failed to get daemon state"
+msgstr "Taustaprosessin tilaa ei saatu"
+
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:146
+#: ../client/pk-monitor.c:299
 msgid "PackageKit Monitor"
 msgstr "PackageKit-tarkkailija"
 
-#: ../client/pk-monitor.c:183
-msgid "Cannot show the list of transactions"
-msgstr "Transaktioluetteloa ei voida näyttää"
-
-#. ask the user
-#: ../client/pk-task-text.c:64
-msgid "Do you want to allow installing of unsigned software?"
-msgstr "Sallitaanko allekirjoittamattomien ohjelmistojen asentaminen?"
-
-#: ../client/pk-task-text.c:68
-msgid "The unsigned software will not be installed."
-msgstr "Allekirjoittamatonta ohjelmistoa ei asenneta."
-
-#: ../client/pk-task-text.c:100
-msgid "Software source signature required"
-msgstr "Ohjelmistolähteen allekirjoitus vaaditaan"
-
-#: ../client/pk-task-text.c:102
-msgid "Software source name"
-msgstr "Ohjelmistolähteen nimi"
-
-#: ../client/pk-task-text.c:103
-msgid "Key URL"
-msgstr "Avaimen osoite"
-
-#: ../client/pk-task-text.c:104
-msgid "Key user"
-msgstr "Avaimen käyttäjä"
-
-#: ../client/pk-task-text.c:105
-msgid "Key ID"
-msgstr "Avaimen tunniste"
-
-#: ../client/pk-task-text.c:106
-msgid "Key fingerprint"
-msgstr "Avaimen sormenjälki"
-
-#: ../client/pk-task-text.c:107
-msgid "Key Timestamp"
-msgstr "Avaimen aikaleima"
-
-#: ../client/pk-task-text.c:151
-msgid "End user licence agreement required"
-msgstr "Käyttöoikeussopimus vaaditaan"
-
-#: ../client/pk-task-text.c:152
-msgid "EULA ID"
-msgstr "Käyttöoikeussopimuksen tunniste"
-
-#: ../client/pk-task-text.c:155
-msgid "Agreement"
-msgstr "Sopimus"
-
-#. ask the user
-#: ../client/pk-task-text.c:161
-msgid "Do you accept this agreement?"
-msgstr "Hyväksytkö tämän sopimuksen?"
-
-#: ../client/pk-task-text.c:165
-msgid "The agreement was not accepted."
-msgstr "Sopimusta ei hyväksytty."
-
-#: ../client/pk-task-text.c:194
-msgid "Media change required"
-msgstr "Tallennusvälinettä on vaihdettava"
-
-#: ../client/pk-task-text.c:195
-msgid "Media type"
-msgstr "Tallennusvälineen tyyppi"
-
-#: ../client/pk-task-text.c:196
-msgid "Media ID"
-msgstr "Tallennusvälineen tunniste"
-
-#: ../client/pk-task-text.c:197
-msgid "Text"
-msgstr "Teksti"
-
-#. ask the user
-#: ../client/pk-task-text.c:201
-msgid "Please insert the correct media"
-msgstr "Syötä oikea tallennusväline"
-
-#: ../client/pk-task-text.c:205
-msgid "The correct media was not inserted."
-msgstr "Oikeaa tallennusvälinettä ei syötetty."
-
-#: ../client/pk-task-text.c:303
-msgid "The transaction did not proceed."
-msgstr "Transaktiota ei jatkettu."
-
-#: ../client/pk-text.c:50
-#, c-format
-msgid "Please enter a number from 1 to %i: "
-msgstr "Anna numero väliltä 1-%i: "
-
-#. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:119
-#, c-format
-msgid "The package could not be found"
-msgstr "Pakettia ei löytynyt"
-
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:466
+#: ../contrib/browser-plugin/pk-plugin-install.c:495
 msgid "Getting package information..."
 msgstr "Haetaan pakettitietoja..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:472
+#: ../contrib/browser-plugin/pk-plugin-install.c:501
 #, c-format
 msgid "Run %s"
 msgstr "Suorita %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:478
+#: ../contrib/browser-plugin/pk-plugin-install.c:507
 msgid "Installed version"
 msgstr "Asennettu versio"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:486
+#: ../contrib/browser-plugin/pk-plugin-install.c:515
 #, c-format
 msgid "Run version %s now"
 msgstr "Suorita versio %s nyt"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:492
+#: ../contrib/browser-plugin/pk-plugin-install.c:521
 msgid "Run now"
 msgstr "Suorita nyt"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:498
+#: ../contrib/browser-plugin/pk-plugin-install.c:527
 #, c-format
 msgid "Update to version %s"
 msgstr "Päivitä versioon %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:504
+#: ../contrib/browser-plugin/pk-plugin-install.c:533
 #, c-format
 msgid "Install %s now"
 msgstr "Asenna %s nyt"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:507
+#: ../contrib/browser-plugin/pk-plugin-install.c:536
 msgid "Version"
 msgstr "Versio"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:512
+#: ../contrib/browser-plugin/pk-plugin-install.c:541
 msgid "No packages found for your system"
 msgstr "Järjestelmääsi sopivia paketteja ei löytynyt"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:546
 msgid "Installing..."
 msgstr "Asennetaan..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:349
+#: ../contrib/command-not-found/pk-command-not-found.c:358
 msgid "Downloading details about the software sources."
 msgstr "Ladataan tietoja ohjelmistolähteistä."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:353
+#: ../contrib/command-not-found/pk-command-not-found.c:362
 msgid "Downloading filelists (this may take some time to complete)."
 msgstr "Ladataan tiedostoluetteloja (tämä voi viedä jonkin aikaa)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:357
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Waiting for package manager lock."
 msgstr "Odotetaan paketinhallinnan lukkoa."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:361
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Loading list of packages."
 msgstr "Ladataan pakettiluetteloja."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:420
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Tiedoston etsiminen epäonnistui"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:557
+#: ../contrib/command-not-found/pk-command-not-found.c:570
 msgid "Failed to launch:"
 msgstr "Käynnistys epäonnistui:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:632
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "PackageKit Command Not Found"
 msgstr "PackageKit-komentoa ei löytynyt"
 
@@ -1171,186 +753,195 @@ msgid "Please choose a package to install"
 msgstr "Valitse asennettava paketti"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "Aloitetaan asennus"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:406
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "Pakettia %s ei löytynyt tai se on jo asennettu: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:552
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:507
 msgid ""
 "Don't actually install any packages, only simulate what would be installed"
 msgstr "Älä oikeasti asenna paketteja, simuloi asennus"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:555
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:510
 msgid "Do not install dependencies of the core packages"
 msgstr "Älä asenna annettujen pakettien riippuvuuksia"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:558
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:513
 msgid "Do not display information or progress"
 msgstr "Älä näytä tietoja tai edistymistä"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:576
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:528
 msgid "PackageKit Debuginfo Installer"
 msgstr "PackageKitin debuginfo-asennin"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:588
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "VIRHE: Asennettavien pakettien nimet on annettava"
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:622
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:572
 #, c-format
 msgid "Getting sources list"
 msgstr "Haetaan lähdeluetteloa"
 
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:582
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:741
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
+msgid "FAILED."
+msgstr "EPÄONNISTUI."
+
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:680
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:715
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:799
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:843
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:910
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:954
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:597
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:637
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:672
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:756
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:867
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:643
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Löydettiin %i käytössä olevaa ja %i käytöstä poistettua lähdettä."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:650
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:607
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Etsitään virheenjäljityslähteitä"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:683
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "Löydettiin %i käytöstä poistettua debuginfo-asennuslähdettä."
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:690
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:647
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Otetaan virheenjäljityslähteet käyttöön"
 
-#. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:700
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:784
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:828
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:895
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:939
-msgid "FAILED."
-msgstr "EPÄONNISTUI."
-
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:718
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "Otettiin %i virheenjäljityslähdettä käyttöön."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:725
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:682
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Etsitään virheenjäljityspaketteja"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:737
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:694
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Pakettia ”%s” ei löytynyt: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:760
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:717
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Debuginfo-pakettia ”%s” ei löytynyt: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:745
 #, c-format
 msgid "Found no packages to install."
 msgstr "Yhtään asennettavaa pakettia ei löytynyt."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:802
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
 #, c-format
 msgid "Found %i packages:"
 msgstr "Löytyi %i pakettia:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:818
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:775
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Etsitään näistä paketeista riippuvia paketteja"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:831
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "Riippuvia paketteja ei löytynyt: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:847
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:804
 #, c-format
 msgid "Found %i extra packages."
 msgstr "Löydettiin %i lisäpakettia."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:851
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
 #, c-format
 msgid "No extra packages required."
 msgstr "Lisäpaketteja ei tarvita."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:860
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:817
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "Löydettiin %i asennettavaa pakettia:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:873
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "Simulointitilassa ei asenneta paketteja"
 
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#, c-format
+msgid "Installing packages"
+msgstr "Asennetaan paketteja"
+
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:898
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:855
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "Paketteja ei voitu asentaa: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:930
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Poistetaan käytöstä aiemmin käyttöönotetut lähteet"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:942
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "Virheenjäljityslähteitä ei voitu poistaa käytöstä: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:957
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "Poistettiin käytöstä %i virheenjäljityslähdettä."
@@ -1453,6 +1044,443 @@ msgstr "PackageKit-pakettiluettelo"
 msgid "PackageKit Service Pack"
 msgstr "PackageKit-huoltopakkaus"
 
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "Anna numero väliltä 1-%i: "
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
+msgid "More than one package matches:"
+msgstr "Useita vastaavia paketteja saatavilla:"
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
+msgid "Please choose the correct package: "
+msgstr "Valitse oikea paketti:"
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
+msgid "Unknown state"
+msgstr "Tuntematon tila"
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
+msgid "Starting"
+msgstr "Käynnistetään"
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
+msgid "Waiting in queue"
+msgstr "Jonotetaan"
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
+msgid "Running"
+msgstr "Suoritetaan"
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
+msgid "Querying"
+msgstr "Kysellään"
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
+msgid "Getting information"
+msgstr "Haetaan tietoja"
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
+msgid "Removing packages"
+msgstr "Poistetaan paketteja"
+
+#. TRANSLATORS: transaction state, downloading package files
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+msgid "Downloading packages"
+msgstr "Ladataan paketteja"
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
+msgid "Refreshing software list"
+msgstr "Virkistetään ohjelmaluetteloa"
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
+msgid "Installing updates"
+msgstr "Asennetaan päivityksiä"
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
+msgid "Cleaning up packages"
+msgstr "Siivotaan paketteja"
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
+msgid "Obsoleting packages"
+msgstr "Vanhennetaan paketteja"
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
+msgid "Resolving dependencies"
+msgstr "Ratkaistaan riippuvuuksia"
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
+msgid "Checking signatures"
+msgstr "Tarkistetaan allekirjoituksia"
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+msgid "Rolling back"
+msgstr "Peruutetaan"
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
+msgid "Testing changes"
+msgstr "Testataan muutoksia"
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
+msgid "Committing changes"
+msgstr "Toteutetaan muutoksia"
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
+msgid "Requesting data"
+msgstr "Pyydetään dataa"
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
+msgid "Finished"
+msgstr "Valmis"
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
+msgid "Cancelling"
+msgstr "Perutaan"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
+msgid "Downloading repository information"
+msgstr "Ladataan asennuslähdetietoja"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
+msgid "Downloading list of packages"
+msgstr "Ladataan pakettiluetteloa"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
+msgid "Downloading file lists"
+msgstr "Ladataan tiedostoluetteloita"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
+msgid "Downloading lists of changes"
+msgstr "Ladataan muutosluetteloja"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
+msgid "Downloading groups"
+msgstr "Ladataan ryhmiä"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
+msgid "Downloading update information"
+msgstr "Ladataan päivitystietoja"
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
+msgid "Repackaging files"
+msgstr "Paketoidaan tiedostoja uudelleen"
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
+msgid "Loading cache"
+msgstr "Ladataan välimuistia"
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
+msgid "Scanning applications"
+msgstr "Etsitään ohjelmia"
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
+msgid "Generating package lists"
+msgstr "Luodaan pakettiluetteloita"
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
+msgid "Waiting for package manager lock"
+msgstr "Odotetaan paketinhallinnan lukkoa"
+
+#. TRANSLATORS: waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
+msgid "Waiting for authentication"
+msgstr "Odotetaan tunnistautumista"
+
+#. TRANSLATORS: we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
+msgid "Updating running applications"
+msgstr "Päivitetään suoritettavia ohjelmia"
+
+#. TRANSLATORS: we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
+msgid "Checking applications in use"
+msgstr "Etsitään käytössä olevia ohjelmia"
+
+#. TRANSLATORS: we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
+msgid "Checking libraries in use"
+msgstr "Etsitään käytössä olevia kirjastoja"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
+msgid "Trivial"
+msgstr "Vähäpätöinen"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
+msgid "Normal"
+msgstr "Tavallinen"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
+msgid "Important"
+msgstr "Tärkeä"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
+msgid "Security"
+msgstr "Turvallisuus"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
+msgid "Bug fix "
+msgstr "Virhekorjaus"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
+msgid "Enhancement"
+msgstr "Kehittävä"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
+msgid "Blocked"
+msgstr "Estetty"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
+msgid "Installed"
+msgstr "Asennettu"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
+msgid "Available"
+msgstr "Saatavilla"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
+msgid "Downloading"
+msgstr "Ladataan"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
+msgid "Updating"
+msgstr "Päivitetään"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+msgid "Installing"
+msgstr "Asennetaan"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+msgid "Removing"
+msgstr "Poistetaan"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
+msgid "Cleaning up"
+msgstr "Siivotaan"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
+msgid "Obsoleting"
+msgstr "Vanhennetaan"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
+msgid "Reinstalling"
+msgstr "Asennetaan uudelleen"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
+msgid "Downloaded"
+msgstr "Ladattu"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
+msgid "Removed"
+msgstr "Poistettu"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
+msgid "Cleaned up"
+msgstr "Siivottu"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
+msgid "Obsoleted"
+msgstr "Vanhennettu"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
+msgid "Reinstalled"
+msgstr "Asennettu uudelleen"
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:64
+msgid "Do you want to allow installing of unsigned software?"
+msgstr "Sallitaanko allekirjoittamattomien ohjelmistojen asentaminen?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:69
+msgid "The unsigned software will not be installed."
+msgstr "Allekirjoittamatonta ohjelmistoa ei asenneta."
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:102
+msgid "Software source signature required"
+msgstr "Ohjelmistolähteen allekirjoitus vaaditaan"
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:108
+msgid "Software source name"
+msgstr "Ohjelmistolähteen nimi"
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:111
+msgid "Key URL"
+msgstr "Avaimen osoite"
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:114
+msgid "Key user"
+msgstr "Avaimen käyttäjä"
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:117
+msgid "Key ID"
+msgstr "Avaimen tunniste"
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:120
+msgid "Key fingerprint"
+msgstr "Avaimen sormenjälki"
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:123
+msgid "Key Timestamp"
+msgstr "Avaimen aikaleima"
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:129
+msgid "Do you accept this signature?"
+msgstr "Hyväksytkö tämän allekirjoituksen?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:134
+msgid "The signature was not accepted."
+msgstr "Allekirjoitusta ei hyväksytty."
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:169
+msgid "End user licence agreement required"
+msgstr "Käyttöoikeussopimus vaaditaan"
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:178
+msgid "Agreement"
+msgstr "Sopimus"
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:184
+msgid "Do you accept this agreement?"
+msgstr "Hyväksytkö tämän sopimuksen?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:189
+msgid "The agreement was not accepted."
+msgstr "Sopimusta ei hyväksytty."
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:219
+msgid "Media change required"
+msgstr "Tallennusvälinettä on vaihdettava"
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:222
+msgid "Media type"
+msgstr "Tallennusvälineen tyyppi"
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:225
+msgid "Media label"
+msgstr "Tallennusvälineen nimiö"
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:228
+msgid "Text"
+msgstr "Teksti"
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:232
+msgid "Please insert the correct media"
+msgstr "Syötä oikea tallennusväline"
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:237
+msgid "The correct media was not inserted."
+msgstr "Oikeaa tallennusvälinettä ei syötetty."
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:252
+msgid "The following packages have to be removed:"
+msgstr "Seuraavat paketit on poistettava:"
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:257
+msgid "The following packages have to be installed:"
+msgstr "Seuraavat paketit on asennettava:"
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:262
+msgid "The following packages have to be updated:"
+msgstr "Seuraavat paketit on päivitettävä:"
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:267
+msgid "The following packages have to be reinstalled:"
+msgstr "Seuraavat paketit on asennettava uudelleen:"
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:272
+msgid "The following packages have to be downgraded:"
+msgstr "Seuraavat paketit on vaihdettava vanhempaan versioon:"
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:331
+msgid "Proceed with changes?"
+msgstr "Tehdäänkö muutokset?"
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:336
+msgid "The transaction did not proceed."
+msgstr "Transaktiota ei jatkettu."
+
 #. SECURITY:
 #. - Normal users do not require admin authentication to accept new
 #. licence agreements.
@@ -1739,10 +1767,150 @@ msgid "Many packages"
 msgstr "Useita paketteja"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:334
+#: ../src/pk-polkit-action-lookup.c:340
 msgid "Only trusted"
 msgstr "Vain luotetut"
 
+#~ msgid "Percentage"
+#~ msgstr "Prosentti"
+
+#~ msgid "Please restart the application as it is being used."
+#~ msgstr "Ohjelmaa käytetään tällä hetkellä, käynnistä se uudelleen."
+
+#~ msgid "The package %s is already installed"
+#~ msgstr "Paketti %s on jo asennettu"
+
+#~ msgid "The package %s could not be installed: %s"
+#~ msgstr "Pakettia %s ei voitu asentaa: %s"
+
+#~ msgid "The package install was canceled!"
+#~ msgstr "Pakettien asennus peruttiin!"
+
+#~ msgid "This tool could not install the packages: %s"
+#~ msgstr "Tämä työkalu ei voinut asentaa paketteja: %s"
+
+#~ msgid "This tool could not install the files: %s"
+#~ msgstr "Tämä työkalu ei voinut asentaa tiedostoja: %s"
+
+#~ msgid "This tool could not remove %s: %s"
+#~ msgstr "Tämä työkalu ei voinut poistaa pakettia %s: %s"
+
+#~ msgid "This tool could not remove the packages: %s"
+#~ msgstr "Tämä työkalu ei voinut poistaa paketteja: %s"
+
+#~ msgid "Proceed with additional packages?"
+#~ msgstr "Poistetaanko lisäpaketteja?"
+
+#~ msgid "The package removal was canceled!"
+#~ msgstr "Pakettien poisto peruttiin!"
+
+#~ msgid "This tool could not download the package %s as it could not be found"
+#~ msgstr "Ladattavaksi pyydettyä pakettia %s ei löytynyt"
+
+#~ msgid "This tool could not download the packages: %s"
+#~ msgstr "Tämä työkalu ei voinut ladata paketteja: %s"
+
+#~ msgid "This tool could not update %s: %s"
+#~ msgstr "Tämä työkalu ei voinut päivittää pakettia %s: %s"
+
+#~ msgid "The package update was canceled!"
+#~ msgstr "Pakettien päivitys peruttiin!"
+
+# TODO: tarkista
+#~ msgid "This tool could not get the requirements for %s: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea vaatijoita paketille %s: %s"
+
+# TODO: tarkista
+#~ msgid "This tool could not get the dependencies for %s: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea riippuvuuksia paketille %s: %s"
+
+#~ msgid "This tool could not get package details for %s: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea tietoja paketista %s: %s"
+
+#~ msgid "This tool could not find the files for %s: %s"
+#~ msgstr "Tämä työkalu ei löytänyt paketin %s tiedostoja: %s"
+
+#~ msgid "This tool could not get the file list for %s: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea paketin %s tiedostoluetteloa: %s"
+
+#~ msgid "File already exists: %s"
+#~ msgstr "Tiedosto on jo olemassa: %s"
+
+#~ msgid "This tool could not get package list: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea pakettiluetteloa: %s"
+
+#~ msgid "Failed to save to disk"
+#~ msgstr "Tallennus epäonnistui"
+
+#~ msgid "File does not exist: %s"
+#~ msgstr "Tiedostoa ei ole olemassa: %s"
+
+#~ msgid "Packages to add"
+#~ msgstr "Lisättävät paketit"
+
+#~ msgid "Packages to remove"
+#~ msgstr "Poistettavat paketit"
+
+#~ msgid "No new packages need to be installed"
+#~ msgstr "Yhtään uutta pakettia ei tarvitse asentaa"
+
+#~ msgid "Searching for package: "
+#~ msgstr "Etsitään pakettia: "
+
+#~ msgid "not found."
+#~ msgstr "ei löytynyt."
+
+#~ msgid "No packages can be found to install"
+#~ msgstr "Asennettavia paketteja ei löytynyt"
+
+#~ msgid "This tool could not find the update details for %s: %s"
+#~ msgstr "Tämä työkalu ei löytänyt paketin %s päivitystietoja: %s"
+
+#~ msgid "This tool could not get the update details for %s: %s"
+#~ msgstr "Tämä työkalu ei voinut hakea paketin %s päivitystietoja: %s"
+
+#~ msgid "Error:"
+#~ msgstr "Virhe:"
+
+#~ msgid "Repository signature required"
+#~ msgstr "Asennuslähteen allekirjoitus vaaditaan"
+
+#~ msgid "End user license agreement required"
+#~ msgstr "Käyttöoikeussopimus vaaditaan"
+
+#~ msgid "Do you agree to this license?"
+#~ msgstr "Hyväksytkö tämän käyttöoikeussopimuksen?"
+
+#~ msgid "The license was refused."
+#~ msgstr "Käyttöoikeussopimusta ei hyväksytty"
+
+#~ msgid "This tool could not connect to system DBUS."
+#~ msgstr "Tämä työkalu ei voinut yhdistää järjestelmän DBUSiin."
+
+#~ msgid "A package name or filename to install is required"
+#~ msgstr "Paketin nimi tai asennettavan tiedoston nimi on annettava"
+
+#~ msgid "A list file name to create is required"
+#~ msgstr "Luotavan luettelotiedoston nimi on annetta"
+
+#~ msgid "A list file to open is required"
+#~ msgstr "Avattavan luettelotiedoston nimi on annettava"
+
+#~ msgid "Incorrect privileges for this operation"
+#~ msgstr "Sinulla ei ole tähän toimintoon tarvittavia oikeuksia"
+
+#~ msgid "Cannot show the list of transactions"
+#~ msgstr "Transaktioluetteloa ei voida näyttää"
+
+#~ msgid "EULA ID"
+#~ msgstr "Käyttöoikeussopimuksen tunniste"
+
+#~ msgid "Media ID"
+#~ msgstr "Tallennusvälineen tunniste"
+
+#~ msgid "The package could not be found"
+#~ msgstr "Pakettia ei löytynyt"
+
 #~ msgid "You need to specify a search type, e.g. name"
 #~ msgstr "Haun tyyppi on annettava, esim. nimi"
 
@@ -1791,9 +1959,6 @@ msgstr "Vain luotetut"
 #~ msgid "Could not find package to remove"
 #~ msgstr "Poistettavaksi pyydettyä pakettia ei löytynyt"
 
-#~ msgid "Cancelled!"
-#~ msgstr "Peruttu!"
-
 #~ msgid "Could not find package to update"
 #~ msgstr "Päivitettäväksi pyydettyä pakettia ei löytynyt"
 
commit c5cb444ae46ef94b141ffb38f7cbfdba546dc38e
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 11:51:27 2009 +0100

    trivial: fix up a few includes missed on the glib to glib2 port

diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index e243222..03f8fcf 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -23,7 +23,7 @@
 #include <glib.h>
 #include <string.h>
 #include <stdlib.h>
-#include <packagekit-glib/packagekit.h>
+#include <packagekit-glib2/packagekit.h>
 
 #include <pk-backend.h>
 
diff --git a/backends/yum/pk-backend-yum.c b/backends/yum/pk-backend-yum.c
index 53bb947..9b20fd7 100644
--- a/backends/yum/pk-backend-yum.c
+++ b/backends/yum/pk-backend-yum.c
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#include <packagekit-glib/packagekit.h>
+#include <packagekit-glib2/packagekit.h>
 #include <pk-backend.h>
 #include <pk-backend-spawn.h>
 #include <string.h>
diff --git a/lib/packagekit-glib2/pk-progress-bar.h b/lib/packagekit-glib2/pk-progress-bar.h
index 6ea14b0..2ab7874 100644
--- a/lib/packagekit-glib2/pk-progress-bar.h
+++ b/lib/packagekit-glib2/pk-progress-bar.h
@@ -23,7 +23,7 @@
 #define __PK_PROGRESS_BAR_H
 
 #include <glib-object.h>
-#include <packagekit-glib/packagekit.h>
+#include <packagekit-glib2/packagekit.h>
 
 G_BEGIN_DECLS
 
commit f48ec5e1feb2f23b59a51c70b858fe963b1f73d6
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 11:36:53 2009 +0100

    trivial: fix self check on Fedora

diff --git a/src/pk-lsof.c b/src/pk-lsof.c
index eeb7c7d..fea94d6 100644
--- a/src/pk-lsof.c
+++ b/src/pk-lsof.c
@@ -328,7 +328,7 @@ pk_lsof_test (EggTest *test)
 	gboolean ret;
 	PkLsof *lsof;
 	GPtrArray *pids;
-	gchar *files[] = { "/lib/libssl3.so", NULL };
+	gchar *files[] = { "/usr/lib/libssl3.so", NULL };
 
 	if (!egg_test_start (test, "PkLsof"))
 		return;
commit 02194b797428948052522c8c6b7138ab07112e04
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 11:34:56 2009 +0100

    trivial: move the main egg-x.[c|h] files into src/ and symlink to them there

diff --git a/contrib/command-not-found/egg-debug.c b/contrib/command-not-found/egg-debug.c
index cc37e68..98fd102 120000
--- a/contrib/command-not-found/egg-debug.c
+++ b/contrib/command-not-found/egg-debug.c
@@ -1 +1 @@
-../../lib/packagekit-glib/egg-debug.c
\ No newline at end of file
+../../src/egg-debug.c
\ No newline at end of file
diff --git a/contrib/command-not-found/egg-debug.h b/contrib/command-not-found/egg-debug.h
index ccc6364..13de545 120000
--- a/contrib/command-not-found/egg-debug.h
+++ b/contrib/command-not-found/egg-debug.h
@@ -1 +1 @@
-../../lib/packagekit-glib/egg-debug.h
\ No newline at end of file
+../../src/egg-debug.h
\ No newline at end of file
diff --git a/contrib/command-not-found/egg-string.c b/contrib/command-not-found/egg-string.c
index 5f8fce4..da9b4c3 120000
--- a/contrib/command-not-found/egg-string.c
+++ b/contrib/command-not-found/egg-string.c
@@ -1 +1 @@
-../../lib/packagekit-glib/egg-string.c
\ No newline at end of file
+../../src/egg-string.c
\ No newline at end of file
diff --git a/contrib/command-not-found/egg-string.h b/contrib/command-not-found/egg-string.h
index 620a81c..6186dac 120000
--- a/contrib/command-not-found/egg-string.h
+++ b/contrib/command-not-found/egg-string.h
@@ -1 +1 @@
-../../lib/packagekit-glib/egg-string.h
\ No newline at end of file
+../../src/egg-string.h
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-debug.c b/lib/packagekit-glib/egg-debug.c
deleted file mode 100644
index c23a199..98fd102
--- a/lib/packagekit-glib/egg-debug.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:egg-debug
- * @short_description: Debugging functions
- *
- * This file contains functions that can be used for debugging.
- */
-
-#include "config.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <glib/gprintf.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <fcntl.h>
-#include <time.h>
-
-#ifdef HAVE_EXECINFO_H
-#include <execinfo.h>
-#endif
-
-#include "egg-debug.h"
-
-#define CONSOLE_RESET		0
-#define CONSOLE_BLACK 		30
-#define CONSOLE_RED		31
-#define CONSOLE_GREEN		32
-#define CONSOLE_YELLOW		33
-#define CONSOLE_BLUE		34
-#define CONSOLE_MAGENTA		35
-#define CONSOLE_CYAN		36
-#define CONSOLE_WHITE		37
-
-static gint fd = -1;
-
-/**
- * pk_set_console_mode:
- **/
-static void
-pk_set_console_mode (guint console_code)
-{
-	gchar command[13];
-
-	/* don't put extra commands into logs */
-	if (!egg_debug_is_console ())
-		return;
-
-	/* Command is the control command to the terminal */
-	g_snprintf (command, 13, "%c[%dm", 0x1B, console_code);
-	printf ("%s", command);
-}
-
-/**
- * egg_debug_backtrace:
- **/
-void
-egg_debug_backtrace (void)
-{
-#ifdef HAVE_EXECINFO_H
-	void *call_stack[512];
-	int  call_stack_size;
-	char **symbols;
-	int i = 1;
-
-	call_stack_size = backtrace (call_stack, G_N_ELEMENTS (call_stack));
-	symbols = backtrace_symbols (call_stack, call_stack_size);
-	if (symbols != NULL) {
-		pk_set_console_mode (CONSOLE_RED);
-		g_print ("Traceback:\n");
-		while (i < call_stack_size) {
-			g_print ("\t%s\n", symbols[i]);
-			i++;
-		}
-		pk_set_console_mode (CONSOLE_RESET);
-		free (symbols);
-	}
-#endif
-}
-
-/**
- * pk_log_line:
- **/
-static void
-pk_log_line (const gchar *buffer)
-{
-	ssize_t count;
-	/* open a file */
-	if (fd == -1) {
-		/* ITS4: ignore, /var/log/foo is owned by root, and this is just debug text */
-		fd = open (EGG_LOG_FILE, O_WRONLY|O_APPEND|O_CREAT, 0644);
-		if (fd == -1)
-			g_error ("could not open log: '%s'", EGG_LOG_FILE);
-	}
-
-	/* ITS4: ignore, debug text always NULL terminated */
-	count = write (fd, buffer, strlen (buffer));
-	if (count == -1)
-		g_warning ("could not write %s", buffer);
-	/* newline */
-	count = write (fd, "\n", 1);
-	if (count == -1)
-		g_warning ("could not write newline");
-}
-
-/**
- * pk_print_line:
- **/
-static void
-pk_print_line (const gchar *func, const gchar *file, const int line, const gchar *buffer, guint color)
-{
-	gchar *str_time;
-	gchar *header;
-	time_t the_time;
-	struct timeval time_val;
-
-	time (&the_time);
-	gettimeofday (&time_val, NULL);
-	str_time = g_new0 (gchar, 255);
-	strftime (str_time, 254, "%H:%M:%S", localtime (&the_time));
-
-	/* generate header text */
-	header = g_strdup_printf ("TI:%s.%i\tFI:%s\tFN:%s,%d", str_time, (gint) time_val.tv_usec / 1000, file, func, line);
-	g_free (str_time);
-
-	/* always in light green */
-	pk_set_console_mode (CONSOLE_GREEN);
-	printf ("%s\n", header);
-
-	/* different colors according to the severity */
-	pk_set_console_mode (color);
-	printf (" - %s\n", buffer);
-	pk_set_console_mode (CONSOLE_RESET);
-
-	/* log to a file */
-	if (egg_debug_is_logging ()) {
-		pk_log_line (header);
-		pk_log_line (buffer);
-	}
-
-	/* flush this output, as we need to debug */
-	fflush (stdout);
-
-	g_free (header);
-}
-
-/**
- * egg_debug_real:
- **/
-void
-egg_debug_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
-{
-	va_list args;
-	gchar *buffer = NULL;
-
-	if (!egg_debug_enabled ())
-		return;
-
-	va_start (args, format);
-	g_vasprintf (&buffer, format, args);
-	va_end (args);
-
-	pk_print_line (func, file, line, buffer, CONSOLE_BLUE);
-
-	g_free(buffer);
-}
-
-/**
- * egg_warning_real:
- **/
-void
-egg_warning_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
-{
-	va_list args;
-	gchar *buffer = NULL;
-
-	if (!egg_debug_enabled ())
-		return;
-
-	va_start (args, format);
-	g_vasprintf (&buffer, format, args);
-	va_end (args);
-
-	/* do extra stuff for a warning */
-	if (!egg_debug_is_console ())
-		printf ("*** WARNING ***\n");
-	pk_print_line (func, file, line, buffer, CONSOLE_RED);
-
-	g_free(buffer);
-}
-
-/**
- * egg_error_real:
- **/
-void
-egg_error_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
-{
-	va_list args;
-	gchar *buffer = NULL;
-
-	va_start (args, format);
-	g_vasprintf (&buffer, format, args);
-	va_end (args);
-
-	/* do extra stuff for a warning */
-	if (!egg_debug_is_console ())
-		printf ("*** ERROR ***\n");
-	pk_print_line (func, file, line, buffer, CONSOLE_RED);
-	g_free(buffer);
-
-	/* we want to fix this! */
-	egg_debug_backtrace ();
-
-	exit (1);
-}
-
-/**
- * egg_debug_enabled:
- *
- * Returns: TRUE if we have debugging enabled
- **/
-gboolean
-egg_debug_enabled (void)
-{
-	const gchar *env;
-	env = g_getenv (EGG_VERBOSE);
-	return (g_strcmp0 (env, "1") == 0);
-}
-
-/**
- * egg_debug_is_logging:
- *
- * Returns: TRUE if we have logging enabled
- **/
-gboolean
-egg_debug_is_logging (void)
-{
-	const gchar *env;
-	env = g_getenv (EGG_LOGGING);
-	return (g_strcmp0 (env, "1") == 0);
-}
-
-/**
- * egg_debug_is_console:
- *
- * Returns: TRUE if we have debugging enabled
- **/
-gboolean
-egg_debug_is_console (void)
-{
-	const gchar *env;
-	env = g_getenv (EGG_CONSOLE);
-	return (g_strcmp0 (env, "1") == 0);
-}
-
-/**
- * egg_debug_set_logging:
- **/
-void
-egg_debug_set_logging (gboolean enabled)
-{
-	if (enabled)
-		g_setenv (EGG_LOGGING, "1", TRUE);
-	else
-		g_setenv (EGG_LOGGING, "0", TRUE);
-
-	if (egg_debug_is_logging ())
-		egg_debug ("logging to %s", EGG_LOG_FILE);
-}
-
-/**
- * egg_debug_init:
- * @debug: If we should print out verbose logging
- **/
-void
-egg_debug_init (gboolean debug)
-{
-	/* check if we are on console */
-	if (isatty (fileno (stdout)) == 1)
-		g_setenv (EGG_CONSOLE, "1", FALSE);
-	else
-		g_setenv (EGG_CONSOLE, "0", FALSE);
-	if (debug)
-		g_setenv (EGG_VERBOSE, "1", FALSE);
-	else
-		g_setenv (EGG_VERBOSE, "0", FALSE);
-	egg_debug ("Verbose debugging %i (on console %i)%s", egg_debug_enabled (), egg_debug_is_console (), EGG_VERBOSE);
-}
-
diff --git a/lib/packagekit-glib/egg-debug.c b/lib/packagekit-glib/egg-debug.c
new file mode 120000
index c23a199..98fd102
--- /dev/null
+++ b/lib/packagekit-glib/egg-debug.c
@@ -0,0 +1 @@
+../../src/egg-debug.c
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-debug.h b/lib/packagekit-glib/egg-debug.h
deleted file mode 100644
index c935dcb..13de545
--- a/lib/packagekit-glib/egg-debug.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_DEBUG_H
-#define __EGG_DEBUG_H
-
-#include <stdarg.h>
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-/**
- * egg_debug:
- *
- * Non critical debugging
- */
-#define egg_debug(...) egg_debug_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
-
-/**
- * egg_warning:
- *
- * Important debugging
- */
-#define egg_warning(...) egg_warning_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
-
-/**
- * egg_error:
- *
- * Critical debugging, with exit
- */
-#define egg_error(...) egg_error_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
-
-#elif defined(__GNUC__) && __GNUC__ >= 3
-#define egg_debug(...) egg_debug_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
-#define egg_warning(...) egg_warning_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
-#define egg_error(...) egg_error_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
-#else
-#define egg_debug(...)
-#define egg_warning(...)
-#define egg_error(...)
-#endif
-
-void		egg_debug_init			(gboolean	 debug);
-void		egg_debug_set_logging		(gboolean	 enabled);
-gboolean	egg_debug_enabled		(void);
-gboolean	egg_debug_is_logging		(void);
-gboolean	egg_debug_is_console		(void);
-void		egg_debug_backtrace		(void);
-void		egg_debug_real			(const gchar	*func,
-						 const gchar	*file,
-						 int		 line,
-						 const gchar	*format, ...) __attribute__((format (printf,4,5)));
-void		egg_warning_real		(const gchar	*func,
-						 const gchar	*file,
-						 int		 line,
-						 const gchar	*format, ...) __attribute__((format (printf,4,5)));
-void		egg_error_real			(const gchar	*func,
-						 const gchar	*file,
-						 int		 line,
-						 const gchar	*format, ...) G_GNUC_NORETURN __attribute__((format (printf,4,5)));
-
-G_END_DECLS
-
-#endif /* __EGG_DEBUG_H */
diff --git a/lib/packagekit-glib/egg-debug.h b/lib/packagekit-glib/egg-debug.h
new file mode 120000
index c935dcb..13de545
--- /dev/null
+++ b/lib/packagekit-glib/egg-debug.h
@@ -0,0 +1 @@
+../../src/egg-debug.h
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-string.c b/lib/packagekit-glib/egg-string.c
deleted file mode 100644
index 054b0cc..da9b4c3
--- a/lib/packagekit-glib/egg-string.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:pk-common
- * @short_description: Common utility functions for PackageKit
- *
- * This file contains functions that may be useful.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/utsname.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-#include <glib.h>
-
-#include "egg-debug.h"
-#include "egg-string.h"
-
-/**
- * egg_strtoint:
- * @text: The text the convert
- * @value: The return numeric return value
- *
- * Converts a string into a signed integer value in a safe way.
- *
- * Return value: %TRUE if the string was converted correctly
- **/
-gboolean
-egg_strtoint (const gchar *text, gint *value)
-{
-	gchar *endptr = NULL;
-	gint64 value_raw;
-
-	/* invalid */
-	if (text == NULL)
-		return FALSE;
-
-	/* parse */
-	value_raw = g_ascii_strtoll (text, &endptr, 10);
-
-	/* parsing error */
-	if (endptr == text)
-		return FALSE;
-
-	/* out of range */
-	if (value_raw > G_MAXINT || value_raw < G_MININT)
-		return FALSE;
-
-	/* cast back down to value */
-	*value = (gint) value_raw;
-	return TRUE;
-}
-
-/**
- * egg_strtouint:
- * @text: The text the convert
- * @value: The return numeric return value
- *
- * Converts a string into a unsigned integer value in a safe way.
- *
- * Return value: %TRUE if the string was converted correctly
- **/
-gboolean
-egg_strtouint (const gchar *text, guint *value)
-{
-	gchar *endptr = NULL;
-	guint64 value_raw;
-
-	/* invalid */
-	if (text == NULL)
-		return FALSE;
-
-	/* parse */
-	value_raw = g_ascii_strtoull (text, &endptr, 10);
-
-	/* parsing error */
-	if (endptr == text)
-		return FALSE;
-
-	/* out of range */
-	if (value_raw > G_MAXINT)
-		return FALSE;
-
-	/* cast back down to value */
-	*value = (guint) value_raw;
-	return TRUE;
-}
-
-/**
- * egg_strzero:
- * @text: The text to check
- *
- * This function is a much safer way of doing "if (strlen (text) == 0))"
- * as it does not rely on text being NULL terminated. It's also much
- * quicker as it only checks the first byte rather than scanning the whole
- * string just to verify it's not zero length.
- *
- * Return value: %TRUE if the string was converted correctly
- **/
-gboolean
-egg_strzero (const gchar *text)
-{
-	if (text == NULL)
-		return TRUE;
-	if (text[0] == '\0')
-		return TRUE;
-	return FALSE;
-}
-
-/**
- * egg_strlen:
- * @text: The text to check
- * @len: The maximum length of the string
- *
- * This function is a much safer way of doing strlen as it checks for NULL and
- * a stupidly long string.
- *
- * Return value: the length of the string, or len if the string is too long.
- **/
-guint
-egg_strlen (const gchar *text, guint len)
-{
-	guint i;
-
-	/* common case */
-	if (text == NULL || text[0] == '\0')
-		return 0;
-
-	/* only count up to len */
-	for (i=1; i<len; i++) {
-		if (text[i] == '\0')
-			break;
-	}
-	return i;
-}
-
-/**
- * egg_strvequal:
- * @id1: the first item of text to test
- * @id2: the second item of text to test
- *
- * This function will check to see if the GStrv arrays are string equal
- *
- * Return value: %TRUE if the arrays are the same, or are both %NULL
- **/
-gboolean
-egg_strvequal (gchar **id1, gchar **id2)
-{
-	guint i;
-	guint length1;
-	guint length2;
-
-	if (id1 == NULL && id2 == NULL)
-		return TRUE;
-
-	if (id1 == NULL || id2 == NULL) {
-		egg_debug ("GStrv compare invalid '%p' and '%p'", id1, id2);
-		return FALSE;
-	}
-
-	/* check different sizes */
-	length1 = g_strv_length (id1);
-	length2 = g_strv_length (id2);
-	if (length1 != length2)
-		return FALSE;
-
-	/* text equal each one */
-	for (i=0; i<length1; i++) {
-		if (g_strcmp0 (id1[i], id2[i]) != 0)
-			return FALSE;
-	}
-
-	return TRUE;
-}
-
-/**
- * egg_strreplace:
- * @text: The input text to make safe
- * @find: What to search for
- * @replace: What to replace with
- *
- * Replaces chars in the text with a replacement.
- * The %find and %replace variables to not have to be of the same length
- *
- * Return value: the new string (copied)
- **/
-gchar *
-egg_strreplace (const gchar *text, const gchar *find, const gchar *replace)
-{
-	gchar **array;
-	gchar *retval;
-
-	/* common case, not found */
-	if (strstr (text, find) == NULL) {
-		return g_strdup (text);
-	}
-
-	/* split apart and rejoin with new delimiter */
-	array = g_strsplit (text, find, 0);
-	retval = g_strjoinv (replace, array);
-	g_strfreev (array);
-	return retval;
-}
-
-/***************************************************************************
- ***                          MAKE CHECK TESTS                           ***
- ***************************************************************************/
-#ifdef EGG_TEST
-#include "egg-test.h"
-
-void
-egg_string_test (gpointer user_data)
-{
-	EggTest *test = (EggTest *) user_data;
-	gboolean ret;
-	gchar *text_safe;
-	const gchar *temp;
-	guint length;
-	gint value;
-	guint uvalue;
-	gchar **id1;
-	gchar **id2;
-
-	if (!egg_test_start (test, "EggString"))
-		return;
-
-	/************************************************************
-	 ****************    String array equal    ******************
-	 ************************************************************/
-	egg_test_title (test, "egg_strvequal same argument");
-	id1 = g_strsplit ("the quick brown fox", " ", 0);
-	if (egg_strvequal (id1, id1))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "incorrect ret when both same");
-	g_strfreev (id1);
-
-	/************************************************************/
-	egg_test_title (test, "egg_strvequal same");
-	id1 = g_strsplit ("the quick brown fox", " ", 0);
-	id2 = g_strsplit ("the quick brown fox", " ", 0);
-	if (egg_strvequal (id1, id2))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "incorrect ret when both same");
-	g_strfreev (id1);
-	g_strfreev (id2);
-
-	/************************************************************/
-	egg_test_title (test, "egg_strvequal different lengths");
-	id1 = g_strsplit ("the quick brown", " ", 0);
-	id2 = g_strsplit ("the quick brown fox", " ", 0);
-	if (!egg_strvequal (id1, id2))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "incorrect ret when both same");
-	g_strfreev (id1);
-	g_strfreev (id2);
-
-	/************************************************************/
-	egg_test_title (test, "egg_strvequal different");
-	id1 = g_strsplit ("the quick brown fox", " ", 0);
-	id2 = g_strsplit ("richard hughes maintainer dude", " ", 0);
-	if (!egg_strvequal (id1, id2))
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "same when different");
-	g_strfreev (id1);
-	g_strfreev (id2);
-
-	/************************************************************
-	 ****************          Zero            ******************
-	 ************************************************************/
-	temp = NULL;
-	egg_test_title (test, "test strzero (null)");
-	ret = egg_strzero (NULL);
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed null");
-
-	/************************************************************/
-	egg_test_title (test, "test strzero (null first char)");
-	ret = egg_strzero ("");
-	if (ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed null");
-
-	/************************************************************/
-	egg_test_title (test, "test strzero (long string)");
-	ret = egg_strzero ("Richard");
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "zero length word!");
-
-	/************************************************************/
-	egg_test_title (test, "id strcmp pass");
-	ret = (g_strcmp0 ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora") == 0);
-	egg_test_assert (test, ret);
-
-	/************************************************************/
-	egg_test_title (test, "id strcmp fail");
-	ret = (g_strcmp0 ("moo;0.0.1;i386;fedora", "moo;0.0.2;i386;fedora") == 0);
-	egg_test_assert (test, !ret);
-
-	/************************************************************
-	 ****************          strlen          ******************
-	 ************************************************************/
-	egg_test_title (test, "strlen bigger");
-	length = egg_strlen ("123456789", 20);
-	if (length == 9)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the strlen %i", length);
-
-	/************************************************************/
-	egg_test_title (test, "strlen smaller");
-	length = egg_strlen ("123456789", 5);
-	if (length == 5)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the strlen %i", length);
-
-	/************************************************************/
-	egg_test_title (test, "strlen correct");
-	length = egg_strlen ("123456789", 9);
-	if (length == 9)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the strlen %i", length);
-
-	/************************************************************
-	 ****************         Replace          ******************
-	 ************************************************************/
-	egg_test_title (test, "replace start");
-	text_safe = egg_strreplace ("richard\nhughes", "r", "e");
-	if (g_strcmp0 (text_safe, "eichaed\nhughes") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "replace none");
-	text_safe = egg_strreplace ("richard\nhughes", "dave", "e");
-	if (g_strcmp0 (text_safe, "richard\nhughes") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "replace end");
-	text_safe = egg_strreplace ("richard\nhughes", "s", "e");
-	if (g_strcmp0 (text_safe, "richard\nhughee") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************/
-	egg_test_title (test, "replace unicode");
-	text_safe = egg_strreplace ("richard\n- hughes", "\n- ", "\n• ");
-	if (g_strcmp0 (text_safe, "richard\n• hughes") == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "failed the replace '%s'", text_safe);
-	g_free (text_safe);
-
-	/************************************************************
-	 **************        Convert numbers       ****************
-	 ************************************************************/
-	egg_test_title (test, "convert valid number");
-	ret = egg_strtoint ("234", &value);
-	if (ret && value == 234)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", value);
-
-	/************************************************************/
-	egg_test_title (test, "convert negative valid number");
-	ret = egg_strtoint ("-234", &value);
-	if (ret && value == -234)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", value);
-
-	/************************************************************/
-	egg_test_title (test, "don't convert invalid number");
-	ret = egg_strtoint ("dave", &value);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", value);
-
-	/************************************************************/
-	egg_test_title (test, "convert NULL to a number");
-	ret = egg_strtouint (NULL, &uvalue);
-	if (!ret)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", uvalue);
-
-	/************************************************************/
-	egg_test_title (test, "convert valid uint number");
-	ret = egg_strtouint ("234", &uvalue);
-	if (ret && uvalue == 234)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", uvalue);
-
-	/************************************************************/
-	egg_test_title (test, "convert invalid uint number");
-	ret = egg_strtouint ("-234", &uvalue);
-	if (ret == FALSE)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "value is %i", uvalue);
-
-	egg_test_end (test);
-}
-#endif
-
diff --git a/lib/packagekit-glib/egg-string.c b/lib/packagekit-glib/egg-string.c
new file mode 120000
index 054b0cc..da9b4c3
--- /dev/null
+++ b/lib/packagekit-glib/egg-string.c
@@ -0,0 +1 @@
+../../src/egg-string.c
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-string.h b/lib/packagekit-glib/egg-string.h
deleted file mode 100644
index 5c7cf32..6186dac
--- a/lib/packagekit-glib/egg-string.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_STRING_H
-#define __EGG_STRING_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-guint		 egg_strlen				(const gchar	*text,
-							 guint		 len)
-							 G_GNUC_WARN_UNUSED_RESULT;
-gboolean	 egg_strzero				(const gchar	*text)
-							 G_GNUC_WARN_UNUSED_RESULT;
-gboolean	 egg_strvequal				(gchar		**id1,
-							 gchar		**id2)
-							 G_GNUC_WARN_UNUSED_RESULT;
-gboolean	 egg_strtoint				(const gchar	*text,
-							 gint		*value);
-gboolean	 egg_strtouint				(const gchar	*text,
-							 guint		*value);
-gchar		*egg_strreplace				(const gchar	*text,
-							 const gchar	*find,
-							 const gchar	*replace);
-void		 egg_string_test			(gpointer	 user_data);
-
-G_END_DECLS
-
-#endif /* __EGG_STRING_H */
diff --git a/lib/packagekit-glib/egg-string.h b/lib/packagekit-glib/egg-string.h
new file mode 120000
index 5c7cf32..6186dac
--- /dev/null
+++ b/lib/packagekit-glib/egg-string.h
@@ -0,0 +1 @@
+../../src/egg-string.h
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-test.c b/lib/packagekit-glib/egg-test.c
deleted file mode 100644
index ef4eef3..ad24c4f
--- a/lib/packagekit-glib/egg-test.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <glib.h>
-#include <string.h>
-#include <glib/gprintf.h>
-
-#include "egg-test.h"
-
-struct EggTest {
-	guint		 total;
-	guint		 succeeded;
-	gboolean	 started;
-	gboolean	 titled;
-	gchar		*type;
-	GTimer		*timer;
-	GMainLoop	*loop;
-	guint		 hang_loop_id;
-	gpointer	 user_data;
-};
-
-/**
- * egg_test_init:
- **/
-EggTest *
-egg_test_init ()
-{
-	EggTest *test;
-	test = g_new (EggTest, 1);
-	test->total = 0;
-	test->succeeded = 0;
-	test->type = NULL;
-	test->started = FALSE;
-	test->titled = FALSE;
-	test->timer = g_timer_new ();
-	test->loop = g_main_loop_new (NULL, FALSE);
-	test->hang_loop_id = 0;
-	return test;
-}
-
-/**
- * egg_test_loop_quit:
- **/
-void
-egg_test_loop_quit (EggTest *test)
-{
-	/* disable the loop watch */
-	if (test->hang_loop_id != 0) {
-		g_source_remove (test->hang_loop_id);
-		test->hang_loop_id = 0;
-	}
-	g_main_loop_quit (test->loop);
-}
-
-/**
- * egg_test_hang_check:
- **/
-static gboolean
-egg_test_hang_check (gpointer data)
-{
-	EggTest *test = (EggTest *) data;
-	g_main_loop_quit (test->loop);
-	return FALSE;
-}
-
-/**
- * egg_test_loop_wait:
- **/
-void
-egg_test_loop_wait (EggTest *test, guint timeout)
-{
-	test->hang_loop_id = g_timeout_add (timeout, egg_test_hang_check, test);
-	g_main_loop_run (test->loop);
-}
-
-/**
- * egg_test_loop_check:
- **/
-void
-egg_test_loop_check (EggTest *test)
-{
-	guint elapsed = egg_test_elapsed (test);
-	egg_test_title (test, "did we timeout out of the loop");
-	if (test->hang_loop_id == 0) {
-		egg_test_success (test, "loop blocked for %ims", elapsed);
-	} else {
-		egg_test_failed (test, "hangcheck saved us after %ims", elapsed);
-	}
-}
-
-/**
- * egg_test_set_user_data:
- **/
-void
-egg_test_set_user_data (EggTest *test, gpointer user_data)
-{
-	test->user_data = user_data;
-}
-
-/**
- * egg_test_get_user_data:
- **/
-gpointer
-egg_test_get_user_data (EggTest *test)
-{
-	return test->user_data;
-}
-
-/**
- * egg_test_finish:
- **/
-gint
-egg_test_finish (EggTest *test)
-{
-	gint retval;
-	g_print ("test passes (%u/%u) : ", test->succeeded, test->total);
-	if (test->succeeded == test->total) {
-		g_print ("ALL OKAY\n");
-		retval = 0;
-	} else {
-		g_print ("%u FAILURE(S)\n", test->total - test->succeeded);
-		retval = 1;
-	}
-
-	g_timer_destroy (test->timer);
-	g_main_loop_unref (test->loop);
-	g_free (test);
-
-	return retval;
-}
-
-/**
- * egg_test_elapsed:
- *
- * Returns: time in ms
- **/
-guint
-egg_test_elapsed (EggTest *test)
-{
-	gdouble time_s;
-	time_s = g_timer_elapsed (test->timer, NULL);
-	return (guint) (time_s * 1000.0f);
-}
-
-/**
- * egg_test_start:
- **/
-gboolean
-egg_test_start (EggTest *test, const gchar *name)
-{
-	if (test->started) {
-		g_print ("Not ended test! Cannot start!\n");
-		exit (1);
-	}
-	test->type = g_strdup (name);
-	test->started = TRUE;
-	return TRUE;
-}
-
-/**
- * egg_test_end:
- **/
-void
-egg_test_end (EggTest *test)
-{
-	if (test->started == FALSE) {
-		g_print ("Not started test! Cannot finish!\n");
-		exit (1);
-	}
-
-	/* disable hang check */
-	if (test->hang_loop_id != 0) {
-		g_source_remove (test->hang_loop_id);
-		test->hang_loop_id = 0;
-	}
-
-	/* remove all the test callbacks */
-	while (g_source_remove_by_user_data (test))
-		g_print ("WARNING: removed callback for test module");
-
-	/* check we don't have any pending iterations */
-	if (g_main_context_pending (NULL)) {
-		g_print ("WARNING: Pending event in context! Running to completion... ");
-		while (g_main_context_pending (NULL))
-			g_main_context_iteration (NULL, TRUE);
-		g_print ("Done!\n");
-	}
-
-	test->started = FALSE;
-	g_free (test->type);
-}
-
-/**
- * egg_test_title:
- **/
-void
-egg_test_title (EggTest *test, const gchar *format, ...)
-{
-	va_list args;
-	gchar *va_args_buffer = NULL;
-
-	/* already titled? */
-	if (test->titled) {
-		g_print ("Already titled!\n");
-		exit (1);
-	}
-
-	/* reset the value egg_test_elapsed replies with */
-	g_timer_reset (test->timer);
-
-	va_start (args, format);
-	g_vasprintf (&va_args_buffer, format, args);
-	va_end (args);
-	g_print ("> check #%u\t%s: \t%s...", test->total+1, test->type, va_args_buffer);
-	g_free (va_args_buffer);
-
-	test->titled = TRUE;
-	test->total++;
-}
-
-/**
- * egg_test_success:
- **/
-void
-egg_test_success (EggTest *test, const gchar *format, ...)
-{
-	va_list args;
-	gchar *va_args_buffer = NULL;
-
-	/* not titled? */
-	if (!test->titled) {
-		g_print ("Not titled!\n");
-		exit (1);
-	}
-	if (format == NULL) {
-		g_print ("...OK\n");
-		goto finish;
-	}
-	va_start (args, format);
-	g_vasprintf (&va_args_buffer, format, args);
-	va_end (args);
-	g_print ("...OK [%s]\n", va_args_buffer);
-	g_free (va_args_buffer);
-finish:
-	test->titled = FALSE;
-	test->succeeded++;
-}
-
-/**
- * egg_test_failed:
- **/
-void
-egg_test_failed (EggTest *test, const gchar *format, ...)
-{
-	va_list args;
-	gchar *va_args_buffer = NULL;
-
-	/* not titled? */
-	if (!test->titled) {
-		g_print ("Not titled!\n");
-		exit (1);
-	}
-	if (format == NULL) {
-		g_print ("FAILED\n");
-		goto failed;
-	}
-	va_start (args, format);
-	g_vasprintf (&va_args_buffer, format, args);
-	va_end (args);
-	g_print ("FAILED [%s]\n", va_args_buffer);
-	g_free (va_args_buffer);
-failed:
-	exit (1);
-}
-
-/**
- * egg_test_assert:
- **/
-void
-egg_test_assert (EggTest *test, gboolean value)
-{
-	if (value)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
-}
-
-/**
- * egg_test_title_assert:
- **/
-void
-egg_test_title_assert (EggTest *test, const gchar *text, gboolean value)
-{
-	egg_test_title (test, "%s", text);
-	if (value)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, NULL);
-}
-
-/**
- * egg_test_get_data_file:
- **/
-gchar *
-egg_test_get_data_file (const gchar *filename)
-{
-	gboolean ret;
-	gchar *full;
-
-	/* check to see if we are being run in the build root */
-	full = g_build_filename ("..", "data", "tests", filename, NULL);
-	ret = g_file_test (full, G_FILE_TEST_EXISTS);
-	if (ret)
-		return full;
-	g_free (full);
-
-	/* check to see if we are being run in the build root */
-	full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
-	ret = g_file_test (full, G_FILE_TEST_EXISTS);
-	if (ret)
-		return full;
-	g_free (full);
-
-	/* check to see if we are being run in make check */
-	full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
-	ret = g_file_test (full, G_FILE_TEST_EXISTS);
-	if (ret)
-		return full;
-	g_free (full);
-	full = g_build_filename ("..", "..", "..", "data", "tests", filename, NULL);
-	ret = g_file_test (full, G_FILE_TEST_EXISTS);
-	if (ret)
-		return full;
-	g_print ("[WARN] failed to find '%s'\n", full);
-	g_free (full);
-	return NULL;
-}
-
diff --git a/lib/packagekit-glib/egg-test.c b/lib/packagekit-glib/egg-test.c
new file mode 120000
index ef4eef3..ad24c4f
--- /dev/null
+++ b/lib/packagekit-glib/egg-test.c
@@ -0,0 +1 @@
+../../src/egg-test.c
\ No newline at end of file
diff --git a/lib/packagekit-glib/egg-test.h b/lib/packagekit-glib/egg-test.h
deleted file mode 100644
index ea4b94b..5a65e4a
--- a/lib/packagekit-glib/egg-test.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __EGG_TEST_H
-#define __EGG_TEST_H
-
-#include <glib.h>
-#include <string.h>
-
-typedef struct EggTest EggTest;
-
-gboolean	 egg_test_start			(EggTest *test, const gchar *name);
-void		 egg_test_end			(EggTest *test);
-void		 egg_test_title			(EggTest *test, const gchar *format, ...);
-void		 egg_test_title_assert		(EggTest *test, const gchar *text, gboolean value);
-void		 egg_test_assert		(EggTest *test, gboolean value);
-void		 egg_test_success		(EggTest *test, const gchar *format, ...);
-void		 egg_test_failed		(EggTest *test, const gchar *format, ...) G_GNUC_NORETURN;
-EggTest		*egg_test_init			(void);
-gint		 egg_test_finish		(EggTest *test);
-guint		 egg_test_elapsed		(EggTest *test);
-void		 egg_test_loop_quit		(EggTest *test);
-void		 egg_test_loop_wait		(EggTest *test, guint timeout);
-void		 egg_test_loop_check		(EggTest *test);
-void		 egg_test_set_user_data		(EggTest *test, gpointer user_data);
-gpointer	 egg_test_get_user_data		(EggTest *test);
-gchar		*egg_test_get_data_file		(const gchar *filename);
-
-#endif	/* __EGG_TEST_H */
-
diff --git a/lib/packagekit-glib/egg-test.h b/lib/packagekit-glib/egg-test.h
new file mode 120000
index ea4b94b..5a65e4a
--- /dev/null
+++ b/lib/packagekit-glib/egg-test.h
@@ -0,0 +1 @@
+../../src/egg-test.h
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-debug.c b/lib/packagekit-glib2/egg-debug.c
index 69011e0..98fd102 120000
--- a/lib/packagekit-glib2/egg-debug.c
+++ b/lib/packagekit-glib2/egg-debug.c
@@ -1 +1 @@
-../packagekit-glib/egg-debug.c
\ No newline at end of file
+../../src/egg-debug.c
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-debug.h b/lib/packagekit-glib2/egg-debug.h
index 7341ca0..13de545 120000
--- a/lib/packagekit-glib2/egg-debug.h
+++ b/lib/packagekit-glib2/egg-debug.h
@@ -1 +1 @@
-../packagekit-glib/egg-debug.h
\ No newline at end of file
+../../src/egg-debug.h
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-string.c b/lib/packagekit-glib2/egg-string.c
index 8f96c3f..da9b4c3 120000
--- a/lib/packagekit-glib2/egg-string.c
+++ b/lib/packagekit-glib2/egg-string.c
@@ -1 +1 @@
-../packagekit-glib/egg-string.c
\ No newline at end of file
+../../src/egg-string.c
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-string.h b/lib/packagekit-glib2/egg-string.h
index 5c8a11e..6186dac 120000
--- a/lib/packagekit-glib2/egg-string.h
+++ b/lib/packagekit-glib2/egg-string.h
@@ -1 +1 @@
-../packagekit-glib/egg-string.h
\ No newline at end of file
+../../src/egg-string.h
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-test.c b/lib/packagekit-glib2/egg-test.c
index 287c886..ad24c4f 120000
--- a/lib/packagekit-glib2/egg-test.c
+++ b/lib/packagekit-glib2/egg-test.c
@@ -1 +1 @@
-../packagekit-glib/egg-test.c
\ No newline at end of file
+../../src/egg-test.c
\ No newline at end of file
diff --git a/lib/packagekit-glib2/egg-test.h b/lib/packagekit-glib2/egg-test.h
index 4e50b66..5a65e4a 120000
--- a/lib/packagekit-glib2/egg-test.h
+++ b/lib/packagekit-glib2/egg-test.h
@@ -1 +1 @@
-../packagekit-glib/egg-test.h
\ No newline at end of file
+../../src/egg-test.h
\ No newline at end of file
diff --git a/src/egg-debug.c b/src/egg-debug.c
deleted file mode 120000
index 73a132d..c23a199
--- a/src/egg-debug.c
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-debug.c
\ No newline at end of file
diff --git a/src/egg-debug.c b/src/egg-debug.c
new file mode 100644
index 73a132d..c23a199
--- /dev/null
+++ b/src/egg-debug.c
@@ -0,0 +1,316 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * SECTION:egg-debug
+ * @short_description: Debugging functions
+ *
+ * This file contains functions that can be used for debugging.
+ */
+
+#include "config.h"
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gprintf.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <fcntl.h>
+#include <time.h>
+
+#ifdef HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+
+#include "egg-debug.h"
+
+#define CONSOLE_RESET		0
+#define CONSOLE_BLACK 		30
+#define CONSOLE_RED		31
+#define CONSOLE_GREEN		32
+#define CONSOLE_YELLOW		33
+#define CONSOLE_BLUE		34
+#define CONSOLE_MAGENTA		35
+#define CONSOLE_CYAN		36
+#define CONSOLE_WHITE		37
+
+static gint fd = -1;
+
+/**
+ * pk_set_console_mode:
+ **/
+static void
+pk_set_console_mode (guint console_code)
+{
+	gchar command[13];
+
+	/* don't put extra commands into logs */
+	if (!egg_debug_is_console ())
+		return;
+
+	/* Command is the control command to the terminal */
+	g_snprintf (command, 13, "%c[%dm", 0x1B, console_code);
+	printf ("%s", command);
+}
+
+/**
+ * egg_debug_backtrace:
+ **/
+void
+egg_debug_backtrace (void)
+{
+#ifdef HAVE_EXECINFO_H
+	void *call_stack[512];
+	int  call_stack_size;
+	char **symbols;
+	int i = 1;
+
+	call_stack_size = backtrace (call_stack, G_N_ELEMENTS (call_stack));
+	symbols = backtrace_symbols (call_stack, call_stack_size);
+	if (symbols != NULL) {
+		pk_set_console_mode (CONSOLE_RED);
+		g_print ("Traceback:\n");
+		while (i < call_stack_size) {
+			g_print ("\t%s\n", symbols[i]);
+			i++;
+		}
+		pk_set_console_mode (CONSOLE_RESET);
+		free (symbols);
+	}
+#endif
+}
+
+/**
+ * pk_log_line:
+ **/
+static void
+pk_log_line (const gchar *buffer)
+{
+	ssize_t count;
+	/* open a file */
+	if (fd == -1) {
+		/* ITS4: ignore, /var/log/foo is owned by root, and this is just debug text */
+		fd = open (EGG_LOG_FILE, O_WRONLY|O_APPEND|O_CREAT, 0644);
+		if (fd == -1)
+			g_error ("could not open log: '%s'", EGG_LOG_FILE);
+	}
+
+	/* ITS4: ignore, debug text always NULL terminated */
+	count = write (fd, buffer, strlen (buffer));
+	if (count == -1)
+		g_warning ("could not write %s", buffer);
+	/* newline */
+	count = write (fd, "\n", 1);
+	if (count == -1)
+		g_warning ("could not write newline");
+}
+
+/**
+ * pk_print_line:
+ **/
+static void
+pk_print_line (const gchar *func, const gchar *file, const int line, const gchar *buffer, guint color)
+{
+	gchar *str_time;
+	gchar *header;
+	time_t the_time;
+	struct timeval time_val;
+
+	time (&the_time);
+	gettimeofday (&time_val, NULL);
+	str_time = g_new0 (gchar, 255);
+	strftime (str_time, 254, "%H:%M:%S", localtime (&the_time));
+
+	/* generate header text */
+	header = g_strdup_printf ("TI:%s.%i\tFI:%s\tFN:%s,%d", str_time, (gint) time_val.tv_usec / 1000, file, func, line);
+	g_free (str_time);
+
+	/* always in light green */
+	pk_set_console_mode (CONSOLE_GREEN);
+	printf ("%s\n", header);
+
+	/* different colors according to the severity */
+	pk_set_console_mode (color);
+	printf (" - %s\n", buffer);
+	pk_set_console_mode (CONSOLE_RESET);
+
+	/* log to a file */
+	if (egg_debug_is_logging ()) {
+		pk_log_line (header);
+		pk_log_line (buffer);
+	}
+
+	/* flush this output, as we need to debug */
+	fflush (stdout);
+
+	g_free (header);
+}
+
+/**
+ * egg_debug_real:
+ **/
+void
+egg_debug_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
+{
+	va_list args;
+	gchar *buffer = NULL;
+
+	if (!egg_debug_enabled ())
+		return;
+
+	va_start (args, format);
+	g_vasprintf (&buffer, format, args);
+	va_end (args);
+
+	pk_print_line (func, file, line, buffer, CONSOLE_BLUE);
+
+	g_free(buffer);
+}
+
+/**
+ * egg_warning_real:
+ **/
+void
+egg_warning_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
+{
+	va_list args;
+	gchar *buffer = NULL;
+
+	if (!egg_debug_enabled ())
+		return;
+
+	va_start (args, format);
+	g_vasprintf (&buffer, format, args);
+	va_end (args);
+
+	/* do extra stuff for a warning */
+	if (!egg_debug_is_console ())
+		printf ("*** WARNING ***\n");
+	pk_print_line (func, file, line, buffer, CONSOLE_RED);
+
+	g_free(buffer);
+}
+
+/**
+ * egg_error_real:
+ **/
+void
+egg_error_real (const gchar *func, const gchar *file, const int line, const gchar *format, ...)
+{
+	va_list args;
+	gchar *buffer = NULL;
+
+	va_start (args, format);
+	g_vasprintf (&buffer, format, args);
+	va_end (args);
+
+	/* do extra stuff for a warning */
+	if (!egg_debug_is_console ())
+		printf ("*** ERROR ***\n");
+	pk_print_line (func, file, line, buffer, CONSOLE_RED);
+	g_free(buffer);
+
+	/* we want to fix this! */
+	egg_debug_backtrace ();
+
+	exit (1);
+}
+
+/**
+ * egg_debug_enabled:
+ *
+ * Returns: TRUE if we have debugging enabled
+ **/
+gboolean
+egg_debug_enabled (void)
+{
+	const gchar *env;
+	env = g_getenv (EGG_VERBOSE);
+	return (g_strcmp0 (env, "1") == 0);
+}
+
+/**
+ * egg_debug_is_logging:
+ *
+ * Returns: TRUE if we have logging enabled
+ **/
+gboolean
+egg_debug_is_logging (void)
+{
+	const gchar *env;
+	env = g_getenv (EGG_LOGGING);
+	return (g_strcmp0 (env, "1") == 0);
+}
+
+/**
+ * egg_debug_is_console:
+ *
+ * Returns: TRUE if we have debugging enabled
+ **/
+gboolean
+egg_debug_is_console (void)
+{
+	const gchar *env;
+	env = g_getenv (EGG_CONSOLE);
+	return (g_strcmp0 (env, "1") == 0);
+}
+
+/**
+ * egg_debug_set_logging:
+ **/
+void
+egg_debug_set_logging (gboolean enabled)
+{
+	if (enabled)
+		g_setenv (EGG_LOGGING, "1", TRUE);
+	else
+		g_setenv (EGG_LOGGING, "0", TRUE);
+
+	if (egg_debug_is_logging ())
+		egg_debug ("logging to %s", EGG_LOG_FILE);
+}
+
+/**
+ * egg_debug_init:
+ * @debug: If we should print out verbose logging
+ **/
+void
+egg_debug_init (gboolean debug)
+{
+	/* check if we are on console */
+	if (isatty (fileno (stdout)) == 1)
+		g_setenv (EGG_CONSOLE, "1", FALSE);
+	else
+		g_setenv (EGG_CONSOLE, "0", FALSE);
+	if (debug)
+		g_setenv (EGG_VERBOSE, "1", FALSE);
+	else
+		g_setenv (EGG_VERBOSE, "0", FALSE);
+	egg_debug ("Verbose debugging %i (on console %i)%s", egg_debug_enabled (), egg_debug_is_console (), EGG_VERBOSE);
+}
+
diff --git a/src/egg-debug.h b/src/egg-debug.h
deleted file mode 120000
index abe6764..c935dcb
--- a/src/egg-debug.h
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-debug.h
\ No newline at end of file
diff --git a/src/egg-debug.h b/src/egg-debug.h
new file mode 100644
index abe6764..c935dcb
--- /dev/null
+++ b/src/egg-debug.h
@@ -0,0 +1,83 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __EGG_DEBUG_H
+#define __EGG_DEBUG_H
+
+#include <stdarg.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/**
+ * egg_debug:
+ *
+ * Non critical debugging
+ */
+#define egg_debug(...) egg_debug_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+
+/**
+ * egg_warning:
+ *
+ * Important debugging
+ */
+#define egg_warning(...) egg_warning_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+
+/**
+ * egg_error:
+ *
+ * Critical debugging, with exit
+ */
+#define egg_error(...) egg_error_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+
+#elif defined(__GNUC__) && __GNUC__ >= 3
+#define egg_debug(...) egg_debug_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+#define egg_warning(...) egg_warning_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+#define egg_error(...) egg_error_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+#else
+#define egg_debug(...)
+#define egg_warning(...)
+#define egg_error(...)
+#endif
+
+void		egg_debug_init			(gboolean	 debug);
+void		egg_debug_set_logging		(gboolean	 enabled);
+gboolean	egg_debug_enabled		(void);
+gboolean	egg_debug_is_logging		(void);
+gboolean	egg_debug_is_console		(void);
+void		egg_debug_backtrace		(void);
+void		egg_debug_real			(const gchar	*func,
+						 const gchar	*file,
+						 int		 line,
+						 const gchar	*format, ...) __attribute__((format (printf,4,5)));
+void		egg_warning_real		(const gchar	*func,
+						 const gchar	*file,
+						 int		 line,
+						 const gchar	*format, ...) __attribute__((format (printf,4,5)));
+void		egg_error_real			(const gchar	*func,
+						 const gchar	*file,
+						 int		 line,
+						 const gchar	*format, ...) G_GNUC_NORETURN __attribute__((format (printf,4,5)));
+
+G_END_DECLS
+
+#endif /* __EGG_DEBUG_H */
diff --git a/src/egg-string.c b/src/egg-string.c
deleted file mode 120000
index a5ff465..054b0cc
--- a/src/egg-string.c
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-string.c
\ No newline at end of file
diff --git a/src/egg-string.c b/src/egg-string.c
new file mode 100644
index a5ff465..054b0cc
--- /dev/null
+++ b/src/egg-string.c
@@ -0,0 +1,454 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * SECTION:pk-common
+ * @short_description: Common utility functions for PackageKit
+ *
+ * This file contains functions that may be useful.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <string.h>
+#include <sys/types.h>
+#include <sys/utsname.h>
+#include <sys/stat.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <glib.h>
+
+#include "egg-debug.h"
+#include "egg-string.h"
+
+/**
+ * egg_strtoint:
+ * @text: The text the convert
+ * @value: The return numeric return value
+ *
+ * Converts a string into a signed integer value in a safe way.
+ *
+ * Return value: %TRUE if the string was converted correctly
+ **/
+gboolean
+egg_strtoint (const gchar *text, gint *value)
+{
+	gchar *endptr = NULL;
+	gint64 value_raw;
+
+	/* invalid */
+	if (text == NULL)
+		return FALSE;
+
+	/* parse */
+	value_raw = g_ascii_strtoll (text, &endptr, 10);
+
+	/* parsing error */
+	if (endptr == text)
+		return FALSE;
+
+	/* out of range */
+	if (value_raw > G_MAXINT || value_raw < G_MININT)
+		return FALSE;
+
+	/* cast back down to value */
+	*value = (gint) value_raw;
+	return TRUE;
+}
+
+/**
+ * egg_strtouint:
+ * @text: The text the convert
+ * @value: The return numeric return value
+ *
+ * Converts a string into a unsigned integer value in a safe way.
+ *
+ * Return value: %TRUE if the string was converted correctly
+ **/
+gboolean
+egg_strtouint (const gchar *text, guint *value)
+{
+	gchar *endptr = NULL;
+	guint64 value_raw;
+
+	/* invalid */
+	if (text == NULL)
+		return FALSE;
+
+	/* parse */
+	value_raw = g_ascii_strtoull (text, &endptr, 10);
+
+	/* parsing error */
+	if (endptr == text)
+		return FALSE;
+
+	/* out of range */
+	if (value_raw > G_MAXINT)
+		return FALSE;
+
+	/* cast back down to value */
+	*value = (guint) value_raw;
+	return TRUE;
+}
+
+/**
+ * egg_strzero:
+ * @text: The text to check
+ *
+ * This function is a much safer way of doing "if (strlen (text) == 0))"
+ * as it does not rely on text being NULL terminated. It's also much
+ * quicker as it only checks the first byte rather than scanning the whole
+ * string just to verify it's not zero length.
+ *
+ * Return value: %TRUE if the string was converted correctly
+ **/
+gboolean
+egg_strzero (const gchar *text)
+{
+	if (text == NULL)
+		return TRUE;
+	if (text[0] == '\0')
+		return TRUE;
+	return FALSE;
+}
+
+/**
+ * egg_strlen:
+ * @text: The text to check
+ * @len: The maximum length of the string
+ *
+ * This function is a much safer way of doing strlen as it checks for NULL and
+ * a stupidly long string.
+ *
+ * Return value: the length of the string, or len if the string is too long.
+ **/
+guint
+egg_strlen (const gchar *text, guint len)
+{
+	guint i;
+
+	/* common case */
+	if (text == NULL || text[0] == '\0')
+		return 0;
+
+	/* only count up to len */
+	for (i=1; i<len; i++) {
+		if (text[i] == '\0')
+			break;
+	}
+	return i;
+}
+
+/**
+ * egg_strvequal:
+ * @id1: the first item of text to test
+ * @id2: the second item of text to test
+ *
+ * This function will check to see if the GStrv arrays are string equal
+ *
+ * Return value: %TRUE if the arrays are the same, or are both %NULL
+ **/
+gboolean
+egg_strvequal (gchar **id1, gchar **id2)
+{
+	guint i;
+	guint length1;
+	guint length2;
+
+	if (id1 == NULL && id2 == NULL)
+		return TRUE;
+
+	if (id1 == NULL || id2 == NULL) {
+		egg_debug ("GStrv compare invalid '%p' and '%p'", id1, id2);
+		return FALSE;
+	}
+
+	/* check different sizes */
+	length1 = g_strv_length (id1);
+	length2 = g_strv_length (id2);
+	if (length1 != length2)
+		return FALSE;
+
+	/* text equal each one */
+	for (i=0; i<length1; i++) {
+		if (g_strcmp0 (id1[i], id2[i]) != 0)
+			return FALSE;
+	}
+
+	return TRUE;
+}
+
+/**
+ * egg_strreplace:
+ * @text: The input text to make safe
+ * @find: What to search for
+ * @replace: What to replace with
+ *
+ * Replaces chars in the text with a replacement.
+ * The %find and %replace variables to not have to be of the same length
+ *
+ * Return value: the new string (copied)
+ **/
+gchar *
+egg_strreplace (const gchar *text, const gchar *find, const gchar *replace)
+{
+	gchar **array;
+	gchar *retval;
+
+	/* common case, not found */
+	if (strstr (text, find) == NULL) {
+		return g_strdup (text);
+	}
+
+	/* split apart and rejoin with new delimiter */
+	array = g_strsplit (text, find, 0);
+	retval = g_strjoinv (replace, array);
+	g_strfreev (array);
+	return retval;
+}
+
+/***************************************************************************
+ ***                          MAKE CHECK TESTS                           ***
+ ***************************************************************************/
+#ifdef EGG_TEST
+#include "egg-test.h"
+
+void
+egg_string_test (gpointer user_data)
+{
+	EggTest *test = (EggTest *) user_data;
+	gboolean ret;
+	gchar *text_safe;
+	const gchar *temp;
+	guint length;
+	gint value;
+	guint uvalue;
+	gchar **id1;
+	gchar **id2;
+
+	if (!egg_test_start (test, "EggString"))
+		return;
+
+	/************************************************************
+	 ****************    String array equal    ******************
+	 ************************************************************/
+	egg_test_title (test, "egg_strvequal same argument");
+	id1 = g_strsplit ("the quick brown fox", " ", 0);
+	if (egg_strvequal (id1, id1))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "incorrect ret when both same");
+	g_strfreev (id1);
+
+	/************************************************************/
+	egg_test_title (test, "egg_strvequal same");
+	id1 = g_strsplit ("the quick brown fox", " ", 0);
+	id2 = g_strsplit ("the quick brown fox", " ", 0);
+	if (egg_strvequal (id1, id2))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "incorrect ret when both same");
+	g_strfreev (id1);
+	g_strfreev (id2);
+
+	/************************************************************/
+	egg_test_title (test, "egg_strvequal different lengths");
+	id1 = g_strsplit ("the quick brown", " ", 0);
+	id2 = g_strsplit ("the quick brown fox", " ", 0);
+	if (!egg_strvequal (id1, id2))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "incorrect ret when both same");
+	g_strfreev (id1);
+	g_strfreev (id2);
+
+	/************************************************************/
+	egg_test_title (test, "egg_strvequal different");
+	id1 = g_strsplit ("the quick brown fox", " ", 0);
+	id2 = g_strsplit ("richard hughes maintainer dude", " ", 0);
+	if (!egg_strvequal (id1, id2))
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "same when different");
+	g_strfreev (id1);
+	g_strfreev (id2);
+
+	/************************************************************
+	 ****************          Zero            ******************
+	 ************************************************************/
+	temp = NULL;
+	egg_test_title (test, "test strzero (null)");
+	ret = egg_strzero (NULL);
+	if (ret)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed null");
+
+	/************************************************************/
+	egg_test_title (test, "test strzero (null first char)");
+	ret = egg_strzero ("");
+	if (ret)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed null");
+
+	/************************************************************/
+	egg_test_title (test, "test strzero (long string)");
+	ret = egg_strzero ("Richard");
+	if (!ret)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "zero length word!");
+
+	/************************************************************/
+	egg_test_title (test, "id strcmp pass");
+	ret = (g_strcmp0 ("moo;0.0.1;i386;fedora", "moo;0.0.1;i386;fedora") == 0);
+	egg_test_assert (test, ret);
+
+	/************************************************************/
+	egg_test_title (test, "id strcmp fail");
+	ret = (g_strcmp0 ("moo;0.0.1;i386;fedora", "moo;0.0.2;i386;fedora") == 0);
+	egg_test_assert (test, !ret);
+
+	/************************************************************
+	 ****************          strlen          ******************
+	 ************************************************************/
+	egg_test_title (test, "strlen bigger");
+	length = egg_strlen ("123456789", 20);
+	if (length == 9)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the strlen %i", length);
+
+	/************************************************************/
+	egg_test_title (test, "strlen smaller");
+	length = egg_strlen ("123456789", 5);
+	if (length == 5)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the strlen %i", length);
+
+	/************************************************************/
+	egg_test_title (test, "strlen correct");
+	length = egg_strlen ("123456789", 9);
+	if (length == 9)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the strlen %i", length);
+
+	/************************************************************
+	 ****************         Replace          ******************
+	 ************************************************************/
+	egg_test_title (test, "replace start");
+	text_safe = egg_strreplace ("richard\nhughes", "r", "e");
+	if (g_strcmp0 (text_safe, "eichaed\nhughes") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "replace none");
+	text_safe = egg_strreplace ("richard\nhughes", "dave", "e");
+	if (g_strcmp0 (text_safe, "richard\nhughes") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "replace end");
+	text_safe = egg_strreplace ("richard\nhughes", "s", "e");
+	if (g_strcmp0 (text_safe, "richard\nhughee") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************/
+	egg_test_title (test, "replace unicode");
+	text_safe = egg_strreplace ("richard\n- hughes", "\n- ", "\n• ");
+	if (g_strcmp0 (text_safe, "richard\n• hughes") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "failed the replace '%s'", text_safe);
+	g_free (text_safe);
+
+	/************************************************************
+	 **************        Convert numbers       ****************
+	 ************************************************************/
+	egg_test_title (test, "convert valid number");
+	ret = egg_strtoint ("234", &value);
+	if (ret && value == 234)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", value);
+
+	/************************************************************/
+	egg_test_title (test, "convert negative valid number");
+	ret = egg_strtoint ("-234", &value);
+	if (ret && value == -234)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", value);
+
+	/************************************************************/
+	egg_test_title (test, "don't convert invalid number");
+	ret = egg_strtoint ("dave", &value);
+	if (!ret)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", value);
+
+	/************************************************************/
+	egg_test_title (test, "convert NULL to a number");
+	ret = egg_strtouint (NULL, &uvalue);
+	if (!ret)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", uvalue);
+
+	/************************************************************/
+	egg_test_title (test, "convert valid uint number");
+	ret = egg_strtouint ("234", &uvalue);
+	if (ret && uvalue == 234)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", uvalue);
+
+	/************************************************************/
+	egg_test_title (test, "convert invalid uint number");
+	ret = egg_strtouint ("-234", &uvalue);
+	if (ret == FALSE)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "value is %i", uvalue);
+
+	egg_test_end (test);
+}
+#endif
+
diff --git a/src/egg-string.h b/src/egg-string.h
deleted file mode 120000
index 1c0eaa9..5c7cf32
--- a/src/egg-string.h
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-string.h
\ No newline at end of file
diff --git a/src/egg-string.h b/src/egg-string.h
new file mode 100644
index 1c0eaa9..5c7cf32
--- /dev/null
+++ b/src/egg-string.h
@@ -0,0 +1,48 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __EGG_STRING_H
+#define __EGG_STRING_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+guint		 egg_strlen				(const gchar	*text,
+							 guint		 len)
+							 G_GNUC_WARN_UNUSED_RESULT;
+gboolean	 egg_strzero				(const gchar	*text)
+							 G_GNUC_WARN_UNUSED_RESULT;
+gboolean	 egg_strvequal				(gchar		**id1,
+							 gchar		**id2)
+							 G_GNUC_WARN_UNUSED_RESULT;
+gboolean	 egg_strtoint				(const gchar	*text,
+							 gint		*value);
+gboolean	 egg_strtouint				(const gchar	*text,
+							 guint		*value);
+gchar		*egg_strreplace				(const gchar	*text,
+							 const gchar	*find,
+							 const gchar	*replace);
+void		 egg_string_test			(gpointer	 user_data);
+
+G_END_DECLS
+
+#endif /* __EGG_STRING_H */
diff --git a/src/egg-test.c b/src/egg-test.c
deleted file mode 120000
index faa250b..ef4eef3
--- a/src/egg-test.c
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-test.c
\ No newline at end of file
diff --git a/src/egg-test.c b/src/egg-test.c
new file mode 100644
index faa250b..ef4eef3
--- /dev/null
+++ b/src/egg-test.c
@@ -0,0 +1,357 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdlib.h>
+#include <glib.h>
+#include <string.h>
+#include <glib/gprintf.h>
+
+#include "egg-test.h"
+
+struct EggTest {
+	guint		 total;
+	guint		 succeeded;
+	gboolean	 started;
+	gboolean	 titled;
+	gchar		*type;
+	GTimer		*timer;
+	GMainLoop	*loop;
+	guint		 hang_loop_id;
+	gpointer	 user_data;
+};
+
+/**
+ * egg_test_init:
+ **/
+EggTest *
+egg_test_init ()
+{
+	EggTest *test;
+	test = g_new (EggTest, 1);
+	test->total = 0;
+	test->succeeded = 0;
+	test->type = NULL;
+	test->started = FALSE;
+	test->titled = FALSE;
+	test->timer = g_timer_new ();
+	test->loop = g_main_loop_new (NULL, FALSE);
+	test->hang_loop_id = 0;
+	return test;
+}
+
+/**
+ * egg_test_loop_quit:
+ **/
+void
+egg_test_loop_quit (EggTest *test)
+{
+	/* disable the loop watch */
+	if (test->hang_loop_id != 0) {
+		g_source_remove (test->hang_loop_id);
+		test->hang_loop_id = 0;
+	}
+	g_main_loop_quit (test->loop);
+}
+
+/**
+ * egg_test_hang_check:
+ **/
+static gboolean
+egg_test_hang_check (gpointer data)
+{
+	EggTest *test = (EggTest *) data;
+	g_main_loop_quit (test->loop);
+	return FALSE;
+}
+
+/**
+ * egg_test_loop_wait:
+ **/
+void
+egg_test_loop_wait (EggTest *test, guint timeout)
+{
+	test->hang_loop_id = g_timeout_add (timeout, egg_test_hang_check, test);
+	g_main_loop_run (test->loop);
+}
+
+/**
+ * egg_test_loop_check:
+ **/
+void
+egg_test_loop_check (EggTest *test)
+{
+	guint elapsed = egg_test_elapsed (test);
+	egg_test_title (test, "did we timeout out of the loop");
+	if (test->hang_loop_id == 0) {
+		egg_test_success (test, "loop blocked for %ims", elapsed);
+	} else {
+		egg_test_failed (test, "hangcheck saved us after %ims", elapsed);
+	}
+}
+
+/**
+ * egg_test_set_user_data:
+ **/
+void
+egg_test_set_user_data (EggTest *test, gpointer user_data)
+{
+	test->user_data = user_data;
+}
+
+/**
+ * egg_test_get_user_data:
+ **/
+gpointer
+egg_test_get_user_data (EggTest *test)
+{
+	return test->user_data;
+}
+
+/**
+ * egg_test_finish:
+ **/
+gint
+egg_test_finish (EggTest *test)
+{
+	gint retval;
+	g_print ("test passes (%u/%u) : ", test->succeeded, test->total);
+	if (test->succeeded == test->total) {
+		g_print ("ALL OKAY\n");
+		retval = 0;
+	} else {
+		g_print ("%u FAILURE(S)\n", test->total - test->succeeded);
+		retval = 1;
+	}
+
+	g_timer_destroy (test->timer);
+	g_main_loop_unref (test->loop);
+	g_free (test);
+
+	return retval;
+}
+
+/**
+ * egg_test_elapsed:
+ *
+ * Returns: time in ms
+ **/
+guint
+egg_test_elapsed (EggTest *test)
+{
+	gdouble time_s;
+	time_s = g_timer_elapsed (test->timer, NULL);
+	return (guint) (time_s * 1000.0f);
+}
+
+/**
+ * egg_test_start:
+ **/
+gboolean
+egg_test_start (EggTest *test, const gchar *name)
+{
+	if (test->started) {
+		g_print ("Not ended test! Cannot start!\n");
+		exit (1);
+	}
+	test->type = g_strdup (name);
+	test->started = TRUE;
+	return TRUE;
+}
+
+/**
+ * egg_test_end:
+ **/
+void
+egg_test_end (EggTest *test)
+{
+	if (test->started == FALSE) {
+		g_print ("Not started test! Cannot finish!\n");
+		exit (1);
+	}
+
+	/* disable hang check */
+	if (test->hang_loop_id != 0) {
+		g_source_remove (test->hang_loop_id);
+		test->hang_loop_id = 0;
+	}
+
+	/* remove all the test callbacks */
+	while (g_source_remove_by_user_data (test))
+		g_print ("WARNING: removed callback for test module");
+
+	/* check we don't have any pending iterations */
+	if (g_main_context_pending (NULL)) {
+		g_print ("WARNING: Pending event in context! Running to completion... ");
+		while (g_main_context_pending (NULL))
+			g_main_context_iteration (NULL, TRUE);
+		g_print ("Done!\n");
+	}
+
+	test->started = FALSE;
+	g_free (test->type);
+}
+
+/**
+ * egg_test_title:
+ **/
+void
+egg_test_title (EggTest *test, const gchar *format, ...)
+{
+	va_list args;
+	gchar *va_args_buffer = NULL;
+
+	/* already titled? */
+	if (test->titled) {
+		g_print ("Already titled!\n");
+		exit (1);
+	}
+
+	/* reset the value egg_test_elapsed replies with */
+	g_timer_reset (test->timer);
+
+	va_start (args, format);
+	g_vasprintf (&va_args_buffer, format, args);
+	va_end (args);
+	g_print ("> check #%u\t%s: \t%s...", test->total+1, test->type, va_args_buffer);
+	g_free (va_args_buffer);
+
+	test->titled = TRUE;
+	test->total++;
+}
+
+/**
+ * egg_test_success:
+ **/
+void
+egg_test_success (EggTest *test, const gchar *format, ...)
+{
+	va_list args;
+	gchar *va_args_buffer = NULL;
+
+	/* not titled? */
+	if (!test->titled) {
+		g_print ("Not titled!\n");
+		exit (1);
+	}
+	if (format == NULL) {
+		g_print ("...OK\n");
+		goto finish;
+	}
+	va_start (args, format);
+	g_vasprintf (&va_args_buffer, format, args);
+	va_end (args);
+	g_print ("...OK [%s]\n", va_args_buffer);
+	g_free (va_args_buffer);
+finish:
+	test->titled = FALSE;
+	test->succeeded++;
+}
+
+/**
+ * egg_test_failed:
+ **/
+void
+egg_test_failed (EggTest *test, const gchar *format, ...)
+{
+	va_list args;
+	gchar *va_args_buffer = NULL;
+
+	/* not titled? */
+	if (!test->titled) {
+		g_print ("Not titled!\n");
+		exit (1);
+	}
+	if (format == NULL) {
+		g_print ("FAILED\n");
+		goto failed;
+	}
+	va_start (args, format);
+	g_vasprintf (&va_args_buffer, format, args);
+	va_end (args);
+	g_print ("FAILED [%s]\n", va_args_buffer);
+	g_free (va_args_buffer);
+failed:
+	exit (1);
+}
+
+/**
+ * egg_test_assert:
+ **/
+void
+egg_test_assert (EggTest *test, gboolean value)
+{
+	if (value)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
+}
+
+/**
+ * egg_test_title_assert:
+ **/
+void
+egg_test_title_assert (EggTest *test, const gchar *text, gboolean value)
+{
+	egg_test_title (test, "%s", text);
+	if (value)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, NULL);
+}
+
+/**
+ * egg_test_get_data_file:
+ **/
+gchar *
+egg_test_get_data_file (const gchar *filename)
+{
+	gboolean ret;
+	gchar *full;
+
+	/* check to see if we are being run in the build root */
+	full = g_build_filename ("..", "data", "tests", filename, NULL);
+	ret = g_file_test (full, G_FILE_TEST_EXISTS);
+	if (ret)
+		return full;
+	g_free (full);
+
+	/* check to see if we are being run in the build root */
+	full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
+	ret = g_file_test (full, G_FILE_TEST_EXISTS);
+	if (ret)
+		return full;
+	g_free (full);
+
+	/* check to see if we are being run in make check */
+	full = g_build_filename ("..", "..", "data", "tests", filename, NULL);
+	ret = g_file_test (full, G_FILE_TEST_EXISTS);
+	if (ret)
+		return full;
+	g_free (full);
+	full = g_build_filename ("..", "..", "..", "data", "tests", filename, NULL);
+	ret = g_file_test (full, G_FILE_TEST_EXISTS);
+	if (ret)
+		return full;
+	g_print ("[WARN] failed to find '%s'\n", full);
+	g_free (full);
+	return NULL;
+}
+
diff --git a/src/egg-test.h b/src/egg-test.h
deleted file mode 120000
index 9e81e53..ea4b94b
--- a/src/egg-test.h
+++ /dev/null
@@ -1 +0,0 @@
-../lib/packagekit-glib/egg-test.h
\ No newline at end of file
diff --git a/src/egg-test.h b/src/egg-test.h
new file mode 100644
index 9e81e53..ea4b94b
--- /dev/null
+++ b/src/egg-test.h
@@ -0,0 +1,48 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2007-2008 Richard Hughes <richard at hughsie.com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __EGG_TEST_H
+#define __EGG_TEST_H
+
+#include <glib.h>
+#include <string.h>
+
+typedef struct EggTest EggTest;
+
+gboolean	 egg_test_start			(EggTest *test, const gchar *name);
+void		 egg_test_end			(EggTest *test);
+void		 egg_test_title			(EggTest *test, const gchar *format, ...);
+void		 egg_test_title_assert		(EggTest *test, const gchar *text, gboolean value);
+void		 egg_test_assert		(EggTest *test, gboolean value);
+void		 egg_test_success		(EggTest *test, const gchar *format, ...);
+void		 egg_test_failed		(EggTest *test, const gchar *format, ...) G_GNUC_NORETURN;
+EggTest		*egg_test_init			(void);
+gint		 egg_test_finish		(EggTest *test);
+guint		 egg_test_elapsed		(EggTest *test);
+void		 egg_test_loop_quit		(EggTest *test);
+void		 egg_test_loop_wait		(EggTest *test, guint timeout);
+void		 egg_test_loop_check		(EggTest *test);
+void		 egg_test_set_user_data		(EggTest *test, gpointer user_data);
+gpointer	 egg_test_get_user_data		(EggTest *test);
+gchar		*egg_test_get_data_file		(const gchar *filename);
+
+#endif	/* __EGG_TEST_H */
+
commit f7fb28b3c173939f4602c6d25765244c337e44cf
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 10:48:59 2009 +0100

    spec: Depreciate ::Locked() and ::NetworkStateChanged() and add properties and a ::Changed() signal to replace them

diff --git a/client/pk-console.c b/client/pk-console.c
index a9f5e09..208de0d 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -821,12 +821,17 @@ out:
 }
 
 /**
- * pk_connection_changed_cb:
+ * pk_console_notify_connected_cb:
  **/
 static void
-pk_connection_changed_cb (PkControl *control_, gboolean connected, gpointer data)
+pk_console_notify_connected_cb (PkControl *control_, GParamSpec *pspec, gpointer data)
 {
+	gboolean connected;
+
 	/* if the daemon crashed, don't hang around */
+	g_object_get (control_,
+		      "connected", &connected,
+		      NULL);
 	if (!connected) {
 		/* TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle */
 		g_print ("%s\n", _("The daemon crashed mid-transaction!"));
@@ -1054,8 +1059,8 @@ main (int argc, char *argv[])
 	loop = g_main_loop_new (NULL, FALSE);
 
 	/* watch when the daemon aborts */
-	g_signal_connect (control, "connection-changed",
-			  G_CALLBACK (pk_connection_changed_cb), loop);
+	g_signal_connect (control, "notify::connected",
+			  G_CALLBACK (pk_console_notify_connected_cb), loop);
 
 	/* create transactions */
 	task = pk_task_text_new ();
diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index 59b2b76..82f1d7e 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -52,24 +52,25 @@ pk_monitor_updates_changed_cb (PkControl *control, gpointer data)
 }
 
 /**
- * pk_connection_changed_cb:
+ * pk_monitor_notify_connected_cb:
  **/
 static void
-pk_connection_changed_cb (PkControl *control, gboolean connected, gpointer data)
+pk_monitor_notify_connected_cb (PkControl *control, GParamSpec *pspec, gpointer data)
 {
+	gboolean connected;
+	g_object_get (control, "connected", &connected, NULL);
 	g_print ("daemon connected=%i\n", connected);
 }
 
 /**
- * pk_monitor_locked_cb:
+ * pk_monitor_notify_locked_cb:
  **/
 static void
-pk_monitor_locked_cb (PkControl *control, gboolean is_locked, gpointer data)
+pk_monitor_notify_locked_cb (PkControl *control, GParamSpec *pspec, gpointer data)
 {
-	if (is_locked)
-		g_print ("backend locked\n");
-	else
-		g_print ("backend unlocked\n");
+	gboolean locked;
+	g_object_get (control, "locked", &locked, NULL);
+	g_print ("daemon locked=%i\n", locked);
 }
 
 /**
@@ -313,16 +314,16 @@ main (int argc, char *argv[])
 	control = pk_control_new ();
 	client = pk_client_new ();
 	array = g_ptr_array_new_with_free_func (g_free);
-	g_signal_connect (control, "locked",
-			  G_CALLBACK (pk_monitor_locked_cb), NULL);
 	g_signal_connect (control, "repo-list-changed",
 			  G_CALLBACK (pk_monitor_repo_list_changed_cb), NULL);
 	g_signal_connect (control, "updates-changed",
 			  G_CALLBACK (pk_monitor_updates_changed_cb), NULL);
 	g_signal_connect (control, "transaction-list-changed",
 			  G_CALLBACK (pk_monitor_task_list_changed_cb), NULL);
-	g_signal_connect (control, "connection-changed",
-			  G_CALLBACK (pk_connection_changed_cb), NULL);
+	g_signal_connect (control, "notify::locked",
+			  G_CALLBACK (pk_monitor_notify_locked_cb), NULL);
+	g_signal_connect (control, "notify::connected",
+			  G_CALLBACK (pk_monitor_notify_connected_cb), NULL);
 
 	/* coldplug */
 	pk_monitor_get_transaction_list (control);
diff --git a/lib/packagekit-glib2/pk-control.c b/lib/packagekit-glib2/pk-control.c
index 670dde5..71568b0 100644
--- a/lib/packagekit-glib2/pk-control.c
+++ b/lib/packagekit-glib2/pk-control.c
@@ -51,14 +51,15 @@ static void     pk_control_finalize	(GObject     *object);
  **/
 struct _PkControlPrivate
 {
+	DBusGProxyCall		*call_get_properties;
 	GPtrArray		*calls;
 	DBusGProxy		*proxy;
 	DBusGProxy		*proxy_props;
 	DBusGProxy		*proxy_dbus;
 	DBusGConnection		*connection;
-	gboolean		 version_major;
-	gboolean		 version_minor;
-	gboolean		 version_micro;
+	guint			 version_major;
+	guint			 version_minor;
+	guint			 version_micro;
 	gchar			*backend_name;
 	gchar			*backend_description;
 	gchar			*backend_author;
@@ -66,16 +67,16 @@ struct _PkControlPrivate
 	PkBitfield		 groups;
 	PkBitfield		 filters;
 	gchar			*mime_types;
+	gboolean		 connected;
+	gboolean		 locked;
+	PkNetworkEnum		 network_state;
 };
 
 enum {
-	SIGNAL_LOCKED,
-	SIGNAL_LIST_CHANGED,
+	SIGNAL_TRANSACTION_LIST_CHANGED,
 	SIGNAL_RESTART_SCHEDULE,
 	SIGNAL_UPDATES_CHANGED,
 	SIGNAL_REPO_LIST_CHANGED,
-	SIGNAL_NETWORK_STATE_CHANGED,
-	SIGNAL_CONNECTION_CHANGED,
 	SIGNAL_LAST
 };
 
@@ -91,10 +92,13 @@ enum {
 	PROP_GROUPS,
 	PROP_FILTERS,
 	PROP_MIME_TYPES,
+	PROP_LOCKED,
+	PROP_NETWORK_STATE,
+	PROP_CONNECTED,
 	PROP_LAST
 };
 
-static guint signals [SIGNAL_LAST] = { 0 };
+static guint signals[SIGNAL_LAST] = { 0 };
 static gpointer pk_control_object = NULL;
 
 G_DEFINE_TYPE (PkControl, pk_control, G_TYPE_OBJECT)
@@ -1178,40 +1182,231 @@ pk_control_get_properties_state_finish (PkControlState *state, GError *error)
 }
 
 /**
+ * pk_control_set_version_major:
+ **/
+static void
+pk_control_set_version_major (PkControl *control, guint version_major)
+{
+	/* is the same as before */
+	if (control->priv->version_major == version_major)
+		return;
+	control->priv->version_major = version_major;
+
+	/* notify we're changed */
+	egg_debug ("notify::version-major");
+	g_object_notify (G_OBJECT(control), "version-major");
+}
+
+/**
+ * pk_control_set_version_minor:
+ **/
+static void
+pk_control_set_version_minor (PkControl *control, guint version_minor)
+{
+	/* is the same as before */
+	if (control->priv->version_minor == version_minor)
+		return;
+	control->priv->version_minor = version_minor;
+
+	/* notify we're changed */
+	egg_debug ("notify::version-minor");
+	g_object_notify (G_OBJECT(control), "version-minor");
+}
+
+/**
+ * pk_control_set_version_micro:
+ **/
+static void
+pk_control_set_version_micro (PkControl *control, guint version_micro)
+{
+	/* is the same as before */
+	if (control->priv->version_micro == version_micro)
+		return;
+	control->priv->version_micro = version_micro;
+
+	/* notify we're changed */
+	egg_debug ("notify::version-micro");
+	g_object_notify (G_OBJECT(control), "version-micro");
+}
+
+/**
+ * pk_control_set_locked:
+ **/
+static void
+pk_control_set_locked (PkControl *control, gboolean locked)
+{
+	/* is the same as before */
+	if (control->priv->locked == locked)
+		return;
+	control->priv->locked = locked;
+
+	/* notify we're changed */
+	egg_debug ("notify::locked");
+	g_object_notify (G_OBJECT(control), "locked");
+}
+
+/**
+ * pk_control_set_backend_name:
+ **/
+static void
+pk_control_set_backend_name (PkControl *control, const gchar *backend_name)
+{
+	/* is the same as before */
+	if (g_strcmp0 (control->priv->backend_name, backend_name) == 0)
+		return;
+	g_free (control->priv->backend_name);
+	control->priv->backend_name = g_strdup (backend_name);
+
+	/* notify we're changed */
+	egg_debug ("notify::backend-name");
+	g_object_notify (G_OBJECT(control), "backend-name");
+}
+
+/**
+ * pk_control_set_backend_author:
+ **/
+static void
+pk_control_set_backend_author (PkControl *control, const gchar *backend_author)
+{
+	/* is the same as before */
+	if (g_strcmp0 (control->priv->backend_author, backend_author) == 0)
+		return;
+	g_free (control->priv->backend_author);
+	control->priv->backend_author = g_strdup (backend_author);
+
+	/* notify we're changed */
+	egg_debug ("notify::backend-author");
+	g_object_notify (G_OBJECT(control), "backend-author");
+}
+
+/**
+ * pk_control_set_backend_description:
+ **/
+static void
+pk_control_set_backend_description (PkControl *control, const gchar *backend_description)
+{
+	/* is the same as before */
+	if (g_strcmp0 (control->priv->backend_description, backend_description) == 0)
+		return;
+	g_free (control->priv->backend_description);
+	control->priv->backend_description = g_strdup (backend_description);
+
+	/* notify we're changed */
+	egg_debug ("notify::backend-description");
+	g_object_notify (G_OBJECT(control), "backend-description");
+}
+
+/**
+ * pk_control_set_mime_types:
+ **/
+static void
+pk_control_set_mime_types (PkControl *control, const gchar *mime_types)
+{
+	/* is the same as before */
+	if (g_strcmp0 (control->priv->mime_types, mime_types) == 0)
+		return;
+	g_free (control->priv->mime_types);
+	control->priv->mime_types = g_strdup (mime_types);
+
+	/* notify we're changed */
+	egg_debug ("notify::mime-types");
+	g_object_notify (G_OBJECT(control), "mime-types");
+}
+
+/**
+ * pk_control_set_roles:
+ **/
+static void
+pk_control_set_roles (PkControl *control, PkBitfield roles)
+{
+	/* is the same as before */
+	if (control->priv->roles == roles)
+		return;
+	control->priv->roles = roles;
+
+	/* notify we're changed */
+	egg_debug ("notify::roles");
+	g_object_notify (G_OBJECT(control), "roles");
+}
+
+/**
+ * pk_control_set_groups:
+ **/
+static void
+pk_control_set_groups (PkControl *control, PkBitfield groups)
+{
+	/* is the same as before */
+	if (control->priv->groups == groups)
+		return;
+	control->priv->groups = groups;
+
+	/* notify we're changed */
+	egg_debug ("notify::groups");
+	g_object_notify (G_OBJECT(control), "groups");
+}
+
+/**
+ * pk_control_set_filters:
+ **/
+static void
+pk_control_set_filters (PkControl *control, PkBitfield filters)
+{
+	/* is the same as before */
+	if (control->priv->filters == filters)
+		return;
+	control->priv->filters = filters;
+
+	/* notify we're changed */
+	egg_debug ("notify::filters");
+	g_object_notify (G_OBJECT(control), "filters");
+}
+
+/**
+ * pk_control_set_network_state:
+ **/
+static void
+pk_control_set_network_state (PkControl *control, PkNetworkEnum network_state)
+{
+	/* is the same as before */
+	if (control->priv->network_state == network_state)
+		return;
+	control->priv->network_state = network_state;
+
+	/* notify we're changed */
+	egg_debug ("notify::network-state");
+	g_object_notify (G_OBJECT(control), "network-state");
+}
+
+/**
  * pk_control_get_properties_collect_cb:
  **/
 static void
 pk_control_get_properties_collect_cb (const char *key, const GValue *value, PkControl *control)
 {
-	const gchar *tmp;
-
-	if (g_strcmp0 (key, "version-major") == 0 || g_strcmp0 (key, "VersionMajor") == 0) {
-		control->priv->version_major = g_value_get_uint (value);
-	} else if (g_strcmp0 (key, "version-minor") == 0 || g_strcmp0 (key, "VersionMinor") == 0) {
-		control->priv->version_minor = g_value_get_uint (value);
-	} else if (g_strcmp0 (key, "version-micro") == 0 || g_strcmp0 (key, "VersionMicro") == 0) {
-		control->priv->version_micro = g_value_get_uint (value);
+	if (g_strcmp0 (key, "VersionMajor") == 0) {
+		pk_control_set_version_major (control, g_value_get_uint (value));
+	} else if (g_strcmp0 (key, "VersionMinor") == 0) {
+		pk_control_set_version_minor (control, g_value_get_uint (value));
+	} else if (g_strcmp0 (key, "VersionMicro") == 0) {
+		pk_control_set_version_micro (control, g_value_get_uint (value));
 	} else if (g_strcmp0 (key, "BackendName") == 0) {
-		g_free (control->priv->backend_name);
-		control->priv->backend_name = g_strdup (g_value_get_string (value));
+		pk_control_set_backend_name (control, g_value_get_string (value));
 	} else if (g_strcmp0 (key, "BackendDescription") == 0) {
-		g_free (control->priv->backend_description);
-		control->priv->backend_description = g_strdup (g_value_get_string (value));
+		pk_control_set_backend_description (control, g_value_get_string (value));
 	} else if (g_strcmp0 (key, "BackendAuthor") == 0) {
-		g_free (control->priv->backend_author);
-		control->priv->backend_author = g_strdup (g_value_get_string (value));
+		pk_control_set_backend_author (control, g_value_get_string (value));
 	} else if (g_strcmp0 (key, "MimeTypes") == 0) {
-		g_free (control->priv->mime_types);
-		control->priv->mime_types = g_strdup (g_value_get_string (value));
+		pk_control_set_mime_types (control, g_value_get_string (value));
 	} else if (g_strcmp0 (key, "Roles") == 0) {
-		tmp = g_value_get_string (value);
-		control->priv->roles = pk_role_bitfield_from_text (tmp);
+		pk_control_set_roles (control, pk_role_bitfield_from_text (g_value_get_string (value)));
 	} else if (g_strcmp0 (key, "Groups") == 0) {
-		tmp = g_value_get_string (value);
-		control->priv->groups = pk_group_bitfield_from_text (tmp);
+		pk_control_set_groups (control, pk_group_bitfield_from_text (g_value_get_string (value)));
 	} else if (g_strcmp0 (key, "Filters") == 0) {
-		tmp = g_value_get_string (value);
-		control->priv->filters = pk_filter_bitfield_from_text (tmp);
+		pk_control_set_filters (control, pk_filter_bitfield_from_text (g_value_get_string (value)));
+	} else if (g_strcmp0 (key, "Locked") == 0) {
+		pk_control_set_locked (control, g_value_get_boolean (value));
+	} else if (g_strcmp0 (key, "NetworkState") == 0) {
+		pk_control_set_network_state (control, pk_network_enum_from_text (g_value_get_string (value)));
 	} else {
 		egg_warning ("unhandled property '%s'", key);
 	}
@@ -1224,7 +1419,6 @@ static void
 pk_control_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkControlState *state)
 {
 	GError *error = NULL;
-	gchar *tid = NULL;
 	gboolean ret;
 	GHashTable *hash;
 
@@ -1236,7 +1430,7 @@ pk_control_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkControl
 				     dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), &hash,
 				     G_TYPE_INVALID);
 	if (!ret) {
-		egg_warning ("failed to set proxy: %s", error->message);
+		egg_warning ("failed to get properties: %s", error->message);
 		pk_control_get_properties_state_finish (state, error);
 		goto out;
 	}
@@ -1246,14 +1440,16 @@ pk_control_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkControl
 
 	/* process results */
 	if (hash != NULL) {
+		g_object_freeze_notify (G_OBJECT(state->control));
 		g_hash_table_foreach (hash, (GHFunc) pk_control_get_properties_collect_cb, state->control);
 		g_hash_table_unref (hash);
+		g_object_thaw_notify (G_OBJECT(state->control));
 	}
 
 	/* we're done */
 	pk_control_get_properties_state_finish (state, error);
 out:
-	g_free (tid);
+	return;
 }
 
 /**
@@ -1388,7 +1584,7 @@ pk_control_transaction_list_changed_cb (DBusGProxy *proxy, gchar **array, PkCont
 	g_return_if_fail (PK_IS_CONTROL (control));
 
 	egg_debug ("emit transaction-list-changed");
-	g_signal_emit (control, signals [SIGNAL_LIST_CHANGED], 0);
+	g_signal_emit (control, signals[SIGNAL_TRANSACTION_LIST_CHANGED], 0);
 }
 
 /**
@@ -1400,7 +1596,7 @@ pk_control_restart_schedule_cb (DBusGProxy *proxy, PkControl *control)
 	g_return_if_fail (PK_IS_CONTROL (control));
 
 	egg_debug ("emitting restart-schedule");
-	g_signal_emit (control, signals [SIGNAL_RESTART_SCHEDULE], 0);
+	g_signal_emit (control, signals[SIGNAL_RESTART_SCHEDULE], 0);
 
 }
 
@@ -1413,7 +1609,7 @@ pk_control_updates_changed_cb (DBusGProxy *proxy, PkControl *control)
 	g_return_if_fail (PK_IS_CONTROL (control));
 
 	egg_debug ("emitting updates-changed");
-	g_signal_emit (control, signals [SIGNAL_UPDATES_CHANGED], 0);
+	g_signal_emit (control, signals[SIGNAL_UPDATES_CHANGED], 0);
 
 }
 
@@ -1426,31 +1622,61 @@ pk_control_repo_list_changed_cb (DBusGProxy *proxy, PkControl *control)
 	g_return_if_fail (PK_IS_CONTROL (control));
 
 	egg_debug ("emitting repo-list-changed");
-	g_signal_emit (control, signals [SIGNAL_REPO_LIST_CHANGED], 0);
+	g_signal_emit (control, signals[SIGNAL_REPO_LIST_CHANGED], 0);
 }
 
 /**
- * pk_control_network_state_changed_cb:
- */
+ * pk_control_changed_get_properties_cb:
+ **/
 static void
-pk_control_network_state_changed_cb (DBusGProxy *proxy, const gchar *network_text, PkControl *control)
+pk_control_changed_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkControl *control)
 {
-	PkNetworkEnum network;
-	g_return_if_fail (PK_IS_CONTROL (control));
+	GError *error = NULL;
+	gboolean ret;
+	GHashTable *hash;
+
+	/* finished this call */
+	control->priv->call_get_properties = NULL;
+
+	/* get the result */
+	ret = dbus_g_proxy_end_call (proxy, call, &error,
+				     dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), &hash,
+				     G_TYPE_INVALID);
+	if (!ret) {
+		egg_warning ("failed to get properties: %s", error->message);
+		goto out;
+	}
 
-	network = pk_network_enum_from_text (network_text);
-	egg_debug ("emitting network-state-changed: %s", network_text);
-	g_signal_emit (control, signals [SIGNAL_NETWORK_STATE_CHANGED], 0, network);
+	/* process results */
+	if (hash != NULL) {
+		g_object_freeze_notify (G_OBJECT(control));
+		g_hash_table_foreach (hash, (GHFunc) pk_control_get_properties_collect_cb, control);
+		g_hash_table_unref (hash);
+		g_object_thaw_notify (G_OBJECT(control));
+	}
+out:
+	return;
 }
 
 /**
- * pk_control_locked_cb:
+ * pk_control_changed_cb:
  */
 static void
-pk_control_locked_cb (DBusGProxy *proxy, gboolean is_locked, PkControl *control)
+pk_control_changed_cb (DBusGProxy *proxy, PkControl *control)
 {
-	egg_debug ("emit locked %i", is_locked);
-	g_signal_emit (control , signals [SIGNAL_LOCKED], 0, is_locked);
+	/* already getting properties */
+	if (control->priv->call_get_properties != NULL) {
+		egg_warning ("already getting properties, will ignore");
+		return;
+	}
+
+	/* call D-Bus get_properties async */
+	egg_debug ("properties changed, so getting new list");
+	control->priv->call_get_properties =
+		dbus_g_proxy_begin_call (control->priv->proxy_props, "GetAll",
+					 (DBusGProxyCallNotify) pk_control_changed_get_properties_cb, control, NULL,
+					 G_TYPE_STRING, "org.freedesktop.PackageKit",
+					 G_TYPE_INVALID);
 }
 
 /**
@@ -1501,13 +1727,17 @@ pk_control_name_owner_changed_cb (DBusGProxy *proxy, const gchar *name, const gc
 
 	/* something --> nothing */
 	if (prev_len != 0 && new_len == 0) {
-		g_signal_emit (control, signals [SIGNAL_CONNECTION_CHANGED], 0, FALSE);
+		control->priv->connected = FALSE;
+		egg_debug ("notify::connected");
+		g_object_notify (G_OBJECT(control), "connected");
 		return;
 	}
 
 	/* nothing --> something */
 	if (prev_len == 0 && new_len != 0) {
-		g_signal_emit (control, signals [SIGNAL_CONNECTION_CHANGED], 0, TRUE);
+		control->priv->connected = TRUE;
+		egg_debug ("notify::connected");
+		g_object_notify (G_OBJECT(control), "connected");
 		return;
 	}
 }
@@ -1552,6 +1782,15 @@ pk_control_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
 	case PROP_MIME_TYPES:
 		g_value_set_string (value, priv->mime_types);
 		break;
+	case PROP_LOCKED:
+		g_value_set_boolean (value, priv->locked);
+		break;
+	case PROP_NETWORK_STATE:
+		g_value_set_uint (value, priv->network_state);
+		break;
+	case PROP_CONNECTED:
+		g_value_set_boolean (value, priv->connected);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -1665,13 +1904,37 @@ pk_control_class_init (PkControlClass *klass)
 	g_object_class_install_property (object_class, PROP_MIME_TYPES, pspec);
 
 	/**
+	 * PkControl:locked:
+	 */
+	pspec = g_param_spec_boolean ("locked", NULL, NULL,
+				      FALSE,
+				      G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_LOCKED, pspec);
+
+	/**
+	 * PkControl:network-state:
+	 */
+	pspec = g_param_spec_boolean ("network-state", NULL, NULL,
+				      FALSE,
+				      G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_NETWORK_STATE, pspec);
+
+	/**
+	 * PkControl:connected:
+	 */
+	pspec = g_param_spec_boolean ("connected", NULL, NULL,
+				      FALSE,
+				      G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_CONNECTED, pspec);
+
+	/**
 	 * PkControl::updates-changed:
 	 * @control: the #PkControl instance that emitted the signal
 	 *
 	 * The ::updates-changed signal is emitted when the update list may have
 	 * changed and the control program may have to update some UI.
 	 **/
-	signals [SIGNAL_UPDATES_CHANGED] =
+	signals[SIGNAL_UPDATES_CHANGED] =
 		g_signal_new ("updates-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (PkControlClass, updates_changed),
@@ -1684,26 +1947,13 @@ pk_control_class_init (PkControlClass *klass)
 	 * The ::repo-list-changed signal is emitted when the repo list may have
 	 * changed and the control program may have to update some UI.
 	 **/
-	signals [SIGNAL_REPO_LIST_CHANGED] =
+	signals[SIGNAL_REPO_LIST_CHANGED] =
 		g_signal_new ("repo-list-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (PkControlClass, repo_list_changed),
 			      NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
 	/**
-	 * PkControl::network-state-changed:
-	 * @control: the #PkControl instance that emitted the signal
-	 *
-	 * The ::network-state-changed signal is emitted when the network has changed speed or
-	 * connections state.
-	 **/
-	signals [SIGNAL_NETWORK_STATE_CHANGED] =
-		g_signal_new ("network-state-changed",
-			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (PkControlClass, network_state_changed),
-			      NULL, NULL, g_cclosure_marshal_VOID__UINT,
-			      G_TYPE_NONE, 1, G_TYPE_UINT);
-	/**
 	 * PkControl::restart-schedule:
 	 * @control: the #PkControl instance that emitted the signal
 	 *
@@ -1712,7 +1962,7 @@ pk_control_class_init (PkControlClass *klass)
 	 * Client programs should reload themselves when it is convenient to
 	 * do so, as old client tools may not be compatable with the new daemon.
 	 **/
-	signals [SIGNAL_RESTART_SCHEDULE] =
+	signals[SIGNAL_RESTART_SCHEDULE] =
 		g_signal_new ("restart-schedule",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (PkControlClass, restart_schedule),
@@ -1725,42 +1975,12 @@ pk_control_class_init (PkControlClass *klass)
 	 * The ::transaction-list-changed signal is emitted when the list
 	 * of transactions handled by the daemon is changed.
 	 **/
-	signals [SIGNAL_LIST_CHANGED] =
+	signals[SIGNAL_TRANSACTION_LIST_CHANGED] =
 		g_signal_new ("transaction-list-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (PkControlClass, transaction_list_changed),
 			      NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
-	/**
-	 * PkControl::locked:
-	 * @control: the #PkControl instance that emitted the signal
-	 *
-	 * The ::locked signal is emitted when the backend instance has been
-	 * locked by PackageKit.
-	 * This may mean that other native package tools will not work.
-	 **/
-	signals [SIGNAL_LOCKED] =
-		g_signal_new ("locked",
-			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (PkControlClass, locked),
-			      NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN,
-			      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
-	/**
-	 * PkControl::connection-changed:
-	 * @control: the #PkControl instance that emitted the signal
-	 *
-	 * The ::connection-changed is emitted when packagekitd is added or
-	 * removed from the bus. In this way, a client can know if the daemon
-	 * is running.
-	 **/
-	signals [SIGNAL_CONNECTION_CHANGED] =
-		g_signal_new ("connection-changed",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (PkControlClass, connection_changed),
-			      NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN,
-			      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
 
 	g_type_class_add_private (klass, sizeof (PkControlPrivate));
 }
@@ -1779,6 +1999,9 @@ pk_control_init (PkControl *control)
 	control->priv->backend_name = NULL;
 	control->priv->backend_description = NULL;
 	control->priv->backend_author = NULL;
+	control->priv->locked = FALSE;
+	control->priv->connected = FALSE;
+	control->priv->network_state = PK_NETWORK_ENUM_UNKNOWN;
 	control->priv->calls = g_ptr_array_new ();
 
 	/* check dbus connections, exit if not valid */
@@ -1790,9 +2013,9 @@ pk_control_init (PkControl *control)
 	}
 
 	/* we maintain a local copy */
-	control->priv->version_major = 0;
-	control->priv->version_minor = 0;
-	control->priv->version_micro = 0;
+	control->priv->version_major = G_MAXUINT;
+	control->priv->version_minor = G_MAXUINT;
+	control->priv->version_micro = G_MAXUINT;
 
 	/* get a connection to the main interface */
 	control->priv->proxy = dbus_g_proxy_new_for_name (control->priv->connection,
@@ -1840,20 +2063,13 @@ pk_control_init (PkControl *control)
 	dbus_g_proxy_connect_signal (control->priv->proxy, "RepoListChanged",
 				     G_CALLBACK (pk_control_repo_list_changed_cb), control, NULL);
 
-	dbus_g_proxy_add_signal (control->priv->proxy, "NetworkStateChanged",
-				 G_TYPE_STRING, G_TYPE_INVALID);
-	dbus_g_proxy_connect_signal (control->priv->proxy, "NetworkStateChanged",
-				     G_CALLBACK (pk_control_network_state_changed_cb), control, NULL);
+	dbus_g_proxy_add_signal (control->priv->proxy, "Changed", G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal (control->priv->proxy, "Changed",
+				     G_CALLBACK (pk_control_changed_cb), control, NULL);
 
 	dbus_g_proxy_add_signal (control->priv->proxy, "RestartSchedule", G_TYPE_INVALID);
 	dbus_g_proxy_connect_signal (control->priv->proxy, "RestartSchedule",
 				     G_CALLBACK (pk_control_restart_schedule_cb), control, NULL);
-
-	dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__BOOLEAN,
-					   G_TYPE_NONE, G_TYPE_BOOLEAN, G_TYPE_INVALID);
-	dbus_g_proxy_add_signal (control->priv->proxy, "Locked", G_TYPE_BOOLEAN, G_TYPE_INVALID);
-	dbus_g_proxy_connect_signal (control->priv->proxy, "Locked",
-				     G_CALLBACK (pk_control_locked_cb), control, NULL);
 }
 
 /**
@@ -1870,16 +2086,14 @@ pk_control_finalize (GObject *object)
 	pk_control_cancel_all_dbus_methods (control);
 
 	/* disconnect signal handlers */
-	dbus_g_proxy_disconnect_signal (control->priv->proxy, "Locked",
-				        G_CALLBACK (pk_control_locked_cb), control);
 	dbus_g_proxy_disconnect_signal (control->priv->proxy, "TransactionListChanged",
 				        G_CALLBACK (pk_control_transaction_list_changed_cb), control);
 	dbus_g_proxy_disconnect_signal (control->priv->proxy, "UpdatesChanged",
 				        G_CALLBACK (pk_control_updates_changed_cb), control);
 	dbus_g_proxy_disconnect_signal (control->priv->proxy, "RepoListChanged",
 				        G_CALLBACK (pk_control_repo_list_changed_cb), control);
-	dbus_g_proxy_disconnect_signal (control->priv->proxy, "NetworkStateChanged",
-				        G_CALLBACK (pk_control_network_state_changed_cb), control);
+	dbus_g_proxy_disconnect_signal (control->priv->proxy, "Changed",
+				        G_CALLBACK (pk_control_changed_cb), control);
 	dbus_g_proxy_disconnect_signal (control->priv->proxy, "RestartSchedule",
 				        G_CALLBACK (pk_control_restart_schedule_cb), control);
 	dbus_g_proxy_disconnect_signal (control->priv->proxy_dbus, "NameOwnerChanged",
diff --git a/src/org.freedesktop.PackageKit.xml b/src/org.freedesktop.PackageKit.xml
index 8aa93f3..7dffc41 100644
--- a/src/org.freedesktop.PackageKit.xml
+++ b/src/org.freedesktop.PackageKit.xml
@@ -120,6 +120,38 @@
     </property>
 
     <!--*****************************************************************************************-->
+    <property name="Locked" type="b" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            Set when the backend is locked and native tools would fail.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
+
+    <!--*****************************************************************************************-->
+    <property name="NetworkState" type="s" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            Gets the network state from the daemon. This is provided as some clients may not want
+            to use NetworkManager if the system daemon is configured to use something else.
+          </doc:para>
+          <doc:para>
+            If the system is managed using NetworkManager then the following
+            states are supported:
+            <doc:tt>unknown</doc:tt>, <doc:tt>offline</doc:tt>, <doc:tt>online</doc:tt>,
+            <doc:tt>wifi</doc:tt>, <doc:tt>mobile</doc:tt> or <doc:tt>wired</doc:tt>.
+            If the system is configured for legacy UNIX network fallback, or NetworkManager
+            is not running then the folowing states are supported:
+            <doc:tt>unknown</doc:tt>, <doc:tt>offline</doc:tt> or <doc:tt>online</doc:tt>.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
+
+    <!--*****************************************************************************************-->
     <method name="CanAuthorize">
       <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
       <doc:doc>
@@ -392,6 +424,10 @@
             Gets the network state from the daemon. This is provided as some clients may not want
             to use NetworkManager if the system daemon is configured to use something else.
           </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the properties interface for the transaction instead.
+          </doc:para>
         </doc:description>
       </doc:doc>
       <arg type="s" name="state" direction="out">
@@ -492,6 +528,10 @@
           <doc:para>
             This signal is emitted when the backend is locked and native tools would fail.
           </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the properties interface for the transaction instead.
+          </doc:para>
         </doc:description>
       </doc:doc>
       <arg type="b" name="is_locked" direction="out">
@@ -512,6 +552,10 @@
           <doc:para>
             This signal is emitted when the network state has changed
           </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the properties interface for the transaction instead.
+          </doc:para>
         </doc:description>
       </doc:doc>
       <arg type="s" name="state" direction="out">
@@ -558,6 +602,17 @@
       </doc:doc>
     </signal>
 
+    <!--*****************************************************************************************-->
+    <signal name="Changed">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal is emitted when a property on the interface changes.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+
   </interface>
 </node>
 
diff --git a/src/pk-engine.c b/src/pk-engine.c
index fa6bec1..4ae9781 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -98,6 +98,8 @@ struct PkEnginePrivate
 	gchar			*proxy_http;
 	gchar			*proxy_ftp;
 	gchar			*sender;
+	gboolean		 locked;
+	PkNetworkEnum		 network_state;
 };
 
 enum {
@@ -107,6 +109,7 @@ enum {
 	SIGNAL_NETWORK_STATE_CHANGED,
 	SIGNAL_RESTART_SCHEDULE,
 	SIGNAL_UPDATES_CHANGED,
+	SIGNAL_CHANGED,
 	SIGNAL_QUIT,
 	SIGNAL_LAST
 };
@@ -123,6 +126,8 @@ enum {
 	PROP_GROUPS,
 	PROP_FILTERS,
 	PROP_MIME_TYPES,
+	PROP_LOCKED,
+	PROP_NETWORK_STATE,
 	PROP_LAST,
 };
 
@@ -209,6 +214,16 @@ pk_engine_inhibit_locked_cb (PkInhibit *inhibit, gboolean is_locked, PkEngine *e
 	g_return_if_fail (PK_IS_ENGINE (engine));
 	egg_debug ("emitting locked %i", is_locked);
 	g_signal_emit (engine, signals[SIGNAL_LOCKED], 0, is_locked);
+
+	/* already set */
+	if (engine->priv->locked == is_locked)
+		return;
+
+	engine->priv->locked = is_locked;
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (engine, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -879,6 +894,12 @@ pk_engine_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
 	case PROP_MIME_TYPES:
 		g_value_set_string (value, engine->priv->mime_types);
 		break;
+	case PROP_LOCKED:
+		g_value_set_boolean (value, engine->priv->locked);
+		break;
+	case PROP_NETWORK_STATE:
+		g_value_set_string (value, pk_network_enum_to_text (engine->priv->network_state));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -993,6 +1014,22 @@ pk_engine_class_init (PkEngineClass *klass)
 				     G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_MIME_TYPES, pspec);
 
+	/**
+	 * PkEngine:locked:
+	 */
+	pspec = g_param_spec_boolean ("locked", NULL, NULL,
+				      FALSE,
+				      G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_LOCKED, pspec);
+
+	/**
+	 * PkEngine:network-state:
+	 */
+	pspec = g_param_spec_string ("network-state", NULL, NULL,
+				     NULL,
+				     G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_NETWORK_STATE, pspec);
+
 	/* signals */
 	signals[SIGNAL_LOCKED] =
 		g_signal_new ("locked",
@@ -1024,6 +1061,11 @@ pk_engine_class_init (PkEngineClass *klass)
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
+	signals[SIGNAL_CHANGED] =
+		g_signal_new ("changed",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
 	signals[SIGNAL_QUIT] =
 		g_signal_new ("quit",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
@@ -1061,13 +1103,23 @@ pk_engine_binary_file_changed_cb (PkFileMonitor *file_monitor, PkEngine *engine)
  * pk_engine_network_state_changed_cb:
  **/
 static void
-pk_engine_network_state_changed_cb (PkNetwork *network, PkNetworkEnum state, PkEngine *engine)
+pk_engine_network_state_changed_cb (PkNetwork *network, PkNetworkEnum network_state, PkEngine *engine)
 {
 	const gchar *state_text;
 	g_return_if_fail (PK_IS_ENGINE (engine));
-	state_text = pk_network_enum_to_text (state);
+	state_text = pk_network_enum_to_text (network_state);
 	egg_debug ("emitting network-state-changed: %s", state_text);
 	g_signal_emit (engine, signals[SIGNAL_NETWORK_STATE_CHANGED], 0, state_text);
+
+	/* already set */
+	if (engine->priv->network_state == network_state)
+		return;
+
+	engine->priv->network_state = network_state;
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (engine, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -1088,6 +1140,7 @@ pk_engine_init (PkEngine *engine)
 	engine->priv->backend_description = NULL;
 	engine->priv->backend_author = NULL;
 	engine->priv->sender = NULL;
+	engine->priv->locked = FALSE;
 
 	/* use the config file */
 	engine->priv->conf = pk_conf_new ();
@@ -1112,6 +1165,7 @@ pk_engine_init (PkEngine *engine)
 	engine->priv->network = pk_network_new ();
 	g_signal_connect (engine->priv->network, "state-changed",
 			  G_CALLBACK (pk_engine_network_state_changed_cb), engine);
+	engine->priv->network_state = pk_network_get_network_state (engine->priv->network);
 
 	/* create a new backend so we can get the static stuff */
 	engine->priv->roles = pk_backend_get_roles (engine->priv->backend);
commit 85ed4b0d3aa446f97e55473dc086fafaa07040f9
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 10:47:59 2009 +0100

    trivial: re-instate the proxy_props code in the adopt function which was removed in the last commit

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index 0c35526..a8e0548 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -3108,6 +3108,13 @@ pk_client_adopt_async (PkClient *client, const gchar *transaction_id, GCancellab
 	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
 	dbus_g_proxy_set_default_timeout (state->proxy, INT_MAX);
 
+	/* get a connection to the properties interface */
+	state->proxy_props = dbus_g_proxy_new_for_name (state->client->priv->connection,
+							PK_DBUS_SERVICE, state->tid,
+							"org.freedesktop.DBus.Properties");
+	if (state->proxy_props == NULL)
+		egg_error ("Cannot connect to PackageKit on %s", state->tid);
+
 	/* call D-Bus get_properties async */
 	state->call = dbus_g_proxy_begin_call (state->proxy_props, "GetAll",
 					       (DBusGProxyCallNotify) pk_client_adopt_get_properties_cb, state, NULL,
commit 54551eebe6418e92a2b4884fdb4924f3474aa65a
Merge: d904899... 0b8f6dc...
Author: Richard Hughes <richard at hughsie.com>
Date:   Tue Sep 15 09:32:19 2009 +0100

    Merge branch 'master' of git+ssh://git.packagekit.org/srv/git/PackageKit

commit 0b8f6dcd0abea1954e57a48093fb5de101c07e05
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Mon Sep 14 13:37:58 2009 -0300

    packagekit-qt: Fix crash when using getOldTransactions to get uid.

diff --git a/lib/packagekit-qt/src/transaction.cpp b/lib/packagekit-qt/src/transaction.cpp
index adbcb2a..7ff4b14 100644
--- a/lib/packagekit-qt/src/transaction.cpp
+++ b/lib/packagekit-qt/src/transaction.cpp
@@ -171,7 +171,10 @@ QString Transaction::data()
 
 uint Transaction::uid()
 {
-	return d->p->uid ();
+	if(d->p) {
+		return d->p->uid();
+	}
+	return d->uid;
 }
 
 QString Transaction::cmdline()
diff --git a/lib/packagekit-qt/src/transactionprivate.cpp b/lib/packagekit-qt/src/transactionprivate.cpp
index 13f60b5..422746b 100644
--- a/lib/packagekit-qt/src/transactionprivate.cpp
+++ b/lib/packagekit-qt/src/transactionprivate.cpp
@@ -23,7 +23,7 @@
 
 using namespace PackageKit;
 
-TransactionPrivate::TransactionPrivate(Transaction* parent) : QObject(parent), t(parent)
+TransactionPrivate::TransactionPrivate(Transaction* parent) : QObject(parent), t(parent), p(0)
 {
 }
 
commit d904899a92d453e37bad9676abbf95193e35db18
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 16:21:39 2009 +0100

    trivial: rename some signal defines

diff --git a/src/pk-engine.c b/src/pk-engine.c
index 7f41a86..fa6bec1 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -101,14 +101,14 @@ struct PkEnginePrivate
 };
 
 enum {
-	PK_ENGINE_LOCKED,
-	PK_ENGINE_TRANSACTION_LIST_CHANGED,
-	PK_ENGINE_REPO_LIST_CHANGED,
-	PK_ENGINE_NETWORK_STATE_CHANGED,
-	PK_ENGINE_RESTART_SCHEDULE,
-	PK_ENGINE_UPDATES_CHANGED,
-	PK_ENGINE_QUIT,
-	PK_ENGINE_LAST_SIGNAL
+	SIGNAL_LOCKED,
+	SIGNAL_TRANSACTION_LIST_CHANGED,
+	SIGNAL_REPO_LIST_CHANGED,
+	SIGNAL_NETWORK_STATE_CHANGED,
+	SIGNAL_RESTART_SCHEDULE,
+	SIGNAL_UPDATES_CHANGED,
+	SIGNAL_QUIT,
+	SIGNAL_LAST
 };
 
 enum {
@@ -126,7 +126,7 @@ enum {
 	PROP_LAST,
 };
 
-static guint	     signals [PK_ENGINE_LAST_SIGNAL] = { 0 };
+static guint	     signals[SIGNAL_LAST] = { 0 };
 
 G_DEFINE_TYPE (PkEngine, pk_engine, G_TYPE_OBJECT)
 
@@ -194,7 +194,7 @@ pk_engine_transaction_list_changed_cb (PkTransactionList *tlist, PkEngine *engin
 	transaction_list = pk_transaction_list_get_array (engine->priv->transaction_list);
 
 	egg_debug ("emitting transaction-list-changed");
-	g_signal_emit (engine, signals [PK_ENGINE_TRANSACTION_LIST_CHANGED], 0, transaction_list);
+	g_signal_emit (engine, signals[SIGNAL_TRANSACTION_LIST_CHANGED], 0, transaction_list);
 	pk_engine_reset_timer (engine);
 
 	g_strfreev (transaction_list);
@@ -208,7 +208,7 @@ pk_engine_inhibit_locked_cb (PkInhibit *inhibit, gboolean is_locked, PkEngine *e
 {
 	g_return_if_fail (PK_IS_ENGINE (engine));
 	egg_debug ("emitting locked %i", is_locked);
-	g_signal_emit (engine, signals [PK_ENGINE_LOCKED], 0, is_locked);
+	g_signal_emit (engine, signals[SIGNAL_LOCKED], 0, is_locked);
 }
 
 /**
@@ -219,7 +219,7 @@ pk_engine_notify_repo_list_changed_cb (PkNotify *notify, PkEngine *engine)
 {
 	g_return_if_fail (PK_IS_ENGINE (engine));
 	egg_debug ("emitting repo-list-changed");
-	g_signal_emit (engine, signals [PK_ENGINE_REPO_LIST_CHANGED], 0);
+	g_signal_emit (engine, signals[SIGNAL_REPO_LIST_CHANGED], 0);
 }
 
 /**
@@ -230,7 +230,7 @@ pk_engine_notify_updates_changed_cb (PkNotify *notify, PkEngine *engine)
 {
 	g_return_if_fail (PK_IS_ENGINE (engine));
 	egg_debug ("emitting updates-changed");
-	g_signal_emit (engine, signals [PK_ENGINE_UPDATES_CHANGED], 0);
+	g_signal_emit (engine, signals[SIGNAL_UPDATES_CHANGED], 0);
 }
 
 /**
@@ -550,7 +550,7 @@ pk_engine_get_seconds_idle (PkEngine *engine)
 	/* have we been updated? */
 	if (engine->priv->notify_clients_of_upgrade) {
 		egg_debug ("emitting restart-schedule because of binary change");
-		g_signal_emit (engine, signals [PK_ENGINE_RESTART_SCHEDULE], 0);
+		g_signal_emit (engine, signals[SIGNAL_RESTART_SCHEDULE], 0);
 		return G_MAXUINT;
 	}
 
@@ -578,7 +578,7 @@ pk_engine_suggest_daemon_quit (PkEngine *engine, GError **error)
 	size = pk_transaction_list_get_size (engine->priv->transaction_list);
 	if (size == 0) {
 		egg_debug ("emitting quit");
-		g_signal_emit (engine, signals [PK_ENGINE_QUIT], 0);
+		g_signal_emit (engine, signals[SIGNAL_QUIT], 0);
 		return TRUE;
 	}
 
@@ -994,37 +994,37 @@ pk_engine_class_init (PkEngineClass *klass)
 	g_object_class_install_property (object_class, PROP_MIME_TYPES, pspec);
 
 	/* signals */
-	signals [PK_ENGINE_LOCKED] =
+	signals[SIGNAL_LOCKED] =
 		g_signal_new ("locked",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN,
 			      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-	signals [PK_ENGINE_TRANSACTION_LIST_CHANGED] =
+	signals[SIGNAL_TRANSACTION_LIST_CHANGED] =
 		g_signal_new ("transaction-list-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 			      G_TYPE_NONE, 1, G_TYPE_STRV);
-	signals [PK_ENGINE_RESTART_SCHEDULE] =
+	signals[SIGNAL_RESTART_SCHEDULE] =
 		g_signal_new ("restart-schedule",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
-	signals [PK_ENGINE_REPO_LIST_CHANGED] =
+	signals[SIGNAL_REPO_LIST_CHANGED] =
 		g_signal_new ("repo-list-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
-	signals [PK_ENGINE_NETWORK_STATE_CHANGED] =
+	signals[SIGNAL_NETWORK_STATE_CHANGED] =
 		g_signal_new ("network-state-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__STRING,
 			      G_TYPE_NONE, 1, G_TYPE_STRING);
-	signals [PK_ENGINE_UPDATES_CHANGED] =
+	signals[SIGNAL_UPDATES_CHANGED] =
 		g_signal_new ("updates-changed",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
-	signals [PK_ENGINE_QUIT] =
+	signals[SIGNAL_QUIT] =
 		g_signal_new ("quit",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
@@ -1067,7 +1067,7 @@ pk_engine_network_state_changed_cb (PkNetwork *network, PkNetworkEnum state, PkE
 	g_return_if_fail (PK_IS_ENGINE (engine));
 	state_text = pk_network_enum_to_text (state);
 	egg_debug ("emitting network-state-changed: %s", state_text);
-	g_signal_emit (engine, signals [PK_ENGINE_NETWORK_STATE_CHANGED], 0, state_text);
+	g_signal_emit (engine, signals[SIGNAL_NETWORK_STATE_CHANGED], 0, state_text);
 }
 
 /**
commit 4b80d6a6a8172abdf8134068e00dff95206a4688
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 15:59:33 2009 +0100

    spec: Add a per-Transaction ::Changed(void) signal and deprecate the other signals

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index e002ea6..0c35526 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -244,6 +244,120 @@ pk_client_real_paths (gchar **paths)
 }
 
 /**
+ * pk_client_percentage_to_signed:
+ */
+static gint
+pk_client_percentage_to_signed (guint percentage)
+{
+	if (percentage == 101)
+		return -1;
+	return (gint) percentage;
+}
+
+/**
+ * pk_client_get_properties_collect_cb:
+ **/
+static void
+pk_client_get_properties_collect_cb (const char *key, const GValue *value, PkClientState *state)
+{
+	gboolean ret;
+
+	/* do the callback for GUI programs */
+	if (state->progress_callback == NULL)
+		return;
+
+	/* role */
+	if (g_strcmp0 (key, "Role") == 0) {
+		ret = pk_progress_set_role (state->progress, pk_role_enum_from_text (g_value_get_string (value)));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_ROLE, state->progress_user_data);
+		return;
+	}
+
+	/* status */
+	if (g_strcmp0 (key, "Status") == 0) {
+		ret = pk_progress_set_status (state->progress, pk_status_enum_from_text (g_value_get_string (value)));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_STATUS, state->progress_user_data);
+		return;
+	}
+
+	/* last-package */
+	if (g_strcmp0 (key, "LastPackage") == 0) {
+		ret = pk_progress_set_package_id (state->progress, g_value_get_string (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_PACKAGE_ID, state->progress_user_data);
+		return;
+	}
+
+	/* percentage */
+	if (g_strcmp0 (key, "Percentage") == 0) {
+		ret = pk_progress_set_percentage (state->progress, pk_client_percentage_to_signed (g_value_get_uint (value)));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_PERCENTAGE, state->progress_user_data);
+		return;
+	}
+
+	/* subpercentage */
+	if (g_strcmp0 (key, "Subpercentage") == 0) {
+		ret = pk_progress_set_subpercentage (state->progress, pk_client_percentage_to_signed (g_value_get_uint (value)));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_SUBPERCENTAGE, state->progress_user_data);
+		return;
+	}
+
+	/* allow-cancel */
+	if (g_strcmp0 (key, "AllowCancel") == 0) {
+		ret = pk_progress_set_allow_cancel (state->progress, g_value_get_boolean (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_ALLOW_CANCEL, state->progress_user_data);
+		return;
+	}
+
+	/* caller-active */
+	if (g_strcmp0 (key, "CallerActive") == 0) {
+		ret = pk_progress_set_caller_active (state->progress, g_value_get_boolean (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_CALLER_ACTIVE, state->progress_user_data);
+		return;
+	}
+
+	/* elapsed-time */
+	if (g_strcmp0 (key, "ElapsedTime") == 0) {
+		ret = pk_progress_set_elapsed_time (state->progress, g_value_get_uint (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_ELAPSED_TIME, state->progress_user_data);
+		return;
+	}
+
+	/* remaining-time */
+	if (g_strcmp0 (key, "RemainingTime") == 0) {
+		ret = pk_progress_set_elapsed_time (state->progress, g_value_get_uint (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_REMAINING_TIME, state->progress_user_data);
+		return;
+	}
+
+	/* speed */
+	if (g_strcmp0 (key, "Speed") == 0) {
+		ret = pk_progress_set_speed (state->progress, g_value_get_uint (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_SPEED, state->progress_user_data);
+		return;
+	}
+
+	/* uid */
+	if (g_strcmp0 (key, "Uid") == 0) {
+		ret = pk_progress_set_uid (state->progress, g_value_get_uint (value));
+		if (ret)
+			state->progress_callback (state->progress, PK_PROGRESS_TYPE_UID, state->progress_user_data);
+		return;
+	}
+
+	egg_warning ("unhandled property '%s'", key);
+}
+
+/**
  * pk_client_cancel_cb:
  **/
 static void
@@ -252,18 +366,17 @@ pk_client_cancel_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *sta
 	GError *error = NULL;
 	gboolean ret;
 
-	egg_debug ("cancelled %s (%p)", state->tid, state->call);
-
 	/* get the result */
 	ret = dbus_g_proxy_end_call (proxy, call, &error,
 				     G_TYPE_INVALID);
 	if (!ret) {
 		/* there's not really a lot we can do here */
-		egg_warning ("failed: %s", error->message);
+		egg_warning ("failed to cancel: %s", error->message);
 		g_error_free (error);
 	}
 
 	/* finished this call */
+	egg_debug ("cancelled %s, ended DBus call: %p", state->tid, state->call);
 	state->call = NULL;
 }
 
@@ -282,6 +395,7 @@ pk_client_cancellable_cancel_cb (GCancellable *cancellable, PkClientState *state
 	/* dbus method is pending now, just cancel */
 	if (state->call != NULL) {
 		dbus_g_proxy_cancel_call (state->proxy, state->call);
+		egg_debug ("cancelling %s, ended DBus call: %p", state->tid, state->call);
 		state->call = NULL;
 		return;
 	}
@@ -561,10 +675,8 @@ pk_client_method_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *sta
 {
 	GError *error = NULL;
 
-	/* we've sent this async */
-	egg_debug ("got reply to request");
-
 	/* finished this call */
+	egg_debug ("got reply to request, ended DBus call: %p", state->call);
 	state->call = NULL;
 
 	/* get the result */
@@ -608,111 +720,58 @@ pk_client_package_cb (DBusGProxy *proxy, const gchar *info_text, const gchar *pa
 }
 
 /**
- * pk_client_percentage_to_signed:
- */
-static gint
-pk_client_percentage_to_signed (guint percentage)
-{
-	if (percentage == 101)
-		return -1;
-	return (gint) percentage;
-}
-
-/**
- * pk_client_progress_changed_cb:
- */
-static void
-pk_client_progress_changed_cb (DBusGProxy *proxy, guint percentage, guint subpercentage,
-			       guint elapsed_time, guint remaining_time, PkClientState *state)
-{
-	gboolean ret;
-	gint percentage_new;
-	gint subpercentage_new;
-
-	/* convert to signed */
-	percentage_new = pk_client_percentage_to_signed (percentage);
-	subpercentage_new = pk_client_percentage_to_signed (subpercentage);
-
-	/* save progress */
-	ret = pk_progress_set_percentage (state->progress, percentage_new);
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_PERCENTAGE, state->progress_user_data);
-
-	/* save progress */
-	ret = pk_progress_set_subpercentage (state->progress, subpercentage_new);
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_SUBPERCENTAGE, state->progress_user_data);
-
-	/* save progress */
-	ret = pk_progress_set_elapsed_time (state->progress, elapsed_time);
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ELAPSED_TIME, state->progress_user_data);
-
-	/* save progress */
-	ret = pk_progress_set_remaining_time (state->progress, remaining_time);
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_REMAINING_TIME, state->progress_user_data);
-}
-
-/**
- * pk_client_status_changed_cb:
- */
+ * pk_client_get_properties_cb:
+ **/
 static void
-pk_client_status_changed_cb (DBusGProxy *proxy, const gchar *status_text, PkClientState *state)
+pk_client_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *state)
 {
+	GError *error = NULL;
+	GHashTable *hash;
 	gboolean ret;
-	PkStatusEnum status_enum;
 
-	/* convert from text */
-	status_enum = pk_status_enum_from_text (status_text);
+	/* get the result */
+	ret = dbus_g_proxy_end_call (proxy, call, &error,
+				     dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), &hash,
+				     G_TYPE_INVALID);
+	if (!ret) {
+		egg_warning ("failed to get properties: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
 
-	/* save progress */
-	ret = pk_progress_set_status (state->progress, status_enum);
+	/* process results */
+	if (hash != NULL) {
+		g_hash_table_foreach (hash, (GHFunc) pk_client_get_properties_collect_cb, state);
+		g_hash_table_unref (hash);
+	}
 
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_STATUS, state->progress_user_data);
+out:
+	/* finished this call */
+	egg_debug ("got property results, ended DBus call: %p", state->call);
+	state->call = NULL;
 }
 
 /**
- * pk_client_allow_cancel_cb:
+ * pk_client_changed_cb:
  */
 static void
-pk_client_allow_cancel_cb (DBusGProxy *proxy, gboolean allow_cancel, PkClientState *state)
+pk_client_changed_cb (DBusGProxy *proxy, PkClientState *state)
 {
-	gboolean ret;
-
-	/* save progress */
-	ret = pk_progress_set_allow_cancel (state->progress, allow_cancel);
+	/* successive quick Changed events */
+	if (state->call != NULL) {
+		egg_debug ("already processing request %p, so ignoring", state->call);
+		return;
+	}
 
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ALLOW_CANCEL, state->progress_user_data);
+	/* call D-Bus get_properties async */
+	state->call = dbus_g_proxy_begin_call (state->proxy_props, "GetAll",
+					       (DBusGProxyCallNotify) pk_client_get_properties_cb, state, NULL,
+					       G_TYPE_STRING, "org.freedesktop.PackageKit.Transaction",
+					       G_TYPE_INVALID);
+	egg_debug ("changed so checking properties, started DBus call: %p", state->call);
+	/* TODO: save state->call? */
 }
 
-/**
- * pk_client_caller_active_changed_cb:
- */
-static void
-pk_client_caller_active_changed_cb (DBusGProxy *proxy, gboolean caller_active, PkClientState *state)
-{
-	gboolean ret;
-
-	/* save progress */
-	ret = pk_progress_set_caller_active (state->progress, caller_active);
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback != NULL && ret)
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_CALLER_ACTIVE, state->progress_user_data);
-}
 
 /**
  * pk_client_details_cb:
@@ -957,10 +1016,6 @@ pk_client_connect_proxy (DBusGProxy *proxy, PkClientState *state)
 	/* add the signal types */
 	dbus_g_proxy_add_signal (proxy, "Finished",
 				 G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID);
-	dbus_g_proxy_add_signal (proxy, "ProgressChanged",
-				 G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_INVALID);
-	dbus_g_proxy_add_signal (proxy, "StatusChanged",
-				 G_TYPE_STRING, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "Package",
 				 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "Transaction",
@@ -989,23 +1044,18 @@ pk_client_connect_proxy (DBusGProxy *proxy, PkClientState *state)
 	dbus_g_proxy_add_signal (proxy, "ErrorCode", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "RequireRestart", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "Message", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
-	dbus_g_proxy_add_signal (proxy, "CallerActiveChanged", G_TYPE_BOOLEAN, G_TYPE_INVALID);
-	dbus_g_proxy_add_signal (proxy, "AllowCancel", G_TYPE_BOOLEAN, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "Destroy", G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "Category", G_TYPE_STRING, G_TYPE_STRING,
 				 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 	dbus_g_proxy_add_signal (proxy, "MediaChangeRequired",
 				 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+	dbus_g_proxy_add_signal (proxy, "Changed", G_TYPE_INVALID);
 
 	/* connect up the signals */
 	dbus_g_proxy_connect_signal (proxy, "Finished",
 				     G_CALLBACK (pk_client_finished_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "Package",
 				     G_CALLBACK (pk_client_package_cb), state, NULL);
-	dbus_g_proxy_connect_signal (proxy, "StatusChanged",
-				     G_CALLBACK (pk_client_status_changed_cb), state, NULL);
-	dbus_g_proxy_connect_signal (proxy, "ProgressChanged",
-				     G_CALLBACK (pk_client_progress_changed_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "Details",
 				     G_CALLBACK (pk_client_details_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "UpdateDetail",
@@ -1018,10 +1068,6 @@ pk_client_connect_proxy (DBusGProxy *proxy, PkClientState *state)
 				     G_CALLBACK (pk_client_require_restart_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "Category",
 				     G_CALLBACK (pk_client_category_cb), state, NULL);
-	dbus_g_proxy_connect_signal (proxy, "AllowCancel",
-				     G_CALLBACK (pk_client_allow_cancel_cb), state, NULL);
-	dbus_g_proxy_connect_signal (proxy, "CallerActiveChanged",
-				     G_CALLBACK (pk_client_caller_active_changed_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "Files",
 				     G_CALLBACK (pk_client_files_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "RepoSignatureRequired",
@@ -1036,6 +1082,8 @@ pk_client_connect_proxy (DBusGProxy *proxy, PkClientState *state)
 				     G_CALLBACK (pk_client_message_cb), state, NULL);
 	dbus_g_proxy_connect_signal (proxy, "MediaChangeRequired",
 				     G_CALLBACK (pk_client_media_change_required_cb), state, NULL);
+	dbus_g_proxy_connect_signal (proxy, "Changed",
+				     G_CALLBACK (pk_client_changed_cb), state, NULL);
 }
 
 /**
@@ -1048,10 +1096,6 @@ pk_client_disconnect_proxy (DBusGProxy *proxy, PkClientState *state)
 					G_CALLBACK (pk_client_finished_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "Package",
 					G_CALLBACK (pk_client_package_cb), state);
-	dbus_g_proxy_disconnect_signal (proxy, "ProgressChanged",
-					G_CALLBACK (pk_client_progress_changed_cb), state);
-	dbus_g_proxy_disconnect_signal (proxy, "StatusChanged",
-					G_CALLBACK (pk_client_status_changed_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "Details",
 					G_CALLBACK (pk_client_details_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "UpdateDetail",
@@ -1062,10 +1106,6 @@ pk_client_disconnect_proxy (DBusGProxy *proxy, PkClientState *state)
 					G_CALLBACK (pk_client_distro_upgrade_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "RequireRestart",
 					G_CALLBACK (pk_client_require_restart_cb), state);
-	dbus_g_proxy_disconnect_signal (proxy, "AllowCancel",
-					G_CALLBACK (pk_client_allow_cancel_cb), state);
-	dbus_g_proxy_disconnect_signal (proxy, "CallerActiveChanged",
-					G_CALLBACK (pk_client_caller_active_changed_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "Files",
 					G_CALLBACK (pk_client_files_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "RepoSignatureRequired",
@@ -1078,6 +1118,8 @@ pk_client_disconnect_proxy (DBusGProxy *proxy, PkClientState *state)
 					G_CALLBACK (pk_client_message_cb), state);
 	dbus_g_proxy_disconnect_signal (proxy, "MediaChangeRequired",
 					G_CALLBACK (pk_client_media_change_required_cb), state);
+	dbus_g_proxy_disconnect_signal (proxy, "Changed",
+					G_CALLBACK (pk_client_changed_cb), state);
 }
 
 /**
@@ -1102,6 +1144,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 	}
 
 	/* finished this call */
+	egg_debug ("set locale, ended DBus call: %p", state->call);
 	state->call = NULL;
 
 	/* setup the proxies ready for use */
@@ -1310,7 +1353,7 @@ pk_client_set_locale_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState
 	}
 
 	/* we've sent this async */
-	egg_debug ("sent request");
+	egg_debug ("new method, started DBus call: %p", state->call);
 
 	/* we'll have results from now on */
 	state->results = pk_results_new ();
@@ -1351,19 +1394,26 @@ pk_client_get_tid_cb (GObject *object, GAsyncResult *res, PkClientState *state)
 	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
 	dbus_g_proxy_set_default_timeout (state->proxy, INT_MAX);
 
+	/* get a connection to the properties interface */
+	state->proxy_props = dbus_g_proxy_new_for_name (state->client->priv->connection,
+							PK_DBUS_SERVICE, state->tid,
+							"org.freedesktop.DBus.Properties");
+	if (state->proxy_props == NULL)
+		egg_error ("Cannot connect to PackageKit on %s", state->tid);
+
 	/* set locale */
 	locale = (const gchar *) setlocale (LC_ALL, NULL);
 	state->call = dbus_g_proxy_begin_call (state->proxy, "SetLocale",
 					       (DBusGProxyCallNotify) pk_client_set_locale_cb, state, NULL,
 					       G_TYPE_STRING, locale,
 					       G_TYPE_INVALID);
+	egg_debug ("sent locale request, started DBus call: %p", state->call);
 
 	/* track state */
 	g_ptr_array_add (state->client->priv->calls, state);
 	egg_debug ("state array add %p", state);
 
 	/* we've sent this async */
-	egg_debug ("sent locale request");
 }
 
 /**
@@ -2975,95 +3025,10 @@ pk_client_simulate_update_packages_async (PkClient *client, gchar **package_ids,
 /***************************************************************************************************/
 
 /**
- * pk_client_get_properties_collect_cb:
- **/
-static void
-pk_client_get_properties_collect_cb (const char *key, const GValue *value, PkClientState *state)
-{
-	const gchar *tmp_str;
-	guint tmp;
-	gboolean ret;
-
-	/* do the callback for GUI programs */
-	if (state->progress_callback == NULL)
-		return;
-
-	/* role */
-	if (g_strcmp0 (key, "Role") == 0) {
-		tmp_str = g_value_get_string (value);
-		tmp = pk_role_enum_from_text (tmp_str);
-		g_object_set (state->progress, "role", tmp, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ROLE, state->progress_user_data);
-		return;
-	}
-
-	/* status */
-	if (g_strcmp0 (key, "Status") == 0) {
-		tmp_str = g_value_get_string (value);
-		tmp = pk_status_enum_from_text (tmp_str);
-		g_object_set (state->progress, "status", tmp, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_STATUS, state->progress_user_data);
-		return;
-	}
-
-	/* last-package */
-	if (g_strcmp0 (key, "LastPackage") == 0) {
-		tmp_str = g_value_get_string (value);
-		g_object_set (state->progress, "package-id", tmp_str, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_PACKAGE_ID, state->progress_user_data);
-		return;
-	}
-
-#if 0
-	/* uid */
-	if (g_strcmp0 (key, "Uid") == 0) {
-		tmp = g_value_get_uint (value);
-		g_object_set (state->progress, "uid", tmp, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_UID, state->progress_user_data);
-		return;
-	}
-#endif
-
-	/* percentage */
-	if (g_strcmp0 (key, "Percentage") == 0) {
-		tmp = g_value_get_uint (value);
-		g_object_set (state->progress, "percentage", pk_client_percentage_to_signed (tmp), NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_PERCENTAGE, state->progress_user_data);
-		return;
-	}
-
-	/* subpercentage */
-	if (g_strcmp0 (key, "Subpercentage") == 0) {
-		tmp = g_value_get_uint (value);
-		g_object_set (state->progress, "subpercentage", pk_client_percentage_to_signed (tmp), NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_SUBPERCENTAGE, state->progress_user_data);
-		return;
-	}
-
-	/* allow-cancel */
-	if (g_strcmp0 (key, "AllowCancel") == 0) {
-		ret = g_value_get_boolean (value);
-		g_object_set (state->progress, "allow-cancel", ret, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ALLOW_CANCEL, state->progress_user_data);
-		return;
-	}
-
-	/* caller-active */
-	if (g_strcmp0 (key, "CallerActive") == 0) {
-		ret = g_value_get_boolean (value);
-		g_object_set (state->progress, "caller-active", ret, NULL);
-		state->progress_callback (state->progress, PK_PROGRESS_TYPE_CALLER_ACTIVE, state->progress_user_data);
-		return;
-	}
-
-	egg_warning ("unhandled property '%s'", key);
-}
-
-/**
- * pk_client_get_properties_cb:
+ * pk_client_adopt_get_properties_cb:
  **/
 static void
-pk_client_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *state)
+pk_client_adopt_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientState *state)
 {
 	GError *error = NULL;
 	GHashTable *hash;
@@ -3078,6 +3043,7 @@ pk_client_get_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call, PkClientSt
 	}
 
 	/* finished this call */
+	egg_debug ("coldplugged properties, ended DBus call: %p", state->call);
 	state->call = NULL;
 
 	/* setup the proxies ready for use */
@@ -3139,21 +3105,15 @@ pk_client_adopt_async (PkClient *client, const gchar *transaction_id, GCancellab
 	if (state->proxy == NULL)
 		egg_error ("Cannot connect to PackageKit on %s", state->tid);
 
-	/* get a connection to the properties interface */
-	state->proxy_props = dbus_g_proxy_new_for_name (state->client->priv->connection,
-							PK_DBUS_SERVICE, state->tid,
-							"org.freedesktop.DBus.Properties");
-	if (state->proxy_props == NULL)
-		egg_error ("Cannot connect to PackageKit on %s", transaction_id);
-
 	/* don't timeout, as dbus-glib sets the timeout ~25 seconds */
 	dbus_g_proxy_set_default_timeout (state->proxy, INT_MAX);
 
 	/* call D-Bus get_properties async */
 	state->call = dbus_g_proxy_begin_call (state->proxy_props, "GetAll",
-					       (DBusGProxyCallNotify) pk_client_get_properties_cb, state, NULL,
+					       (DBusGProxyCallNotify) pk_client_adopt_get_properties_cb, state, NULL,
 					       G_TYPE_STRING, "org.freedesktop.PackageKit.Transaction",
 					       G_TYPE_INVALID);
+	egg_debug ("coldplug adoptee, started DBus call: %p", state->call);
 
 	/* we'll have results from now on */
 	state->results = pk_results_new ();
@@ -3234,14 +3194,6 @@ pk_client_init (PkClient *client)
 					   G_TYPE_NONE, G_TYPE_UINT,
 					   G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_INVALID);
 
-	/* AllowCancel */
-	dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__BOOLEAN,
-					   G_TYPE_NONE, G_TYPE_BOOLEAN, G_TYPE_INVALID);
-
-	/* StatusChanged */
-	dbus_g_object_register_marshaller (pk_marshal_VOID__STRING,
-					   G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INVALID);
-
 	/* Finished */
 	dbus_g_object_register_marshaller (pk_marshal_VOID__STRING_UINT,
 					   G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID);
@@ -3250,10 +3202,6 @@ pk_client_init (PkClient *client)
 	dbus_g_object_register_marshaller (pk_marshal_VOID__STRING_STRING,
 					   G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 
-	/* CallerActiveChanged */
-	dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__BOOLEAN,
-					   G_TYPE_NONE, G_TYPE_BOOLEAN, G_TYPE_INVALID);
-
 	/* Details */
 	dbus_g_object_register_marshaller (pk_marshal_VOID__STRING_STRING_STRING_STRING_STRING_UINT64,
 					   G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING,
@@ -3689,12 +3637,17 @@ pk_client_test (gpointer user_data)
 	egg_test_loop_wait (test, 15000);
 	egg_test_success (test, "got updates in %i", egg_test_elapsed (test));
 
-	/************************************************************/
-	egg_test_title (test, "got status updates");
-	if (_status_cb > 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "got %i updates", _status_cb);
+	/* it takes more than 50ms to get the progress of the transaction, and if
+	 * getting updates from internal cache, then it'll take a shed load less
+	 * than this to complete */
+	if (egg_test_elapsed (test) > 50) {
+		/************************************************************/
+		egg_test_title (test, "got status updates");
+		if (_status_cb > 0)
+			egg_test_success (test, NULL);
+		else
+			egg_test_failed (test, "got %i updates", _status_cb);
+	}
 
 	/************************************************************/
 	egg_test_title (test, "search by name");
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index 9b75995..bb34537 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -1629,47 +1629,6 @@
     </method>
 
     <!--*****************************************************************************************-->
-    <signal name="AllowCancel">
-      <doc:doc>
-        <doc:description>
-          <doc:para>
-            This signal is sent when the backend decides that the transaction can no longer be
-            cancelled, or is now able to be cancelled.
-          </doc:para>
-        </doc:description>
-      </doc:doc>
-      <arg type="b" name="allow_cancel" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              If the backend is in a cancelable state.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-    </signal>
-
-    <!--*****************************************************************************************-->
-    <signal name="CallerActiveChanged">
-      <doc:doc>
-        <doc:description>
-          <doc:para>
-            This signal is emitted when the session program that started the transaction exits.
-          </doc:para>
-        </doc:description>
-      </doc:doc>
-      <arg type="b" name="is_active" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              If the caller is active, usually FALSE.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-    </signal>
-
-    <!--*****************************************************************************************-->
     <signal name="Category">
       <doc:doc>
         <doc:description>
@@ -1985,60 +1944,6 @@
     </signal>
 
     <!--*****************************************************************************************-->
-    <signal name="ProgressChanged">
-      <doc:doc>
-        <doc:description>
-          <doc:para>
-            This signal describes the completion of the transaction.
-          </doc:para>
-          <doc:para>
-            This is optional.
-            Backends should send the percentage fields to 101 if the amount complete
-            cannot be calculated.
-          </doc:para>
-        </doc:description>
-      </doc:doc>
-      <arg type="u" name="percentage" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              The percentage complete of the whole transaction.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-      <arg type="u" name="subpercentage" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              The percentage complete of the individual task, for example, downloading.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-      <arg type="u" name="elapsed" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              The amount of time in seconds this transaction has been in the
-              running state
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-      <arg type="u" name="remaining" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              The amount of time in seconds this transaction will take to
-              complete. Zero is sent for unknown.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-    </signal>
-
-    <!--*****************************************************************************************-->
     <signal name="RepoDetail">
       <doc:doc>
         <doc:description>
@@ -2313,33 +2218,6 @@
     </signal>
 
     <!--*****************************************************************************************-->
-    <signal name="StatusChanged">
-      <doc:doc>
-        <doc:description>
-          <doc:para>
-            This signal is sent when the status of the transaction has changed.
-          </doc:para>
-          <doc:para>
-            This is optional, but highly recommended.
-            It gives the GUI tools a chance to show a different icon to show what stage the
-            transaction is in, for instance, a downloading icon can be shown whilst in the
-            <doc:tt>download</doc:tt> state.
-          </doc:para>
-        </doc:description>
-      </doc:doc>
-      <arg type="s" name="status" direction="out">
-        <doc:doc>
-          <doc:summary>
-            <doc:para>
-              One of <doc:tt>download</doc:tt>, <doc:tt>install</doc:tt>,
-              <doc:tt>update</doc:tt> or <doc:tt>remove</doc:tt>.
-            </doc:para>
-          </doc:summary>
-        </doc:doc>
-      </arg>
-    </signal>
-
-    <!--*****************************************************************************************-->
     <signal name="Transaction">
       <doc:doc>
         <doc:description>
@@ -2594,6 +2472,155 @@
     </signal>
 
     <!--*****************************************************************************************-->
+    <signal name="Changed">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal is emitted when a property on the interface changes.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+
+    <!--*****************************************************************************************-->
+    <signal name="ProgressChanged">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal describes the completion of the transaction.
+          </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the Changed signal and the properties interface instead.
+          </doc:para>
+          <doc:para>
+            This is optional.
+            Backends should send the percentage fields to 101 if the amount complete
+            cannot be calculated.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+      <arg type="u" name="percentage" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The percentage complete of the whole transaction.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+      <arg type="u" name="subpercentage" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The percentage complete of the individual task, for example, downloading.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+      <arg type="u" name="elapsed" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The amount of time in seconds this transaction has been in the
+              running state
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+      <arg type="u" name="remaining" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              The amount of time in seconds this transaction will take to
+              complete. Zero is sent for unknown.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+    </signal>
+
+    <!--*****************************************************************************************-->
+    <signal name="StatusChanged">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal is sent when the status of the transaction has changed.
+          </doc:para>
+          <doc:para>
+            This is optional, but highly recommended.
+            It gives the GUI tools a chance to show a different icon to show what stage the
+            transaction is in, for instance, a downloading icon can be shown whilst in the
+            <doc:tt>download</doc:tt> state.
+           <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the Changed signal and the properties interface instead.
+          </doc:para>
+         </doc:para>
+        </doc:description>
+      </doc:doc>
+      <arg type="s" name="status" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              One of <doc:tt>download</doc:tt>, <doc:tt>install</doc:tt>,
+              <doc:tt>update</doc:tt> or <doc:tt>remove</doc:tt>.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+    </signal>
+
+    <!--*****************************************************************************************-->
+    <signal name="AllowCancel">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal is sent when the backend decides that the transaction can no longer be
+            cancelled, or is now able to be cancelled.
+          </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the Changed signal and the properties interface instead.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+      <arg type="b" name="allow_cancel" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              If the backend is in a cancelable state.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+    </signal>
+
+    <!--*****************************************************************************************-->
+    <signal name="CallerActiveChanged">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            This signal is emitted when the session program that started the transaction exits.
+          </doc:para>
+          <doc:para>
+            THIS FUNCTION IS DEPRECATED. It will be removed in a future release.
+            Use the Changed signal and the properties interface instead.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+      <arg type="b" name="is_active" direction="out">
+        <doc:doc>
+          <doc:summary>
+            <doc:para>
+              If the caller is active, usually FALSE.
+            </doc:para>
+          </doc:summary>
+        </doc:doc>
+      </arg>
+    </signal>
+
+    <!--*****************************************************************************************-->
     <signal name="Destroy">
       <doc:doc>
         <doc:description>
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 2622958..c4aafab 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -182,6 +182,7 @@ enum {
 	SIGNAL_UPDATE_DETAIL,
 	SIGNAL_CATEGORY,
 	SIGNAL_DESTROY,
+	SIGNAL_CHANGED,
 	SIGNAL_LAST
 };
 
@@ -379,6 +380,10 @@ pk_transaction_progress_changed_emit (PkTransaction *transaction, guint percenta
 
 	egg_debug ("emitting percentage-changed %i, %i, %i, %i", percentage, subpercentage, elapsed, remaining);
 	g_signal_emit (transaction, signals[SIGNAL_PROGRESS_CHANGED], 0, percentage, subpercentage, elapsed, remaining);
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (transaction, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -389,6 +394,10 @@ pk_transaction_allow_cancel_emit (PkTransaction *transaction, gboolean allow_can
 {
 	g_return_if_fail (PK_IS_TRANSACTION (transaction));
 
+	/* already set */
+	if (transaction->priv->allow_cancel == allow_cancel)
+		return;
+
 	transaction->priv->allow_cancel = allow_cancel;
 
 	/* remove or add the hal inhibit */
@@ -399,6 +408,10 @@ pk_transaction_allow_cancel_emit (PkTransaction *transaction, gboolean allow_can
 
 	egg_debug ("emitting allow-cancel %i", allow_cancel);
 	g_signal_emit (transaction, signals[SIGNAL_ALLOW_CANCEL], 0, allow_cancel);
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (transaction, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -412,11 +425,19 @@ pk_transaction_status_changed_emit (PkTransaction *transaction, PkStatusEnum sta
 	g_return_if_fail (PK_IS_TRANSACTION (transaction));
 	g_return_if_fail (transaction->priv->tid != NULL);
 
+	/* already set */
+	if (transaction->priv->status == status)
+		return;
+
 	transaction->priv->status = status;
 	status_text = pk_status_enum_to_text (status);
 
 	egg_debug ("emitting status-changed '%s'", status_text);
 	g_signal_emit (transaction, signals[SIGNAL_STATUS_CHANGED], 0, status_text);
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (transaction, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -460,19 +481,27 @@ pk_transaction_allow_cancel_cb (PkBackend *backend, gboolean allow_cancel, PkTra
  * pk_transaction_caller_active_changed_cb:
  **/
 static void
-pk_transaction_caller_active_changed_cb (EggDbusMonitor *egg_dbus_monitor, gboolean is_active, PkTransaction *transaction)
+pk_transaction_caller_active_changed_cb (EggDbusMonitor *egg_dbus_monitor, gboolean caller_active, PkTransaction *transaction)
 {
 	g_return_if_fail (PK_IS_TRANSACTION (transaction));
 	g_return_if_fail (transaction->priv->tid != NULL);
 
+	/* already set */
+	if (transaction->priv->caller_active == caller_active)
+		return;
+
 	/* save as a property */
-	transaction->priv->caller_active = is_active;
+	transaction->priv->caller_active = caller_active;
 
 	/* only send if false, a client can hardly re-connect... */
-	if (is_active == FALSE) {
+	if (caller_active == FALSE) {
 		egg_debug ("client disconnected....");
 		g_signal_emit (transaction, signals[SIGNAL_CALLER_ACTIVE_CHANGED], 0, FALSE);
 	}
+
+	/* emit */
+	egg_debug ("emitting changed");
+	g_signal_emit (transaction, signals[SIGNAL_CHANGED], 0);
 }
 
 /**
@@ -5011,6 +5040,11 @@ pk_transaction_class_init (PkTransactionClass *klass)
 		g_signal_new ("destroy",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
 			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+	signals[SIGNAL_CHANGED] =
+		g_signal_new ("changed",
+			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
+			      0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
 
 	g_type_class_add_private (klass, sizeof (PkTransactionPrivate));
 }
commit 118486d5d73b290552f518cfb6af51afd3bdf66d
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 15:57:39 2009 +0100

    glib2: Add UID attribute to PkProgress

diff --git a/lib/packagekit-glib2/pk-progress.c b/lib/packagekit-glib2/pk-progress.c
index 854ddc3..0651755 100644
--- a/lib/packagekit-glib2/pk-progress.c
+++ b/lib/packagekit-glib2/pk-progress.c
@@ -55,6 +55,7 @@ struct _PkProgressPrivate
 	guint				 elapsed_time;
 	guint				 remaining_time;
 	guint				 speed;
+	guint				 uid;
 };
 
 enum {
@@ -69,6 +70,7 @@ enum {
 	PROP_ELAPSED_TIME,
 	PROP_REMAINING_TIME,
 	PROP_SPEED,
+	PROP_UID,
 	PROP_LAST
 };
 
@@ -113,6 +115,9 @@ pk_progress_get_property (GObject *object, guint prop_id, GValue *value, GParamS
 	case PROP_SPEED:
 		g_value_set_uint (value, progress->priv->speed);
 		break;
+	case PROP_UID:
+		g_value_set_uint (value, progress->priv->uid);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -302,6 +307,24 @@ pk_progress_set_speed (PkProgress *progress, guint speed)
 }
 
 /**
+ * pk_progress_set_uid:
+ **/
+gboolean
+pk_progress_set_uid (PkProgress *progress, guint uid)
+{
+	g_return_val_if_fail (PK_IS_PROGRESS (progress), FALSE);
+
+	/* the same as before? */
+	if (progress->priv->uid == uid)
+		return FALSE;
+
+	/* new value */
+	progress->priv->uid = uid;
+	egg_debug ("uid now %i", uid);
+	return TRUE;
+}
+
+/**
  * pk_progress_set_property:
  **/
 static void
@@ -340,6 +363,9 @@ pk_progress_set_property (GObject *object, guint prop_id, const GValue *value, G
 	case PROP_SPEED:
 		pk_progress_set_speed (progress, g_value_get_uint (value));
 		break;
+	case PROP_UID:
+		pk_progress_set_uid (progress, g_value_get_uint (value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -439,6 +465,14 @@ pk_progress_class_init (PkProgressClass *klass)
 				   G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_SPEED, pspec);
 
+	/**
+	 * PkProgress:uid:
+	 */
+	pspec = g_param_spec_uint ("uid", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_UID, pspec);
+
 	g_type_class_add_private (klass, sizeof (PkProgressPrivate));
 }
 
diff --git a/lib/packagekit-glib2/pk-progress.h b/lib/packagekit-glib2/pk-progress.h
index c89d3bc..f45d6be 100644
--- a/lib/packagekit-glib2/pk-progress.h
+++ b/lib/packagekit-glib2/pk-progress.h
@@ -77,6 +77,7 @@ typedef enum {
 	PK_PROGRESS_TYPE_ELAPSED_TIME,
 	PK_PROGRESS_TYPE_REMAINING_TIME,
 	PK_PROGRESS_TYPE_SPEED,
+	PK_PROGRESS_TYPE_UID,
 	PK_PROGRESS_TYPE_INVALID
 } PkProgressType;
 
@@ -104,6 +105,8 @@ gboolean	 pk_progress_set_remaining_time		(PkProgress		*progress,
 							 guint			 remaining_time);
 gboolean	 pk_progress_set_speed			(PkProgress		*progress,
 							 guint			 speed);
+gboolean	 pk_progress_set_uid			(PkProgress		*progress,
+							 guint			 uid);
 
 G_END_DECLS
 
commit a2f15f499509167ad17b229621e2a59e6722dc7d
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 15:56:44 2009 +0100

    trivial: Print the debugging time in ms too

diff --git a/lib/packagekit-glib/egg-debug.c b/lib/packagekit-glib/egg-debug.c
index 2b12504..c23a199 100644
--- a/lib/packagekit-glib/egg-debug.c
+++ b/lib/packagekit-glib/egg-debug.c
@@ -39,6 +39,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/time.h>
 #include <fcntl.h>
 #include <time.h>
 
@@ -138,13 +139,15 @@ pk_print_line (const gchar *func, const gchar *file, const int line, const gchar
 	gchar *str_time;
 	gchar *header;
 	time_t the_time;
+	struct timeval time_val;
 
 	time (&the_time);
+	gettimeofday (&time_val, NULL);
 	str_time = g_new0 (gchar, 255);
 	strftime (str_time, 254, "%H:%M:%S", localtime (&the_time));
 
 	/* generate header text */
-	header = g_strdup_printf ("TI:%s\tFI:%s\tFN:%s,%d", str_time, file, func, line);
+	header = g_strdup_printf ("TI:%s.%i\tFI:%s\tFN:%s,%d", str_time, (gint) time_val.tv_usec / 1000, file, func, line);
 	g_free (str_time);
 
 	/* always in light green */
commit a7e3e30a47944874c93e426c4fae6b289bb9aa75
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 15:55:50 2009 +0100

    dummy: do the resolve in an idle loop, not just sync

diff --git a/backends/dummy/pk-backend-dummy.c b/backends/dummy/pk-backend-dummy.c
index a8089be..e243222 100644
--- a/backends/dummy/pk-backend-dummy.c
+++ b/backends/dummy/pk-backend-dummy.c
@@ -612,13 +612,15 @@ backend_refresh_cache (PkBackend *backend, gboolean force)
 }
 
 /**
- * backend_resolve:
+ * backend_resolve_timeout:
  */
-static void
-backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
+static gboolean
+backend_resolve_timeout (gpointer data)
 {
+	PkBackend *backend = (PkBackend *) data;
 	guint i;
 	guint len;
+	gchar **packages = _package_ids;
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 	pk_backend_set_percentage (backend, 0);
@@ -627,12 +629,12 @@ backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
 	len = g_strv_length (packages);
 	for (i=0; i<len; i++) {
 		if (g_strcmp0 (packages[i], "vips-doc") == 0 || g_strcmp0 (packages[i], "vips-doc;7.12.4-2.fc8;noarch;linva") == 0) {
-			if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED)) {
+			if (!pk_bitfield_contain (_filters, PK_FILTER_ENUM_INSTALLED)) {
 				pk_backend_package (backend, PK_INFO_ENUM_AVAILABLE,
 						    "vips-doc;7.12.4-2.fc8;noarch;linva", "The vips documentation package.");
 			}
 		} else if (g_strcmp0 (packages[i], "glib2") == 0 || g_strcmp0 (packages[i], "glib2;2.14.0;i386;fedora") == 0) {
-			if (!pk_bitfield_contain (filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
+			if (!pk_bitfield_contain (_filters, PK_FILTER_ENUM_NOT_INSTALLED)) {
 				pk_backend_package (backend, PK_INFO_ENUM_INSTALLED,
 						    "glib2;2.14.0;i386;fedora", "The GLib library");
 			}
@@ -648,6 +650,20 @@ backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
 	}
 	pk_backend_set_percentage (backend, 100);
 	pk_backend_finished (backend);
+
+	/* never repeat */
+	return FALSE;
+}
+
+/**
+ * backend_resolve:
+ */
+static void
+backend_resolve (PkBackend *backend, PkBitfield filters, gchar **packages)
+{
+	_filters = filters;
+	_package_ids = packages;
+	_signal_timeout = g_timeout_add (20, backend_resolve_timeout, backend);
 }
 
 /**
commit 6ae9c0652cc4227681ccee7e10a45f5de426e08c
Author: igor <igor at fedoraproject.org>
Date:   Mon Sep 14 14:55:34 2009 +0000

    Sending translation for Brazilian Portuguese

diff --git a/po/pt_BR.po b/po/pt_BR.po
index 3f1cc56..cb9c6b8 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PackageKit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-01 14:44+0000\n"
-"PO-Revision-Date: 2009-09-01 14:54-0300\n"
+"POT-Creation-Date: 2009-09-14 08:25+0000\n"
+"PO-Revision-Date: 2009-09-14 11:54-0300\n"
 "Last-Translator: Igor Pires Soares <igor at projetofedora.org>\n"
 "Language-Team: Brazilian Portuguese <fedora-trans-pt_br at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -20,971 +20,688 @@ msgstr ""
 "X-Poedit-Country: BRAZIL\n"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:235
+#: ../client/pk-console.c:143
 msgid "Transaction"
 msgstr "Transação"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:237
+#: ../client/pk-console.c:145
 msgid "System time"
 msgstr "Horário do sistema"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:239
+#: ../client/pk-console.c:147
 msgid "Succeeded"
 msgstr "Concluído"
 
-#: ../client/pk-console.c:239
+#: ../client/pk-console.c:147
 msgid "True"
 msgstr "Verdadeiro"
 
-#: ../client/pk-console.c:239
+#: ../client/pk-console.c:147
 msgid "False"
 msgstr "Falso"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
 #. TRANSLATORS: the trasaction role, e.g. update-system
-#: ../client/pk-console.c:241
-#: ../src/pk-polkit-action-lookup.c:327
+#: ../client/pk-console.c:149
+#: ../src/pk-polkit-action-lookup.c:333
 msgid "Role"
 msgstr "Modo"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:246
+#: ../client/pk-console.c:154
 msgid "Duration"
 msgstr "Duração"
 
-#: ../client/pk-console.c:246
+#: ../client/pk-console.c:154
 msgid "(seconds)"
 msgstr "(segundos)"
 
 #. TRANSLATORS: this is The command line used to do the action
 #. TRANSLATORS: the command line of the thing that wants the authentication
-#: ../client/pk-console.c:250
-#: ../src/pk-polkit-action-lookup.c:341
+#: ../client/pk-console.c:158
+#: ../src/pk-polkit-action-lookup.c:347
 msgid "Command line"
 msgstr "Linha de comando"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:252
+#: ../client/pk-console.c:160
 msgid "User ID"
 msgstr "ID do usuário"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:259
+#: ../client/pk-console.c:167
 msgid "Username"
 msgstr "Nome de usuário"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:263
+#: ../client/pk-console.c:171
 msgid "Real name"
 msgstr "Nome real"
 
-#: ../client/pk-console.c:271
+#: ../client/pk-console.c:179
 msgid "Affected packages:"
 msgstr "Pacotes afetados:"
 
-#: ../client/pk-console.c:273
+#: ../client/pk-console.c:181
 msgid "Affected packages: None"
 msgstr "Pacotes afetados: nenhum"
 
-#. TRANSLATORS: When processing, we might have to remove other dependencies
-#: ../client/pk-console.c:334
-msgid "The following packages have to be removed:"
-msgstr "Os seguintes pacotes têm que ser removidos:"
-
-#. TRANSLATORS: When processing, we might have to install other dependencies
-#: ../client/pk-console.c:337
-msgid "The following packages have to be installed:"
-msgstr "Os seguintes pacotes têm que ser instalados:"
-
-#. TRANSLATORS: When processing, we might have to update other dependencies
-#: ../client/pk-console.c:340
-msgid "The following packages have to be updated:"
-msgstr "Os seguintes pacotes têm que ser atualizados:"
-
-#. TRANSLATORS: When processing, we might have to reinstall other dependencies
-#: ../client/pk-console.c:343
-msgid "The following packages have to be reinstalled:"
-msgstr "Os seguintes pacotes têm que ser reinstalados:"
-
-#. TRANSLATORS: When processing, we might have to downgrade other dependencies
-#: ../client/pk-console.c:346
-msgid "The following packages have to be downgraded:"
-msgstr "Os seguintes pacotes têm que ser desatualizados:"
-
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:360
+#: ../client/pk-console.c:201
 msgid "Distribution"
 msgstr "Distribuição"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:362
+#: ../client/pk-console.c:203
 msgid "Type"
 msgstr "Tipo"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:364
-#: ../client/pk-console.c:387
+#: ../client/pk-console.c:205
+#: ../client/pk-console.c:226
 msgid "Summary"
 msgstr "Sumário"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:376
+#: ../client/pk-console.c:215
 msgid "Category"
 msgstr "Categoria"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:378
+#: ../client/pk-console.c:217
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:381
+#: ../client/pk-console.c:220
 msgid "Parent"
 msgstr "Pai"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:384
+#: ../client/pk-console.c:223
 msgid "Name"
 msgstr "Nome"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:390
+#: ../client/pk-console.c:229
 msgid "Icon"
 msgstr "Ícone"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:405
+#: ../client/pk-console.c:243
 msgid "Details about the update:"
 msgstr "Detalhes sobre a atualização:"
 
 #. TRANSLATORS: details about the update, package name and version
+#. TRANSLATORS: the package that is not signed by a known key
+#. TRANSLATORS: the package name that was trying to be installed
 #. TRANSLATORS: title, the names of the packages that the method is processing
-#: ../client/pk-console.c:407
-#: ../src/pk-polkit-action-lookup.c:352
+#: ../client/pk-console.c:249
+#: ../lib/packagekit-glib2/pk-task-text.c:105
+#: ../lib/packagekit-glib2/pk-task-text.c:172
+#: ../src/pk-polkit-action-lookup.c:358
 msgid "Package"
 msgid_plural "Packages"
 msgstr[0] "Pacote"
 msgstr[1] "Pacotes"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:410
+#: ../client/pk-console.c:252
 msgid "Updates"
 msgstr "Atualiza"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:414
+#: ../client/pk-console.c:256
 msgid "Obsoletes"
 msgstr "Obsoletos"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:418
+#. TRANSLATORS: the vendor (e.g. vmware) that is providing the EULA
+#: ../client/pk-console.c:260
+#: ../lib/packagekit-glib2/pk-task-text.c:175
 msgid "Vendor"
 msgstr "Fornecedor"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:422
+#: ../client/pk-console.c:264
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:426
+#: ../client/pk-console.c:268
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:430
+#: ../client/pk-console.c:272
 msgid "Restart"
 msgstr "Reinício"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:434
+#: ../client/pk-console.c:276
 msgid "Update text"
 msgstr "Descrição da atualização"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:438
+#: ../client/pk-console.c:280
 msgid "Changes"
 msgstr "Alterações"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:442
+#: ../client/pk-console.c:284
 msgid "State"
 msgstr "Estado"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:447
+#: ../client/pk-console.c:289
 msgid "Issued"
 msgstr "Emissão"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:452
+#. TRANSLATORS: The action of the package, in past tense
+#: ../client/pk-console.c:294
+#: ../lib/packagekit-glib2/pk-console-shared.c:494
 msgid "Updated"
 msgstr "Atualizado em"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:472
+#: ../client/pk-console.c:312
 msgid "Enabled"
 msgstr "Habilitado"
 
 #. TRANSLATORS: if the repo is disabled
-#: ../client/pk-console.c:475
+#: ../client/pk-console.c:315
 msgid "Disabled"
 msgstr "Desabilitado"
 
-#: ../client/pk-console.c:552
-#: ../client/pk-console.c:554
-msgid "Percentage"
-msgstr "Porcentagem"
-
-#: ../client/pk-console.c:554
-msgid "Unknown"
-msgstr "Desconhecido"
-
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:596
+#: ../client/pk-console.c:337
 msgid "System restart required by:"
 msgstr "O reinício do sistema é requerido por:"
 
 #. TRANSLATORS: a package requires the session to be restarted
-#: ../client/pk-console.c:599
+#: ../client/pk-console.c:340
 msgid "Session restart required:"
 msgstr "É necessário reiniciar a sessão:"
 
 #. TRANSLATORS: a package requires the system to be restarted due to a security update
-#: ../client/pk-console.c:602
+#: ../client/pk-console.c:343
 msgid "System restart (security) required by:"
 msgstr "O reinício do sistema (por segurança) é requerido por:"
 
 #. TRANSLATORS: a package requires the session to be restarted due to a security update
-#: ../client/pk-console.c:605
+#: ../client/pk-console.c:346
 msgid "Session restart (security) required:"
 msgstr "É necessário reiniciar a sessão (por segurança):"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:608
+#: ../client/pk-console.c:349
 msgid "Application restart required by:"
 msgstr "O reinício do aplicativo é requerido por:"
 
+#. TRANSLATORS: This a list of details about the package
+#: ../client/pk-console.c:366
+msgid "Package description"
+msgstr "Descrição do pacote"
+
+#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
+#: ../client/pk-console.c:384
+msgid "Message:"
+msgstr "Mensagem:"
+
+#. TRANSLATORS: This where the package has no files
+#: ../client/pk-console.c:398
+msgid "No files"
+msgstr "Nenhum arquivo"
+
+#. TRANSLATORS: This a list files contained in the package
+#: ../client/pk-console.c:403
+msgid "Package files"
+msgstr "Arquivos do pacote"
+
+#. TRANSLATORS: we failed to get any results, which is pretty fatal in my book
+#: ../client/pk-console.c:462
+msgid "Fatal error"
+msgstr "Erro fatal"
+
+#. TRANSLATORS: we failed, but there was no error set
+#: ../client/pk-console.c:475
+msgid "Transaction failed with no error"
+msgstr "A transação falhou sem erros"
+
+#. TRANSLATORS: the transaction failed in a way we could not expect
+#: ../client/pk-console.c:480
+msgid "The transaction failed"
+msgstr "Falha na transação"
+
 #. TRANSLATORS: a package needs to restart their system
-#: ../client/pk-console.c:663
+#: ../client/pk-console.c:554
 msgid "Please restart the computer to complete the update."
 msgstr "Por favor, reinicie o computador para completar a atualização."
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:666
+#: ../client/pk-console.c:557
 msgid "Please logout and login to complete the update."
 msgstr "Por favor, encerre a sessão e inicie-a novamente para completar a atualização."
 
-#. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:669
-msgid "Please restart the application as it is being used."
-msgstr "Por favor, reinicie o aplicativo que está sendo usado."
-
 #. TRANSLATORS: a package needs to restart their system (due to security)
-#: ../client/pk-console.c:672
+#: ../client/pk-console.c:560
 msgid "Please restart the computer to complete the update as important security updates have been installed."
 msgstr "Por favor, reinicie o computador para completar a atualização pois importantes atualizações de segurança foram instaladas."
 
 #. TRANSLATORS: a package needs to restart the session (due to security)
-#: ../client/pk-console.c:675
+#: ../client/pk-console.c:563
 msgid "Please logout and login to complete the update as important security updates have been installed."
 msgstr "Por favor, encerre a sessão e inicie-a novamente para completar a atualização pois importantes atualizações de segurança foram instaladas."
 
-#. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:807
-#, c-format
-msgid "The package %s is already installed"
-msgstr "O pacote %s já está instalado"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:815
-#, c-format
-msgid "The package %s could not be installed: %s"
-msgstr "O pacote %s não pôde ser instalado: %s"
-
-#. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:841
-#: ../client/pk-console.c:889
-#: ../client/pk-console.c:913
-#: ../client/pk-console.c:961
-#: ../client/pk-console.c:1057
-#: ../client/pk-console.c:1170
-#: ../client/pk-console.c:1231
-#: ../client/pk-tools-common.c:62
-#: ../client/pk-tools-common.c:81
-#: ../client/pk-tools-common.c:89
-#, c-format
-msgid "Internal error: %s"
-msgstr "Erro interno: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:873
-#: ../client/pk-console.c:945
-#: ../client/pk-console.c:1263
-msgid "Proceed with changes?"
-msgstr "Continuar com as alterações?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:878
-#: ../client/pk-console.c:950
-msgid "The package install was canceled!"
-msgstr "A instalação do pacote foi cancelada!"
-
-#. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:897
-#: ../client/pk-console.c:1631
-#, c-format
-msgid "This tool could not install the packages: %s"
-msgstr "Esta ferramenta não pôde instalar os pacotes: %s"
-
-#. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:969
-#, c-format
-msgid "This tool could not install the files: %s"
-msgstr "Esta ferramenta não pôde instalar os arquivos: %s"
-
-#. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:1025
-#, c-format
-msgid "This tool could not remove %s: %s"
-msgstr "Esta ferramenta não pôde remover %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1048
-#: ../client/pk-console.c:1086
-#: ../client/pk-console.c:1115
-#, c-format
-msgid "This tool could not remove the packages: %s"
-msgstr "Esta ferramente não pôde remover os pacotes: %s"
-
-#. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:1101
-msgid "Proceed with additional packages?"
-msgstr "Continuar com a remoção dos pacotes adicionais?"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1106
-msgid "The package removal was canceled!"
-msgstr "A remoção do pacote foi cancelada!"
-
-#. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:1147
-#, c-format
-msgid "This tool could not download the package %s as it could not be found"
-msgstr "Esta ferramenta não pôde baixar o pacote %s, pois ele não foi localizado"
-
-#. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:1178
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
+#: ../client/pk-console.c:584
 #, c-format
-msgid "This tool could not download the packages: %s"
-msgstr "Esta ferramenta não pôde baixar os pacotes: %s"
+msgid "This tool could not find any available package: %s"
+msgstr "Esta ferramenta não pôde localizar nenhum pacote disponível: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1210
-#: ../client/pk-console.c:1222
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:612
 #, c-format
-msgid "This tool could not update %s: %s"
-msgstr "Esta ferramenta não pôde atualizar %s: %s"
-
-#. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:1268
-msgid "The package update was canceled!"
-msgstr "A atualização do pacote foi cancelada!"
+msgid "This tool could not find the installed package: %s"
+msgstr "Esta ferramenta não pôde localizar o pacote instalado: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1301
-#: ../client/pk-console.c:1309
+#: ../client/pk-console.c:640
+#: ../client/pk-console.c:668
 #, c-format
-msgid "This tool could not get the requirements for %s: %s"
-msgstr "Esta ferramenta não pôde obter os requerimentos para %s: %s"
+msgid "This tool could not find the package: %s"
+msgstr "Esta ferramente não pôde localizar o pacote: %s"
 
+#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1331
-#: ../client/pk-console.c:1339
-#, c-format
-msgid "This tool could not get the dependencies for %s: %s"
-msgstr "Esta ferramenta não pôde obter as dependências para %s: %s"
-
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1361
-#: ../client/pk-console.c:1369
-#, c-format
-msgid "This tool could not get package details for %s: %s"
-msgstr "Esta ferramenta não pôde obter os detalhes do pacote para %s: %s"
-
-#. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1391
-#, c-format
-msgid "This tool could not find the files for %s: %s"
-msgstr "Esta ferramenta não pôde localizar os arquivos para %s: %s"
-
-#. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1399
-#, c-format
-msgid "This tool could not get the file list for %s: %s"
-msgstr "Esta ferramenta não pôde obter a lista de arquivos para %s: %s"
-
-#. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1421
-#, c-format
-msgid "File already exists: %s"
-msgstr "O arquivo já existe: %s"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1426
-#: ../client/pk-console.c:1482
-#: ../client/pk-console.c:1557
-msgid "Getting package list"
-msgstr "Obtendo lista de pacotes"
-
-#. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1432
-#: ../client/pk-console.c:1488
-#: ../client/pk-console.c:1563
-#, c-format
-msgid "This tool could not get package list: %s"
-msgstr "Esta ferramente não pôde obter a lista de pacotes: %s"
-
-#. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1443
-#, c-format
-msgid "Failed to save to disk"
-msgstr "Falha ao salvar no disco"
-
-#. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1477
-#: ../client/pk-console.c:1552
-#, c-format
-msgid "File does not exist: %s"
-msgstr "O arquivo não existe: %s"
-
-#. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1509
-msgid "Packages to add"
-msgstr "Pacotes a serem adicionados"
-
-#. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1517
-msgid "Packages to remove"
-msgstr "Pacotes a serem removidos"
-
-#. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1585
-#, c-format
-msgid "No new packages need to be installed"
-msgstr "Nenhum pacote novo precisa ser instalado"
-
-#. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1591
-msgid "To install"
-msgstr "Instalando"
-
-#. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1603
-msgid "Searching for package: "
-msgstr "Pesquisando pelo pacote:"
-
-#. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1607
-msgid "not found."
-msgstr "não encontrado."
-
-#. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1618
-#, c-format
-msgid "No packages can be found to install"
-msgstr "Nenhum pacote pôde ser localizado para instalação"
-
-#. TRANSLATORS: installing new packages from package list
-#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
-#: ../client/pk-console.c:1624
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:886
-#, c-format
-msgid "Installing packages"
-msgstr "Instalando pacotes"
-
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1660
-#, c-format
-msgid "This tool could not find the update details for %s: %s"
-msgstr "Esta ferramenta não pôde localizar os detalhes de atualização para %s: %s"
-
-#. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1668
+#: ../client/pk-console.c:696
+#: ../client/pk-console.c:724
+#: ../client/pk-console.c:752
+#: ../client/pk-console.c:780
+#: ../client/pk-console.c:808
 #, c-format
-msgid "This tool could not get the update details for %s: %s"
-msgstr "Esta ferramenta não pôde obter os detalhes de atualização para %s: %s"
-
-#. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1699
-msgid "Error:"
-msgstr "Erro:"
-
-#. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1713
-msgid "Package description"
-msgstr "Descrição do pacote"
-
-#. TRANSLATORS: This a message (like a little note that may be of interest) from the transaction
-#: ../client/pk-console.c:1729
-msgid "Message:"
-msgstr "Mensagem:"
-
-#. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1757
-msgid "Package files"
-msgstr "Arquivos do pacote"
-
-#. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1765
-msgid "No files"
-msgstr "Nenhum arquivo"
-
-#. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1788
-msgid "Repository signature required"
-msgstr "A assinatura do repositório é necessária"
-
-#. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1798
-msgid "Do you accept this signature?"
-msgstr "Você aceita essa assinatura?"
-
-#. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1802
-msgid "The signature was not accepted."
-msgstr "A assinatura não foi aceita."
-
-#. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1836
-msgid "End user license agreement required"
-msgstr "É necessário um contrato de licença para o usuário final"
-
-#. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1843
-msgid "Do you agree to this license?"
-msgstr "Você concorda com a licença?"
-
-#. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1847
-msgid "The license was refused."
-msgstr "A licença foi recusada."
+msgid "This tool could not find all the packages: %s"
+msgstr "Esta ferramenta não pôde localizar todos os pacotes: %s"
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1876
+#: ../client/pk-console.c:832
 msgid "The daemon crashed mid-transaction!"
 msgstr "O daemon travou no meio da transação!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1929
+#: ../client/pk-console.c:866
 msgid "PackageKit Console Interface"
 msgstr "Interface em Console do PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1931
+#: ../client/pk-console.c:868
 msgid "Subcommands:"
 msgstr "Subcomandos:"
 
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:947
+msgid "Failed to get the time since this action was last completed"
+msgstr "Falha ao obter o tempo em que essa ação foi completada pela última vez"
+
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:2024
-#: ../client/pk-generate-pack.c:185
-#: ../client/pk-monitor.c:128
-#: ../contrib/command-not-found/pk-command-not-found.c:616
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:550
+#: ../client/pk-console.c:982
+#: ../client/pk-generate-pack.c:222
+#: ../client/pk-monitor.c:282
+#: ../contrib/command-not-found/pk-command-not-found.c:614
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:504
 #: ../contrib/device-rebind/pk-device-rebind.c:293
 #: ../src/pk-main.c:211
 msgid "Show extra debugging information"
 msgstr "Mostrar informações extras de depuração"
 
 #. TRANSLATORS: command line argument, just show the version string
-#: ../client/pk-console.c:2027
-#: ../client/pk-monitor.c:130
+#: ../client/pk-console.c:985
+#: ../client/pk-monitor.c:284
 msgid "Show the program version and exit"
 msgstr "Mostrar a versão do programa e sair"
 
 #. TRANSLATORS: command line argument, use a filter to narrow down results
-#: ../client/pk-console.c:2030
+#: ../client/pk-console.c:988
 msgid "Set the filter, e.g. installed"
 msgstr "Definir o filtro, p. ex.: instalados"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:2033
+#: ../client/pk-console.c:991
 msgid "Exit without waiting for actions to complete"
 msgstr "Sair sem esperar pelo término das ações"
 
-#. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:2060
-msgid "This tool could not connect to system DBUS."
-msgstr "Esta ferramenta não pôde conectar ao DBUS do sistema."
+#. TRANSLATORS: we failed to contact the daemon
+#: ../client/pk-console.c:1016
+msgid "Failed to contact PackageKit"
+msgstr "Falha ao contatar o PackageKit"
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:2150
+#: ../client/pk-console.c:1068
 msgid "The filter specified was invalid"
 msgstr "O filtro especificado era inválido"
 
 #. TRANSLATORS: a search type can be name, details, file, etc
-#: ../client/pk-console.c:2169
+#: ../client/pk-console.c:1087
 msgid "A search type is required, e.g. name"
 msgstr "Um tipo de pesquisa é requerido, p. ex. nome"
 
 #. TRANSLATORS: the user needs to provide a search term
-#: ../client/pk-console.c:2176
-#: ../client/pk-console.c:2185
-#: ../client/pk-console.c:2194
-#: ../client/pk-console.c:2203
+#: ../client/pk-console.c:1094
+#: ../client/pk-console.c:1106
+#: ../client/pk-console.c:1118
+#: ../client/pk-console.c:1130
 msgid "A search term is required"
 msgstr "Um termo de pesquisa é requerido"
 
 #. TRANSLATORS: the search type was provided, but invalid
-#: ../client/pk-console.c:2210
+#: ../client/pk-console.c:1140
 msgid "Invalid search type"
 msgstr "Tipo de pesquisa inválido"
 
 #. TRANSLATORS: the user did not specify what they wanted to install
-#: ../client/pk-console.c:2216
-msgid "A package name or filename to install is required"
-msgstr "O nome do pacote ou arquivo é requerido"
+#: ../client/pk-console.c:1146
+msgid "A package name to install is required"
+msgstr "O nome do pacote a ser instalado é requerido"
+
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1155
+msgid "A filename to install is required"
+msgstr "O nome do arquivo a ser instalado é requerido"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2225
+#: ../client/pk-console.c:1167
 msgid "A type, key_id and package_id are required"
 msgstr "Um tipo, key_id e package_id são requeridos"
 
 #. TRANSLATORS: the user did not specify what they wanted to remove
-#: ../client/pk-console.c:2234
+#: ../client/pk-console.c:1178
 msgid "A package name to remove is required"
 msgstr "O nome do pacote para remoção é requerido"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:2242
+#: ../client/pk-console.c:1187
 msgid "A destination directory and the package names to download are required"
 msgstr "O diretório de destino e os os nomes dos pacotes a serem baixados são requeridos"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:2249
+#: ../client/pk-console.c:1194
 msgid "Directory not found"
 msgstr "Diretório não encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2257
+#: ../client/pk-console.c:1203
 msgid "A licence identifier (eula-id) is required"
 msgstr "Um identificador de licença (eula-id) é requerido"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:2267
+#: ../client/pk-console.c:1214
 msgid "A transaction identifier (tid) is required"
 msgstr "Um identificador de transação (tid) é requerido"
 
 #. TRANSLATORS: The user did not specify a package name
-#: ../client/pk-console.c:2284
+#: ../client/pk-console.c:1235
 msgid "A package name to resolve is required"
 msgstr "O nome de pacote a ser analisado é requerido"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2293
-#: ../client/pk-console.c:2302
+#: ../client/pk-console.c:1246
+#: ../client/pk-console.c:1257
 msgid "A repository name is required"
 msgstr "O nome do repositório é requerido"
 
 #. TRANSLATORS: The user didn't provide any data
-#: ../client/pk-console.c:2311
+#: ../client/pk-console.c:1268
 msgid "A repo name, parameter and value are required"
 msgstr "Um nome de repositório, parâmetro e um valor são requeridos"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2325
+#: ../client/pk-console.c:1285
 msgid "An action, e.g. 'update-system' is required"
 msgstr "Uma ação, p. ex. \"update-system\" é requerida"
 
 #. TRANSLATORS: The user specified an invalid action
-#: ../client/pk-console.c:2332
+#: ../client/pk-console.c:1292
 msgid "A correct role is required"
 msgstr "Um modo correto é requerido"
 
-#. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2339
-msgid "Failed to get the time since this action was last completed"
-msgstr "Falha ao obter o tempo em que essa ação foi completada pela última vez"
-
 #. TRANSLATORS: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2349
-#: ../client/pk-console.c:2361
-#: ../client/pk-console.c:2370
-#: ../client/pk-console.c:2388
-#: ../client/pk-console.c:2397
-#: ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:1302
+#: ../client/pk-console.c:1317
+#: ../client/pk-console.c:1326
+#: ../client/pk-console.c:1346
+#: ../client/pk-console.c:1355
+#: ../client/pk-generate-pack.c:285
 msgid "A package name is required"
 msgstr "O nome do pacote é requerido"
 
 #. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
-#: ../client/pk-console.c:2379
+#: ../client/pk-console.c:1335
 msgid "A package provide string is required"
 msgstr "É necessário especificar o que o pacote fornece"
 
-#. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2406
-msgid "A list file name to create is required"
-msgstr "O nome de arquivo da lista a ser criada é requerido"
-
-#. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2416
-#: ../client/pk-console.c:2426
-msgid "A list file to open is required"
-msgstr "Uma lista de arquivos a serem abertos é requerida"
-
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2480
+#: ../client/pk-console.c:1415
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "A opção \"%s\" não é suportada"
 
-#. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2493
-msgid "Incorrect privileges for this operation"
-msgstr "Privilégios incorretos para esta operação"
-
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2496
+#: ../client/pk-console.c:1425
 msgid "Command failed"
 msgstr "O comando falhou"
 
-#. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:101
-msgid "Downloading"
-msgstr "Baixando"
-
-#. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:121
-msgid "Downloading packages"
-msgstr "Baixando pacotes"
-
-#. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:126
-msgid "Downloading dependencies"
-msgstr "Baixando dependências"
-
 #. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
-#: ../client/pk-generate-pack.c:188
+#: ../client/pk-generate-pack.c:225
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Defina o nome de arquivo das dependências a serem excluídas"
 
 #. TRANSLATORS: the output location
-#: ../client/pk-generate-pack.c:191
+#: ../client/pk-generate-pack.c:228
 msgid "The output file or directory (the current directory is used if ommitted)"
 msgstr "O diretório ou arquivo de saída (o diretório atual é usado se omitido)"
 
 #. TRANSLATORS: put a list of packages in the pack
-#: ../client/pk-generate-pack.c:194
+#: ../client/pk-generate-pack.c:231
 msgid "The package to be put into the service pack"
 msgstr "O pacote a ser incluído no pacote de serviços"
 
 #. TRANSLATORS: put all pending updates in the pack
-#: ../client/pk-generate-pack.c:197
+#: ../client/pk-generate-pack.c:234
 msgid "Put all updates available in the service pack"
 msgstr "Incluir todas as atualizações disponíveis no pacote de serviços"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:225
+#: ../client/pk-generate-pack.c:269
 msgid "Neither --package or --updates option selected."
 msgstr "Nenhuma das opções --package ou --updates foi selecionada."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:233
+#: ../client/pk-generate-pack.c:277
 msgid "Both options selected."
 msgstr "Ambas opções selecionadas."
 
 #. TRANSLATORS: This is when the user fails to supply the output
-#: ../client/pk-generate-pack.c:249
+#: ../client/pk-generate-pack.c:293
 msgid "A output directory or file name is required"
 msgstr "Um diretório ou arquivo de saída é requerido"
 
+#. TRANSLATORS: This is when the dameon is not-installed/broken and fails to startup
+#: ../client/pk-generate-pack.c:311
+msgid "The dameon failed to startup"
+msgstr "O daemon falhou ao iniciar"
+
 #. TRANSLATORS: This is when the backend doesn't have the capability to get-depends
 #. TRANSLATORS: This is when the backend doesn't have the capability to download
-#: ../client/pk-generate-pack.c:267
-#: ../client/pk-generate-pack.c:273
+#: ../client/pk-generate-pack.c:322
+#: ../client/pk-generate-pack.c:328
 msgid "The package manager cannot perform this type of operation."
 msgstr "O gerenciador de pacotes não pode realizar este tipo de operação."
 
 #. TRANSLATORS: This is when the distro didn't include libarchive support into PK
-#: ../client/pk-generate-pack.c:280
+#: ../client/pk-generate-pack.c:335
 msgid "Service packs cannot be created as PackageKit was not built with libarchive support."
 msgstr "Os pacotes de serviço não podem ser criados já que o PackageKIt não foi compilado com suporte à libarchive."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
-#: ../client/pk-generate-pack.c:291
+#: ../client/pk-generate-pack.c:346
 msgid "If specifying a file, the service pack name must end with"
 msgstr "Se um arquivo for especificado, o nome do pacote de serviços deve terminar com"
 
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:307
+#: ../client/pk-generate-pack.c:362
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Um pacote de serviços com o mesmo nome já existe, você deseja sobrescrevê-lo?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:310
+#: ../client/pk-generate-pack.c:365
 msgid "The pack was not overwritten."
 msgstr "O pacote não foi sobrescrito"
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:323
+#: ../client/pk-generate-pack.c:378
 msgid "Failed to create directory:"
 msgstr "Falha ao criar o diretório:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:333
+#: ../client/pk-generate-pack.c:390
 msgid "Failed to open package list."
 msgstr "Falha ao abrir a lista de pacotes"
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:344
+#: ../client/pk-generate-pack.c:399
 msgid "Finding package name."
 msgstr "Localizando o nome do pacote."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:348
+#: ../client/pk-generate-pack.c:403
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Falha ao localizar o pacote \"%s\": %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:365
+#: ../client/pk-generate-pack.c:411
 msgid "Creating service pack..."
 msgstr "Criando o pacote de serviços"
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:372
+#: ../client/pk-generate-pack.c:426
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "Pacote de serviços \"%s\" criado"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:377
+#: ../client/pk-generate-pack.c:431
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Falha ao criar \"%s\": %s"
 
+#: ../client/pk-monitor.c:204
+msgid "Failed to get transaction list"
+msgstr "Falha ao obter a lista da transação"
+
+#: ../client/pk-monitor.c:235
+msgid "Failed to get daemon state"
+msgstr "Falha ao obter o estado do daemon"
+
 #. TRANSLATORS: this is a program that monitors PackageKit
-#: ../client/pk-monitor.c:146
+#: ../client/pk-monitor.c:299
 msgid "PackageKit Monitor"
 msgstr "Monitor do PackageKit"
 
-#: ../client/pk-monitor.c:183
-msgid "Cannot show the list of transactions"
-msgstr "Não é possível mostrar a lista de transações"
-
-#. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:118
-#, c-format
-msgid "The package could not be found"
-msgstr "O pacote não pôde ser encontrado"
-
-#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-tools-common.c:130
-msgid "More than one package matches:"
-msgstr "Há mais de um pacote correspondente:"
-
-#. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-tools-common.c:137
-msgid "Please choose the correct package: "
-msgstr "Por favor, escolha o pacote correto: "
-
-#: ../client/pk-tools-common.c:162
-#, c-format
-msgid "Please enter a number from 1 to %i: "
-msgstr "Por favor, insira um número entre 1 e %i: "
-
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/browser-plugin/pk-plugin-install.c:466
+#: ../contrib/browser-plugin/pk-plugin-install.c:495
 msgid "Getting package information..."
 msgstr "Obtendo informações do pacote..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/browser-plugin/pk-plugin-install.c:472
+#: ../contrib/browser-plugin/pk-plugin-install.c:501
 #, c-format
 msgid "Run %s"
 msgstr "Executar %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:478
+#: ../contrib/browser-plugin/pk-plugin-install.c:507
 msgid "Installed version"
 msgstr "Versão instalada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:486
+#: ../contrib/browser-plugin/pk-plugin-install.c:515
 #, c-format
 msgid "Run version %s now"
 msgstr "Executar a versão %s agora"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/browser-plugin/pk-plugin-install.c:492
+#: ../contrib/browser-plugin/pk-plugin-install.c:521
 msgid "Run now"
 msgstr "Executar agora"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:498
+#: ../contrib/browser-plugin/pk-plugin-install.c:527
 #, c-format
 msgid "Update to version %s"
 msgstr "Atualizar para a versão %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/browser-plugin/pk-plugin-install.c:504
+#: ../contrib/browser-plugin/pk-plugin-install.c:533
 #, c-format
 msgid "Install %s now"
 msgstr "Instalar %s agora"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/browser-plugin/pk-plugin-install.c:507
+#: ../contrib/browser-plugin/pk-plugin-install.c:536
 msgid "Version"
 msgstr "Versão"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/browser-plugin/pk-plugin-install.c:512
+#: ../contrib/browser-plugin/pk-plugin-install.c:541
 msgid "No packages found for your system"
 msgstr "Nenhum pacote localizado para o seu sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/browser-plugin/pk-plugin-install.c:517
+#: ../contrib/browser-plugin/pk-plugin-install.c:546
 msgid "Installing..."
 msgstr "Instalando..."
 
 #. TRANSLATORS: downloading repo data so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:349
+#: ../contrib/command-not-found/pk-command-not-found.c:358
 msgid "Downloading details about the software sources."
 msgstr "Baixando detalhes das fontes de programas."
 
 #. TRANSLATORS: downloading file lists so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:353
+#: ../contrib/command-not-found/pk-command-not-found.c:362
 msgid "Downloading filelists (this may take some time to complete)."
 msgstr "Baixando listas de arquivos (isso pode levar algum tempo para ser concluído)."
 
 #. TRANSLATORS: waiting for native lock
-#: ../contrib/command-not-found/pk-command-not-found.c:357
+#: ../contrib/command-not-found/pk-command-not-found.c:366
 msgid "Waiting for package manager lock."
 msgstr "Esperando pelo bloqueio do gerenciador de pacotes."
 
 #. TRANSLATORS: loading package cache so we can search
-#: ../contrib/command-not-found/pk-command-not-found.c:361
+#: ../contrib/command-not-found/pk-command-not-found.c:370
 msgid "Loading list of packages."
 msgstr "Baixando lista de pacotes."
 
 #. TRANSLATORS: we failed to find the package, this shouldn't happen
-#: ../contrib/command-not-found/pk-command-not-found.c:420
+#: ../contrib/command-not-found/pk-command-not-found.c:444
 msgid "Failed to search for file"
 msgstr "Falha ao pesquisar pelo arquivo"
 
 #. TRANSLATORS: we failed to launch the executable, the error follows
-#: ../contrib/command-not-found/pk-command-not-found.c:557
+#: ../contrib/command-not-found/pk-command-not-found.c:570
 msgid "Failed to launch:"
 msgstr "Falha ao executar:"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/command-not-found/pk-command-not-found.c:632
+#: ../contrib/command-not-found/pk-command-not-found.c:630
 msgid "PackageKit Command Not Found"
 msgstr "Comando do PackageKit não localizado"
 
@@ -1043,185 +760,194 @@ msgid "Please choose a package to install"
 msgstr "Por favor, escolha um pacote a ser instalado"
 
 #. TRANSLATORS: we are starting to install the packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:187
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:195
 msgid "Starting install"
 msgstr "Iniciando a instalação"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:397
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:406
 #, c-format
 msgid "Failed to find the package %s, or already installed: %s"
 msgstr "Falha ao localizar o pacote %s ou ele já está instalado: %s"
 
 #. command line argument, simulate what would be done, but don't actually do it
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:553
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:507
 msgid "Don't actually install any packages, only simulate what would be installed"
 msgstr "Não instala os pacotes na realidade, apenas simula o que seria instalado"
 
 #. command line argument, do we skip packages that depend on the ones specified
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:556
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:510
 msgid "Do not install dependencies of the core packages"
 msgstr "Não instala dependências dos pacotes principais"
 
 #. command line argument, do we operate quietly
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:559
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:513
 msgid "Do not display information or progress"
 msgstr "Não exibe informações ou o progresso"
 
 #. TRANSLATORS: tool that gets called when the command is not found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:577
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:528
 msgid "PackageKit Debuginfo Installer"
 msgstr "Instalador de Informações de Depuração do PackageKit"
 
 #. TRANSLATORS: the use needs to specify a list of package names on the command line
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:589
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:540
 #, c-format
 msgid "ERROR: Specify package names to install."
 msgstr "ERRO: Especifique os nomes dos pacotes a serem instalados."
 
 #. TRANSLATORS: we are getting the list of repositories
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:623
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:572
 #, c-format
 msgid "Getting sources list"
 msgstr "Obtendo lista de fontes"
 
+#. TRANSLATORS: operation was not successful
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:582
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:657
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:741
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
+msgid "FAILED."
+msgstr "FALHOU."
+
 #. TRANSLATORS: all completed 100%
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:641
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:681
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:716
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:597
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:637
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:672
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:756
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:800
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:844
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:867
 #: ../contrib/debuginfo-install/pk-debuginfo-install.c:911
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:955
 #, c-format
 msgid "OK."
 msgstr "OK."
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:644
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:600
 #, c-format
 msgid "Found %i enabled and %i disabled sources."
 msgstr "Localizadas %i fontes habilitadas e %i desabilitadas."
 
 #. TRANSLATORS: we're finding repositories that match out pattern
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:651
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:607
 #, c-format
 msgid "Finding debugging sources"
 msgstr "Localizando fontes de depuração"
 
 #. TRANSLATORS: tell the user what we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:684
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:640
 #, c-format
 msgid "Found %i disabled debuginfo repos."
 msgstr "%i repositórios de informações de depuração desabilitados encontrados"
 
 #. TRANSLATORS: we're now enabling all the debug sources we found
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:691
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:647
 #, c-format
 msgid "Enabling debugging sources"
 msgstr "Habilitando fontes de depuração"
 
-#. TRANSLATORS: operation was not successful
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:701
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:785
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:829
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:896
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:940
-msgid "FAILED."
-msgstr "FALHOU."
-
 #. TRANSLATORS: tell the user how many we enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:719
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:675
 #, c-format
 msgid "Enabled %i debugging sources."
 msgstr "%i fontes de depuração habilitadas."
 
 #. TRANSLATORS: we're now finding packages that match in all the repos
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:726
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:682
 #, c-format
 msgid "Finding debugging packages"
 msgstr "Localizando pacotes de depuração"
 
 #. TRANSLATORS: we couldn't find the package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:738
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:694
 #, c-format
 msgid "Failed to find the package %s: %s"
 msgstr "Falha ao localizar o pacote %s: %s"
 
 #. TRANSLATORS: we couldn't find the debuginfo package name, non-fatal
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:761
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:717
 #, c-format
 msgid "Failed to find the debuginfo package %s: %s"
 msgstr "Falha ao localizar o pacote de depuração %s: %s"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:789
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:745
 #, c-format
 msgid "Found no packages to install."
 msgstr "Nenhum pacote localizado para ser instalado."
 
 #. TRANSLATORS: tell the user we found some packages, and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:803
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:759
 #, c-format
 msgid "Found %i packages:"
 msgstr "%i pacotes localizados:"
 
 #. TRANSLATORS: tell the user we are searching for deps
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:819
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:775
 #, c-format
 msgid "Finding packages that depend on these packages"
 msgstr "Localizando pacotes que dependem destes pacotes"
 
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:832
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:788
 #, c-format
 msgid "Could not find dependant packages: %s"
 msgstr "Não foi possível localizar os pacotes dependentes: %s"
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:848
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:804
 #, c-format
 msgid "Found %i extra packages."
 msgstr "%i pacotes extras localizados."
 
 #. TRANSLATORS: tell the user we found some more packages
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:852
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:808
 #, c-format
 msgid "No extra packages required."
 msgstr "Nenhum pacote extra é requerido."
 
 #. TRANSLATORS: tell the user we found some packages (and deps), and then list them
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:861
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:817
 #, c-format
 msgid "Found %i packages to install:"
 msgstr "%i pacotes localizados para serem instalados:"
 
 #. TRANSLATORS: simulate mode is a testing mode where we quit before the action
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:874
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:830
 #, c-format
 msgid "Not installing packages in simulate mode"
 msgstr "Os pacotes não serão instalados no modo de simulação"
 
+#. TRANSLATORS: we are now installing the debuginfo packages we found earlier
+#. TRANSLATORS: transaction state, installing packages
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:842
+#: ../lib/packagekit-glib2/pk-console-shared.c:270
+#, c-format
+msgid "Installing packages"
+msgstr "Instalando pacotes"
+
 #. TRANSLATORS: could not install, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:855
 #, c-format
 msgid "Could not install packages: %s"
 msgstr "Não foi possível instalar os pacotes: %s"
 
 #. TRANSLATORS: we are now disabling all debuginfo repos we previously enabled
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:931
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:887
 #, c-format
 msgid "Disabling sources previously enabled"
 msgstr "Desabilitando fontes habilitadas anteriormente"
 
 #. TRANSLATORS: no debuginfo packages could be found to be installed, detailed error follows
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:943
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:899
 #, c-format
 msgid "Could not disable the debugging sources: %s"
 msgstr "Não foi possível desabilitar as fontes de depuração: %s"
 
 #. TRANSLATORS: we disabled all the debugging repos that we enabled before
-#: ../contrib/debuginfo-install/pk-debuginfo-install.c:958
+#: ../contrib/debuginfo-install/pk-debuginfo-install.c:914
 #, c-format
 msgid "Disabled %i debugging sources."
 msgstr "%i fontes de depuração desabilitadas."
@@ -1324,6 +1050,443 @@ msgstr "Lista de Pacotes do PackageKit"
 msgid "PackageKit Service Pack"
 msgstr "Pacote de serviços do PackageKit"
 
+#: ../lib/packagekit-glib2/pk-console-shared.c:55
+#, c-format
+msgid "Please enter a number from 1 to %i: "
+msgstr "Por favor, insira um número entre 1 e %i: "
+
+#. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:177
+msgid "More than one package matches:"
+msgstr "Há mais de um pacote correspondente:"
+
+#. TRANSLATORS: This finds out which package in the list to use
+#: ../lib/packagekit-glib2/pk-console-shared.c:186
+msgid "Please choose the correct package: "
+msgstr "Por favor, escolha o pacote correto: "
+
+#. TRANSLATORS: This is when the transaction status is not known
+#: ../lib/packagekit-glib2/pk-console-shared.c:238
+msgid "Unknown state"
+msgstr "Estado desconhecido"
+
+#. TRANSLATORS: transaction state, the daemon is in the process of starting
+#: ../lib/packagekit-glib2/pk-console-shared.c:242
+msgid "Starting"
+msgstr "Iniciando"
+
+#. TRANSLATORS: transaction state, the transaction is waiting for another to complete
+#: ../lib/packagekit-glib2/pk-console-shared.c:246
+msgid "Waiting in queue"
+msgstr "Esperando na fila"
+
+#. TRANSLATORS: transaction state, just started
+#: ../lib/packagekit-glib2/pk-console-shared.c:250
+msgid "Running"
+msgstr "Executando"
+
+#. TRANSLATORS: transaction state, is querying data
+#: ../lib/packagekit-glib2/pk-console-shared.c:254
+msgid "Querying"
+msgstr "Consultando"
+
+#. TRANSLATORS: transaction state, getting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:258
+msgid "Getting information"
+msgstr "Obtendo informações"
+
+#. TRANSLATORS: transaction state, removing packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:262
+msgid "Removing packages"
+msgstr "Removendo pacotes"
+
+#. TRANSLATORS: transaction state, downloading package files
+#: ../lib/packagekit-glib2/pk-console-shared.c:266
+msgid "Downloading packages"
+msgstr "Baixando pacotes"
+
+#. TRANSLATORS: transaction state, refreshing internal lists
+#: ../lib/packagekit-glib2/pk-console-shared.c:274
+msgid "Refreshing software list"
+msgstr "Recarregando lista de programas"
+
+#. TRANSLATORS: transaction state, installing updates
+#: ../lib/packagekit-glib2/pk-console-shared.c:278
+msgid "Installing updates"
+msgstr "Instalando atualizações"
+
+#. TRANSLATORS: transaction state, removing old packages, and cleaning config files
+#: ../lib/packagekit-glib2/pk-console-shared.c:282
+msgid "Cleaning up packages"
+msgstr "Limpando pacotes"
+
+#. TRANSLATORS: transaction state, obsoleting old packages
+#: ../lib/packagekit-glib2/pk-console-shared.c:286
+msgid "Obsoleting packages"
+msgstr "Tornando pacotes obsoletos"
+
+#. TRANSLATORS: transaction state, checking the transaction before we do it
+#: ../lib/packagekit-glib2/pk-console-shared.c:290
+msgid "Resolving dependencies"
+msgstr "Resolvendo dependências"
+
+#. TRANSLATORS: transaction state, checking if we have all the security keys for the operation
+#: ../lib/packagekit-glib2/pk-console-shared.c:294
+msgid "Checking signatures"
+msgstr "Verificando assinaturas"
+
+#. TRANSLATORS: transaction state, when we return to a previous system state
+#: ../lib/packagekit-glib2/pk-console-shared.c:298
+msgid "Rolling back"
+msgstr "Retrocedendo"
+
+#. TRANSLATORS: transaction state, when we're doing a test transaction
+#: ../lib/packagekit-glib2/pk-console-shared.c:302
+msgid "Testing changes"
+msgstr "Testando alterações"
+
+#. TRANSLATORS: transaction state, when we're writing to the system package database
+#: ../lib/packagekit-glib2/pk-console-shared.c:306
+msgid "Committing changes"
+msgstr "Submetendo alterações"
+
+#. TRANSLATORS: transaction state, requesting data from a server
+#: ../lib/packagekit-glib2/pk-console-shared.c:310
+msgid "Requesting data"
+msgstr "Requisitando dados"
+
+#. TRANSLATORS: transaction state, all done!
+#: ../lib/packagekit-glib2/pk-console-shared.c:314
+msgid "Finished"
+msgstr "Finalizado"
+
+#. TRANSLATORS: transaction state, in the process of cancelling
+#: ../lib/packagekit-glib2/pk-console-shared.c:318
+msgid "Cancelling"
+msgstr "Cancelando"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:322
+msgid "Downloading repository information"
+msgstr "Baixando informações do repositório"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:326
+msgid "Downloading list of packages"
+msgstr "Baixando a lista de pacotes"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:330
+msgid "Downloading file lists"
+msgstr "Baixando listas de arquivos"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:334
+msgid "Downloading lists of changes"
+msgstr "Baixando a lista de alterações"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:338
+msgid "Downloading groups"
+msgstr "Baixando grupos"
+
+#. TRANSLATORS: transaction state, downloading metadata
+#: ../lib/packagekit-glib2/pk-console-shared.c:342
+msgid "Downloading update information"
+msgstr "Baixando informações de atualização"
+
+#. TRANSLATORS: transaction state, repackaging delta files
+#: ../lib/packagekit-glib2/pk-console-shared.c:346
+msgid "Repackaging files"
+msgstr "Reempacotando arquivos"
+
+#. TRANSLATORS: transaction state, loading databases
+#: ../lib/packagekit-glib2/pk-console-shared.c:350
+msgid "Loading cache"
+msgstr "Carregando cache"
+
+#. TRANSLATORS: transaction state, scanning for running processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:354
+msgid "Scanning applications"
+msgstr "Analisando aplicativos"
+
+#. TRANSLATORS: transaction state, generating a list of packages installed on the system
+#: ../lib/packagekit-glib2/pk-console-shared.c:358
+msgid "Generating package lists"
+msgstr "Gerando listas de pacotes"
+
+#. TRANSLATORS: transaction state, when we're waiting for the native tools to exit
+#: ../lib/packagekit-glib2/pk-console-shared.c:362
+msgid "Waiting for package manager lock"
+msgstr "Esperando pelo bloqueio do gerenciador de pacotes"
+
+#. TRANSLATORS: waiting for user to type in a password
+#: ../lib/packagekit-glib2/pk-console-shared.c:366
+msgid "Waiting for authentication"
+msgstr "Esperando pela autenticação"
+
+#. TRANSLATORS: we are updating the list of processes
+#: ../lib/packagekit-glib2/pk-console-shared.c:370
+msgid "Updating running applications"
+msgstr "Atualizando aplicativos em execução"
+
+#. TRANSLATORS: we are checking executable files currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:374
+msgid "Checking applications in use"
+msgstr "Verificando aplicativos em uso"
+
+#. TRANSLATORS: we are checking for libraries currently in use
+#: ../lib/packagekit-glib2/pk-console-shared.c:378
+msgid "Checking libraries in use"
+msgstr "Verificando bibliotecas em uso"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:396
+msgid "Trivial"
+msgstr "Trivial"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:400
+msgid "Normal"
+msgstr "Normal"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:404
+msgid "Important"
+msgstr "Importante"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:408
+msgid "Security"
+msgstr "Segurança"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:412
+msgid "Bug fix "
+msgstr "Correção de erros"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:416
+msgid "Enhancement"
+msgstr "Melhoria"
+
+#. TRANSLATORS: The type of update
+#: ../lib/packagekit-glib2/pk-console-shared.c:420
+msgid "Blocked"
+msgstr "Bloqueado"
+
+#. TRANSLATORS: The state of a package
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:425
+#: ../lib/packagekit-glib2/pk-console-shared.c:498
+msgid "Installed"
+msgstr "Instalado"
+
+#. TRANSLATORS: The state of a package, i.e. not installed
+#: ../lib/packagekit-glib2/pk-console-shared.c:430
+msgid "Available"
+msgstr "Disponível"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:448
+msgid "Downloading"
+msgstr "Baixando"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:452
+msgid "Updating"
+msgstr "Atualizando"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:456
+msgid "Installing"
+msgstr "Instalando"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:460
+msgid "Removing"
+msgstr "Removendo"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:464
+msgid "Cleaning up"
+msgstr "Limpando"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:468
+msgid "Obsoleting"
+msgstr "Definindo como obsoleto"
+
+#. TRANSLATORS: The action of the package, in present tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:472
+msgid "Reinstalling"
+msgstr "Reinstalando"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:490
+msgid "Downloaded"
+msgstr "Baixado"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:502
+msgid "Removed"
+msgstr "Removido"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:506
+msgid "Cleaned up"
+msgstr "Limpo"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:510
+msgid "Obsoleted"
+msgstr "Obsoleto"
+
+#. TRANSLATORS: The action of the package, in past tense
+#: ../lib/packagekit-glib2/pk-console-shared.c:514
+msgid "Reinstalled"
+msgstr "Reinstalado"
+
+#. TRANSLATORS: ask the user if they are comfortable installing insecure packages
+#: ../lib/packagekit-glib2/pk-task-text.c:64
+msgid "Do you want to allow installing of unsigned software?"
+msgstr "Você quer permitir a instalação de programas não assinados?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:69
+msgid "The unsigned software will not be installed."
+msgstr "O pacote não assinado não será instalado."
+
+#. TRANSLATORS: the package repository is signed by a key that is not recognised
+#: ../lib/packagekit-glib2/pk-task-text.c:102
+msgid "Software source signature required"
+msgstr "A assinatura da fonte de programas é requerida"
+
+#. TRANSLATORS: the package repository name
+#: ../lib/packagekit-glib2/pk-task-text.c:108
+msgid "Software source name"
+msgstr "Nome da fontes de programas"
+
+#. TRANSLATORS: the key URL
+#: ../lib/packagekit-glib2/pk-task-text.c:111
+msgid "Key URL"
+msgstr "URL da chave"
+
+#. TRANSLATORS: the username of the key
+#: ../lib/packagekit-glib2/pk-task-text.c:114
+msgid "Key user"
+msgstr "Usuário da chave"
+
+#. TRANSLATORS: the key ID, usually a few hex digits
+#: ../lib/packagekit-glib2/pk-task-text.c:117
+msgid "Key ID"
+msgstr "ID da chave"
+
+#. TRANSLATORS: the key fingerprint, again, yet more hex
+#: ../lib/packagekit-glib2/pk-task-text.c:120
+msgid "Key fingerprint"
+msgstr "Impressão digital da chave"
+
+#. TRANSLATORS: the timestamp (a bit like a machine readable time)
+#: ../lib/packagekit-glib2/pk-task-text.c:123
+msgid "Key Timestamp"
+msgstr "Carimbo de hora da chave"
+
+#. TRANSLATORS: ask the user if they want to import
+#: ../lib/packagekit-glib2/pk-task-text.c:129
+msgid "Do you accept this signature?"
+msgstr "Você aceita essa assinatura?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:134
+msgid "The signature was not accepted."
+msgstr "A assinatura não foi aceita."
+
+#. TRANSLATORS: this is another name for a software licence that has to be read before installing
+#: ../lib/packagekit-glib2/pk-task-text.c:169
+msgid "End user licence agreement required"
+msgstr "É necessário um contrato de licença para o usuário final"
+
+#. TRANSLATORS: the EULA text itself (long and boring)
+#: ../lib/packagekit-glib2/pk-task-text.c:178
+msgid "Agreement"
+msgstr "Contrato"
+
+#. TRANSLATORS: ask the user if they've read and accepted the EULA
+#: ../lib/packagekit-glib2/pk-task-text.c:184
+msgid "Do you accept this agreement?"
+msgstr "Você aceita este contrato?"
+
+#. TRANSLATORS: tell the user we've not done anything
+#: ../lib/packagekit-glib2/pk-task-text.c:189
+msgid "The agreement was not accepted."
+msgstr "O contrato não foi aceito."
+
+#. TRANSLATORS: the user needs to change media inserted into the computer
+#: ../lib/packagekit-glib2/pk-task-text.c:219
+msgid "Media change required"
+msgstr "É necessário trocar a mídia"
+
+#. TRANSLATORS: the type, e.g. DVD, CD, etc
+#: ../lib/packagekit-glib2/pk-task-text.c:222
+msgid "Media type"
+msgstr "Tipo da mídia"
+
+#. TRANSLATORS: the media label, usually like 'disk-1of3'
+#: ../lib/packagekit-glib2/pk-task-text.c:225
+msgid "Media label"
+msgstr "Rótulo da mídia"
+
+#. TRANSLATORS: the media description, usually like 'Fedora 12 disk 5'
+#: ../lib/packagekit-glib2/pk-task-text.c:228
+msgid "Text"
+msgstr "Texto"
+
+#. TRANSLATORS: ask the user to insert the media
+#: ../lib/packagekit-glib2/pk-task-text.c:232
+msgid "Please insert the correct media"
+msgstr "Por favor, insira a mídia correta"
+
+#. TRANSLATORS: tell the user we've not done anything as they are lazy
+#: ../lib/packagekit-glib2/pk-task-text.c:237
+msgid "The correct media was not inserted."
+msgstr "A mídia correta não foi inserida."
+
+#. TRANSLATORS: When processing, we might have to remove other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:252
+msgid "The following packages have to be removed:"
+msgstr "Os seguintes pacotes têm que ser removidos:"
+
+#. TRANSLATORS: When processing, we might have to install other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:257
+msgid "The following packages have to be installed:"
+msgstr "Os seguintes pacotes têm que ser instalados:"
+
+#. TRANSLATORS: When processing, we might have to update other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:262
+msgid "The following packages have to be updated:"
+msgstr "Os seguintes pacotes têm que ser atualizados:"
+
+#. TRANSLATORS: When processing, we might have to reinstall other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:267
+msgid "The following packages have to be reinstalled:"
+msgstr "Os seguintes pacotes têm que ser reinstalados:"
+
+#. TRANSLATORS: When processing, we might have to downgrade other dependencies
+#: ../lib/packagekit-glib2/pk-task-text.c:272
+msgid "The following packages have to be downgraded:"
+msgstr "Os seguintes pacotes têm que ser desatualizados:"
+
+#. TRANSLATORS: ask the user if the proposed changes are okay
+#: ../lib/packagekit-glib2/pk-task-text.c:331
+msgid "Proceed with changes?"
+msgstr "Continuar com as alterações?"
+
+#. TRANSLATORS: tell the user we didn't do anything
+#: ../lib/packagekit-glib2/pk-task-text.c:336
+msgid "The transaction did not proceed."
+msgstr "A transação não procedeu."
+
 #. SECURITY:
 #. - Normal users do not require admin authentication to accept new
 #. licence agreements.
@@ -1592,10 +1755,91 @@ msgid "Many packages"
 msgstr "Muitos pacotes"
 
 #. TRANSLATORS: if the transaction is forced to install only trusted packages
-#: ../src/pk-polkit-action-lookup.c:334
+#: ../src/pk-polkit-action-lookup.c:340
 msgid "Only trusted"
 msgstr "Somente confiáveis"
 
+#~ msgid "Percentage"
+#~ msgstr "Porcentagem"
+#~ msgid "Please restart the application as it is being used."
+#~ msgstr "Por favor, reinicie o aplicativo que está sendo usado."
+#~ msgid "The package %s is already installed"
+#~ msgstr "O pacote %s já está instalado"
+#~ msgid "The package install was canceled!"
+#~ msgstr "A instalação do pacote foi cancelada!"
+#~ msgid "This tool could not install the files: %s"
+#~ msgstr "Esta ferramenta não pôde instalar os arquivos: %s"
+#~ msgid "This tool could not remove %s: %s"
+#~ msgstr "Esta ferramenta não pôde remover %s: %s"
+#~ msgid "This tool could not remove the packages: %s"
+#~ msgstr "Esta ferramente não pôde remover os pacotes: %s"
+#~ msgid "Proceed with additional packages?"
+#~ msgstr "Continuar com a remoção dos pacotes adicionais?"
+#~ msgid "The package removal was canceled!"
+#~ msgstr "A remoção do pacote foi cancelada!"
+#~ msgid "This tool could not download the package %s as it could not be found"
+#~ msgstr ""
+#~ "Esta ferramenta não pôde baixar o pacote %s, pois ele não foi localizado"
+#~ msgid "This tool could not download the packages: %s"
+#~ msgstr "Esta ferramenta não pôde baixar os pacotes: %s"
+#~ msgid "This tool could not update %s: %s"
+#~ msgstr "Esta ferramenta não pôde atualizar %s: %s"
+#~ msgid "The package update was canceled!"
+#~ msgstr "A atualização do pacote foi cancelada!"
+#~ msgid "This tool could not get the requirements for %s: %s"
+#~ msgstr "Esta ferramenta não pôde obter os requerimentos para %s: %s"
+#~ msgid "This tool could not get the dependencies for %s: %s"
+#~ msgstr "Esta ferramenta não pôde obter as dependências para %s: %s"
+#~ msgid "This tool could not get package details for %s: %s"
+#~ msgstr "Esta ferramenta não pôde obter os detalhes do pacote para %s: %s"
+#~ msgid "This tool could not find the files for %s: %s"
+#~ msgstr "Esta ferramenta não pôde localizar os arquivos para %s: %s"
+#~ msgid "This tool could not get the file list for %s: %s"
+#~ msgstr "Esta ferramenta não pôde obter a lista de arquivos para %s: %s"
+#~ msgid "File already exists: %s"
+#~ msgstr "O arquivo já existe: %s"
+#~ msgid "This tool could not get package list: %s"
+#~ msgstr "Esta ferramente não pôde obter a lista de pacotes: %s"
+#~ msgid "Failed to save to disk"
+#~ msgstr "Falha ao salvar no disco"
+#~ msgid "File does not exist: %s"
+#~ msgstr "O arquivo não existe: %s"
+#~ msgid "Packages to add"
+#~ msgstr "Pacotes a serem adicionados"
+#~ msgid "Packages to remove"
+#~ msgstr "Pacotes a serem removidos"
+#~ msgid "No new packages need to be installed"
+#~ msgstr "Nenhum pacote novo precisa ser instalado"
+#~ msgid "Searching for package: "
+#~ msgstr "Pesquisando pelo pacote:"
+#~ msgid "not found."
+#~ msgstr "não encontrado."
+#~ msgid "No packages can be found to install"
+#~ msgstr "Nenhum pacote pôde ser localizado para instalação"
+#~ msgid "This tool could not find the update details for %s: %s"
+#~ msgstr ""
+#~ "Esta ferramenta não pôde localizar os detalhes de atualização para %s: %s"
+#~ msgid "This tool could not get the update details for %s: %s"
+#~ msgstr ""
+#~ "Esta ferramenta não pôde obter os detalhes de atualização para %s: %s"
+#~ msgid "Error:"
+#~ msgstr "Erro:"
+#~ msgid "Do you agree to this license?"
+#~ msgstr "Você concorda com a licença?"
+#~ msgid "The license was refused."
+#~ msgstr "A licença foi recusada."
+#~ msgid "This tool could not connect to system DBUS."
+#~ msgstr "Esta ferramenta não pôde conectar ao DBUS do sistema."
+#~ msgid "A list file name to create is required"
+#~ msgstr "O nome de arquivo da lista a ser criada é requerido"
+#~ msgid "A list file to open is required"
+#~ msgstr "Uma lista de arquivos a serem abertos é requerida"
+#~ msgid "Incorrect privileges for this operation"
+#~ msgstr "Privilégios incorretos para esta operação"
+#~ msgid "Cannot show the list of transactions"
+#~ msgstr "Não é possível mostrar a lista de transações"
+#~ msgid "The package could not be found"
+#~ msgstr "O pacote não pôde ser encontrado"
 #~ msgid "The action, one of 'create', 'add', or 'remove'"
 #~ msgstr "A ação, uma entre as opções \"create\", \"add\" ou \"remove\""
 #~ msgid "Main cache file to use (if not specififed, default is used)"
@@ -1626,8 +1870,6 @@ msgstr "Somente confiáveis"
 #~ msgstr "Você precisa especificar um nome de repositório"
 #~ msgid "You need to specify a correct role"
 #~ msgstr "Você precisa especificar um papel correto"
-#~ msgid "Failed to get last time"
-#~ msgstr "Falha ao obter o último horário"
 #~ msgid "You need to specify a package to find the details for"
 #~ msgstr ""
 #~ "Você precisa especificar o pacote para o qual você quer localizar os "
@@ -1652,8 +1894,6 @@ msgstr "Somente confiáveis"
 #~ msgstr "Você concorda?"
 #~ msgid "Could not find package to remove"
 #~ msgstr "Não foi possível localizar o pacote a ser removido"
-#~ msgid "Cancelled!"
-#~ msgstr "Cancelado!"
 #~ msgid "Could not find package to update"
 #~ msgstr "Não foi possível localizar o pacote a ser atualizado"
 #~ msgid "Could not find what packages require"
@@ -1737,8 +1977,6 @@ msgstr "Somente confiáveis"
 #~ msgstr "É necessário autenticar para atualizar todos os pacotes"
 #~ msgid "Install security signature"
 #~ msgstr "Instalar uma assinatura de segurança"
-#~ msgid "Refresh package lists"
-#~ msgstr "Recarregar listas de pacotes"
 #~ msgid "Update all packages"
 #~ msgstr "Atualizar todos os pacotes"
 #~ msgid "Could not find a description for this package"
commit 44d9a0aba80fe18a97a67bf677cadb3ca0c79b85
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 13:42:24 2009 +0100

    spec: Add a new Speed property to the interface as some users are demanding a way to get the download speed

diff --git a/lib/packagekit-glib2/pk-progress.c b/lib/packagekit-glib2/pk-progress.c
index 49072b4..854ddc3 100644
--- a/lib/packagekit-glib2/pk-progress.c
+++ b/lib/packagekit-glib2/pk-progress.c
@@ -54,6 +54,7 @@ struct _PkProgressPrivate
 	gboolean			 caller_active;
 	guint				 elapsed_time;
 	guint				 remaining_time;
+	guint				 speed;
 };
 
 enum {
@@ -67,6 +68,7 @@ enum {
 	PROP_CALLER_ACTIVE,
 	PROP_ELAPSED_TIME,
 	PROP_REMAINING_TIME,
+	PROP_SPEED,
 	PROP_LAST
 };
 
@@ -108,6 +110,9 @@ pk_progress_get_property (GObject *object, guint prop_id, GValue *value, GParamS
 	case PROP_REMAINING_TIME:
 		g_value_set_uint (value, progress->priv->remaining_time);
 		break;
+	case PROP_SPEED:
+		g_value_set_uint (value, progress->priv->speed);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -279,6 +284,24 @@ pk_progress_set_remaining_time (PkProgress *progress, guint remaining_time)
 }
 
 /**
+ * pk_progress_set_speed:
+ **/
+gboolean
+pk_progress_set_speed (PkProgress *progress, guint speed)
+{
+	g_return_val_if_fail (PK_IS_PROGRESS (progress), FALSE);
+
+	/* the same as before? */
+	if (progress->priv->speed == speed)
+		return FALSE;
+
+	/* new value */
+	progress->priv->speed = speed;
+	egg_debug ("speed now %i", speed);
+	return TRUE;
+}
+
+/**
  * pk_progress_set_property:
  **/
 static void
@@ -314,6 +337,9 @@ pk_progress_set_property (GObject *object, guint prop_id, const GValue *value, G
 	case PROP_REMAINING_TIME:
 		pk_progress_set_remaining_time (progress, g_value_get_uint (value));
 		break;
+	case PROP_SPEED:
+		pk_progress_set_speed (progress, g_value_get_uint (value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -405,6 +431,14 @@ pk_progress_class_init (PkProgressClass *klass)
 				   G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_REMAINING_TIME, pspec);
 
+	/**
+	 * PkProgress:speed:
+	 */
+	pspec = g_param_spec_uint ("speed", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_SPEED, pspec);
+
 	g_type_class_add_private (klass, sizeof (PkProgressPrivate));
 }
 
diff --git a/lib/packagekit-glib2/pk-progress.h b/lib/packagekit-glib2/pk-progress.h
index 03ba49d..c89d3bc 100644
--- a/lib/packagekit-glib2/pk-progress.h
+++ b/lib/packagekit-glib2/pk-progress.h
@@ -76,6 +76,7 @@ typedef enum {
 	PK_PROGRESS_TYPE_CALLER_ACTIVE,
 	PK_PROGRESS_TYPE_ELAPSED_TIME,
 	PK_PROGRESS_TYPE_REMAINING_TIME,
+	PK_PROGRESS_TYPE_SPEED,
 	PK_PROGRESS_TYPE_INVALID
 } PkProgressType;
 
@@ -101,6 +102,8 @@ gboolean	 pk_progress_set_elapsed_time		(PkProgress		*progress,
 							 guint			 elapsed_time);
 gboolean	 pk_progress_set_remaining_time		(PkProgress		*progress,
 							 guint			 remaining_time);
+gboolean	 pk_progress_set_speed			(PkProgress		*progress,
+							 guint			 speed);
 
 G_END_DECLS
 
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index db18ed4..9b75995 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -112,6 +112,15 @@
         </doc:description>
       </doc:doc>
     </property>
+    <property name="Speed" type="u" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            The estimated speed of the transaction (copying, downloading, etc.) in bits per second, or 0 if not known.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
 
     <!--*****************************************************************************************-->
     <method name="SetLocale">
diff --git a/src/pk-backend.c b/src/pk-backend.c
index 1493507..9499d5f 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -99,6 +99,7 @@ struct _PkBackendPrivate
 	gboolean		 has_sent_package;
 	gboolean		 use_time;
 	guint			 download_files;
+	guint			 speed;
 	PkNetwork		*network;
 	PkStore			*store;
 	PkItemPackage		*last_package;
@@ -2668,6 +2669,7 @@ pk_backend_init (PkBackend *backend)
 	backend->priv->last_package = NULL;
 	backend->priv->locked = FALSE;
 	backend->priv->signal_finished = 0;
+	backend->priv->speed = 0;
 	backend->priv->signal_error_timeout = 0;
 	backend->priv->during_initialize = FALSE;
 	backend->priv->simultaneous = FALSE;
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 87671be..2622958 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -85,6 +85,7 @@ struct PkTransactionPrivate
 	guint			 subpercentage;
 	guint			 elapsed_time;
 	guint			 remaining_time;
+	guint			 speed;
 	gboolean		 finished;
 	gboolean		 running;
 	gboolean		 has_been_run;
@@ -157,6 +158,7 @@ struct PkTransactionPrivate
 	guint			 signal_status_changed;
 	guint			 signal_update_detail;
 	guint			 signal_category;
+	guint			 signal_speed;
 };
 
 enum {
@@ -196,6 +198,7 @@ enum
 	PROP_CALLER_ACTIVE,
 	PROP_ELAPSED_TIME,
 	PROP_REMAINING_TIME,
+	PROP_SPEED,
 	PROP_LAST
 };
 
@@ -648,6 +651,7 @@ pk_transaction_finished_cb (PkBackend *backend, PkExitEnum exit_enum, PkTransact
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_media_change_required);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_update_detail);
 	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_category);
+	g_signal_handler_disconnect (transaction->priv->backend, transaction->priv->signal_speed);
 
 	/* check for session restarts */
 	if (exit_enum == PK_EXIT_ENUM_SUCCESS &&
@@ -1303,6 +1307,19 @@ out:
 }
 
 /**
+ * pk_transaction_speed_cb:
+ **/
+static void
+pk_transaction_speed_cb (GObject *object, GParamSpec *pspec, PkTransaction *transaction)
+{
+	g_object_get (object,
+		      "speed", &transaction->priv->speed,
+		      NULL);
+	/* emit */
+	egg_warning ("need to emit changed event");
+}
+
+/**
  * pk_transaction_set_running:
  */
 G_GNUC_WARN_UNUSED_RESULT static gboolean
@@ -1400,6 +1417,9 @@ pk_transaction_set_running (PkTransaction *transaction)
 	transaction->priv->signal_category =
 		g_signal_connect (transaction->priv->backend, "category",
 				  G_CALLBACK (pk_transaction_category_cb), transaction);
+	transaction->priv->signal_speed =
+		g_signal_connect (transaction->priv->backend, "notify::speed",
+				  G_CALLBACK (pk_transaction_speed_cb), transaction);
 
 	/* mark running */
 	transaction->priv->running = TRUE;
@@ -4764,6 +4784,9 @@ pk_transaction_get_property (GObject *object, guint prop_id, GValue *value, GPar
 	case PROP_REMAINING_TIME:
 		g_value_set_uint (value, transaction->priv->remaining_time);
 		break;
+	case PROP_SPEED:
+		g_value_set_uint (value, transaction->priv->speed);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -4873,6 +4896,15 @@ pk_transaction_class_init (PkTransactionClass *klass)
 				  G_PARAM_READABLE);
 	g_object_class_install_property (object_class, PROP_REMAINING_TIME, spec);
 
+	/**
+	 * PkTransaction:speed:
+	 */
+	spec = g_param_spec_uint ("speed",
+				  "Speed", "The estimated speed of the transaction",
+				  0, G_MAXUINT, 0,
+				  G_PARAM_READABLE);
+	g_object_class_install_property (object_class, PROP_SPEED, spec);
+
 	signals[SIGNAL_ALLOW_CANCEL] =
 		g_signal_new ("allow-cancel",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
commit bf13590c607fe5cc10d01b974e5c70e5e50ca548
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 13:07:25 2009 +0100

    Export ElapsedTime and RemainingTime as properties on the Transaction inferface
    
    Some clients have come to rely on this information, and we can hardly
    deprecate the old methods if there's nothing to replace them

diff --git a/lib/packagekit-glib2/pk-client.c b/lib/packagekit-glib2/pk-client.c
index acd329c..e002ea6 100644
--- a/lib/packagekit-glib2/pk-client.c
+++ b/lib/packagekit-glib2/pk-client.c
@@ -623,7 +623,7 @@ pk_client_percentage_to_signed (guint percentage)
  */
 static void
 pk_client_progress_changed_cb (DBusGProxy *proxy, guint percentage, guint subpercentage,
-			       guint elapsed, guint remaining, PkClientState *state)
+			       guint elapsed_time, guint remaining_time, PkClientState *state)
 {
 	gboolean ret;
 	gint percentage_new;
@@ -646,6 +646,20 @@ pk_client_progress_changed_cb (DBusGProxy *proxy, guint percentage, guint subper
 	/* do the callback for GUI programs */
 	if (state->progress_callback != NULL && ret)
 		state->progress_callback (state->progress, PK_PROGRESS_TYPE_SUBPERCENTAGE, state->progress_user_data);
+
+	/* save progress */
+	ret = pk_progress_set_elapsed_time (state->progress, elapsed_time);
+
+	/* do the callback for GUI programs */
+	if (state->progress_callback != NULL && ret)
+		state->progress_callback (state->progress, PK_PROGRESS_TYPE_ELAPSED_TIME, state->progress_user_data);
+
+	/* save progress */
+	ret = pk_progress_set_remaining_time (state->progress, remaining_time);
+
+	/* do the callback for GUI programs */
+	if (state->progress_callback != NULL && ret)
+		state->progress_callback (state->progress, PK_PROGRESS_TYPE_REMAINING_TIME, state->progress_user_data);
 }
 
 /**
diff --git a/lib/packagekit-glib2/pk-progress.c b/lib/packagekit-glib2/pk-progress.c
index c2f332c..49072b4 100644
--- a/lib/packagekit-glib2/pk-progress.c
+++ b/lib/packagekit-glib2/pk-progress.c
@@ -52,6 +52,8 @@ struct _PkProgressPrivate
 	PkRoleEnum			 role;
 	PkStatusEnum			 status;
 	gboolean			 caller_active;
+	guint				 elapsed_time;
+	guint				 remaining_time;
 };
 
 enum {
@@ -63,6 +65,8 @@ enum {
 	PROP_ROLE,
 	PROP_STATUS,
 	PROP_CALLER_ACTIVE,
+	PROP_ELAPSED_TIME,
+	PROP_REMAINING_TIME,
 	PROP_LAST
 };
 
@@ -98,6 +102,12 @@ pk_progress_get_property (GObject *object, guint prop_id, GValue *value, GParamS
 	case PROP_CALLER_ACTIVE:
 		g_value_set_boolean (value, progress->priv->caller_active);
 		break;
+	case PROP_ELAPSED_TIME:
+		g_value_set_uint (value, progress->priv->elapsed_time);
+		break;
+	case PROP_REMAINING_TIME:
+		g_value_set_uint (value, progress->priv->remaining_time);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -233,6 +243,42 @@ pk_progress_set_caller_active (PkProgress *progress, gboolean caller_active)
 }
 
 /**
+ * pk_progress_set_elapsed_time:
+ **/
+gboolean
+pk_progress_set_elapsed_time (PkProgress *progress, guint elapsed_time)
+{
+	g_return_val_if_fail (PK_IS_PROGRESS (progress), FALSE);
+
+	/* the same as before? */
+	if (progress->priv->elapsed_time == elapsed_time)
+		return FALSE;
+
+	/* new value */
+	progress->priv->elapsed_time = elapsed_time;
+	egg_debug ("elapsed time now %i", elapsed_time);
+	return TRUE;
+}
+
+/**
+ * pk_progress_set_remaining_time:
+ **/
+gboolean
+pk_progress_set_remaining_time (PkProgress *progress, guint remaining_time)
+{
+	g_return_val_if_fail (PK_IS_PROGRESS (progress), FALSE);
+
+	/* the same as before? */
+	if (progress->priv->remaining_time == remaining_time)
+		return FALSE;
+
+	/* new value */
+	progress->priv->remaining_time = remaining_time;
+	egg_debug ("remaining time now %i", remaining_time);
+	return TRUE;
+}
+
+/**
  * pk_progress_set_property:
  **/
 static void
@@ -262,6 +308,12 @@ pk_progress_set_property (GObject *object, guint prop_id, const GValue *value, G
 	case PROP_CALLER_ACTIVE:
 		pk_progress_set_caller_active (progress, g_value_get_boolean (value));
 		break;
+	case PROP_ELAPSED_TIME:
+		pk_progress_set_elapsed_time (progress, g_value_get_uint (value));
+		break;
+	case PROP_REMAINING_TIME:
+		pk_progress_set_remaining_time (progress, g_value_get_uint (value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -337,6 +389,22 @@ pk_progress_class_init (PkProgressClass *klass)
 				      G_PARAM_READWRITE);
 	g_object_class_install_property (object_class, PROP_CALLER_ACTIVE, pspec);
 
+	/**
+	 * PkProgress:elapsed-time:
+	 */
+	pspec = g_param_spec_uint ("elapsed-time", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_ELAPSED_TIME, pspec);
+
+	/**
+	 * PkProgress:remaining-time:
+	 */
+	pspec = g_param_spec_uint ("remaining-time", NULL, NULL,
+				   0, G_MAXUINT, 0,
+				   G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_REMAINING_TIME, pspec);
+
 	g_type_class_add_private (klass, sizeof (PkProgressPrivate));
 }
 
diff --git a/lib/packagekit-glib2/pk-progress.h b/lib/packagekit-glib2/pk-progress.h
index 34848b3..03ba49d 100644
--- a/lib/packagekit-glib2/pk-progress.h
+++ b/lib/packagekit-glib2/pk-progress.h
@@ -74,6 +74,8 @@ typedef enum {
 	PK_PROGRESS_TYPE_STATUS,
 	PK_PROGRESS_TYPE_ROLE,
 	PK_PROGRESS_TYPE_CALLER_ACTIVE,
+	PK_PROGRESS_TYPE_ELAPSED_TIME,
+	PK_PROGRESS_TYPE_REMAINING_TIME,
 	PK_PROGRESS_TYPE_INVALID
 } PkProgressType;
 
@@ -95,6 +97,10 @@ gboolean	 pk_progress_set_allow_cancel		(PkProgress		*progress,
 							 gboolean		 allow_cancel);
 gboolean	 pk_progress_set_caller_active		(PkProgress		*progress,
 							 gboolean		 caller_active);
+gboolean	 pk_progress_set_elapsed_time		(PkProgress		*progress,
+							 guint			 elapsed_time);
+gboolean	 pk_progress_set_remaining_time		(PkProgress		*progress,
+							 guint			 remaining_time);
 
 G_END_DECLS
 
diff --git a/src/org.freedesktop.PackageKit.Transaction.xml b/src/org.freedesktop.PackageKit.Transaction.xml
index f905c65..db18ed4 100644
--- a/src/org.freedesktop.PackageKit.Transaction.xml
+++ b/src/org.freedesktop.PackageKit.Transaction.xml
@@ -94,6 +94,24 @@
         </doc:description>
       </doc:doc>
     </property>
+    <property name="ElapsedTime" type="u" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            The amount of time elapsed during the transaction in seconds.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
+    <property name="RemainingTime" type="u" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            The estimated time remaining of the transaction in seconds, or 0 if not known.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
 
     <!--*****************************************************************************************-->
     <method name="SetLocale">
diff --git a/src/pk-transaction.c b/src/pk-transaction.c
index 5d5b7f2..87671be 100644
--- a/src/pk-transaction.c
+++ b/src/pk-transaction.c
@@ -83,8 +83,8 @@ struct PkTransactionPrivate
 	PkStatusEnum		 status;
 	guint			 percentage;
 	guint			 subpercentage;
-	guint			 elapsed;
-	guint			 remaining;
+	guint			 elapsed_time;
+	guint			 remaining_time;
 	gboolean		 finished;
 	gboolean		 running;
 	gboolean		 has_been_run;
@@ -194,6 +194,8 @@ enum
 	PROP_SUBPERCENTAGE,
 	PROP_ALLOW_CANCEL,
 	PROP_CALLER_ACTIVE,
+	PROP_ELAPSED_TIME,
+	PROP_REMAINING_TIME,
 	PROP_LAST
 };
 
@@ -369,8 +371,8 @@ pk_transaction_progress_changed_emit (PkTransaction *transaction, guint percenta
 	/* save so we can do GetProgress on a queued or finished transaction */
 	transaction->priv->percentage = percentage;
 	transaction->priv->subpercentage = subpercentage;
-	transaction->priv->elapsed = elapsed;
-	transaction->priv->remaining = remaining;
+	transaction->priv->elapsed_time = elapsed;
+	transaction->priv->remaining_time = remaining;
 
 	egg_debug ("emitting percentage-changed %i, %i, %i, %i", percentage, subpercentage, elapsed, remaining);
 	g_signal_emit (transaction, signals[SIGNAL_PROGRESS_CHANGED], 0, percentage, subpercentage, elapsed, remaining);
@@ -2772,8 +2774,8 @@ pk_transaction_get_progress (PkTransaction *transaction,
 	egg_debug ("GetProgress method called, using cached values");
 	*percentage = transaction->priv->percentage;
 	*subpercentage = transaction->priv->subpercentage;
-	*elapsed = transaction->priv->elapsed;
-	*remaining = transaction->priv->remaining;
+	*elapsed = transaction->priv->elapsed_time;
+	*remaining = transaction->priv->remaining_time;
 
 	return TRUE;
 }
@@ -4756,6 +4758,12 @@ pk_transaction_get_property (GObject *object, guint prop_id, GValue *value, GPar
 	case PROP_CALLER_ACTIVE:
 		g_value_set_boolean (value, transaction->priv->caller_active);
 		break;
+	case PROP_ELAPSED_TIME:
+		g_value_set_uint (value, transaction->priv->elapsed_time);
+		break;
+	case PROP_REMAINING_TIME:
+		g_value_set_uint (value, transaction->priv->remaining_time);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -4847,6 +4855,24 @@ pk_transaction_class_init (PkTransactionClass *klass)
 				     G_PARAM_READABLE);
 	g_object_class_install_property (object_class, PROP_CALLER_ACTIVE, spec);
 
+	/**
+	 * PkTransaction:elapsed-time:
+	 */
+	spec = g_param_spec_uint ("elapsed-time",
+				  "Elapsed Time", "The amount of time elapsed during the transaction",
+				  0, G_MAXUINT, 0,
+				  G_PARAM_READABLE);
+	g_object_class_install_property (object_class, PROP_ELAPSED_TIME, spec);
+
+	/**
+	 * PkTransaction:remaining-time:
+	 */
+	spec = g_param_spec_uint ("remaining-time",
+				  "Remaining Time", "The estimated remaining time of the transaction",
+				  0, G_MAXUINT, 0,
+				  G_PARAM_READABLE);
+	g_object_class_install_property (object_class, PROP_REMAINING_TIME, spec);
+
 	signals[SIGNAL_ALLOW_CANCEL] =
 		g_signal_new ("allow-cancel",
 			      G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST,
@@ -4999,8 +5025,8 @@ pk_transaction_init (PkTransaction *transaction)
 	transaction->priv->status = PK_STATUS_ENUM_WAIT;
 	transaction->priv->percentage = PK_BACKEND_PERCENTAGE_INVALID;
 	transaction->priv->subpercentage = PK_BACKEND_PERCENTAGE_INVALID;
-	transaction->priv->elapsed = 0;
-	transaction->priv->remaining = 0;
+	transaction->priv->elapsed_time = 0;
+	transaction->priv->remaining_time = 0;
 	transaction->priv->backend = pk_backend_new ();
 	transaction->priv->cache = pk_cache_new ();
 	transaction->priv->conf = pk_conf_new ();
commit 6c417ddcdf58d674613c74bbced24a000fe71c77
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Sep 14 12:36:34 2009 +0100

    glib2: Don't append blank version and arch sections in pk_package_id_to_printable()

diff --git a/lib/packagekit-glib2/pk-package-id.c b/lib/packagekit-glib2/pk-package-id.c
index b140e15..0dc7170 100644
--- a/lib/packagekit-glib2/pk-package-id.c
+++ b/lib/packagekit-glib2/pk-package-id.c
@@ -184,6 +184,7 @@ pk_package_id_to_printable (const gchar *package_id)
 {
 	gchar **parts = NULL;
 	gchar *value = NULL;
+	GString *string = NULL;
 
 	/* invalid */
 	if (package_id == NULL)
@@ -194,12 +195,19 @@ pk_package_id_to_printable (const gchar *package_id)
 	if (parts == NULL)
 		goto out;
 
-	/* form name-version.arch */
-	value = g_strdup_printf ("%s-%s.%s",
-				 parts[PK_PACKAGE_ID_NAME],
-				 parts[PK_PACKAGE_ID_VERSION],
-				 parts[PK_PACKAGE_ID_ARCH]);
+	/* name */
+	string = g_string_new (parts[PK_PACKAGE_ID_NAME]);
+
+	/* version if present */
+	if (parts[PK_PACKAGE_ID_VERSION][0] != '\0')
+		g_string_append_printf (string, "-%s", parts[PK_PACKAGE_ID_VERSION]);
+
+	/* arch if present */
+	if (parts[PK_PACKAGE_ID_ARCH][0] != '\0')
+		g_string_append_printf (string, ".%s", parts[PK_PACKAGE_ID_ARCH]);
 out:
+	if (string != NULL)
+		value = g_string_free (string, FALSE);
 	g_strfreev (parts);
 	return value;
 }
@@ -268,6 +276,24 @@ pk_package_id_test (gpointer user_data)
 	g_free (text);
 
 	/************************************************************/
+	egg_test_title (test, "test printable no arch");
+	text = pk_package_id_to_printable ("moo;0.0.1;;");
+	if (g_strcmp0 (text, "moo-0.0.1") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "printable is '%s'", text);
+	g_free (text);
+
+	/************************************************************/
+	egg_test_title (test, "test printable just name");
+	text = pk_package_id_to_printable ("moo;;;");
+	if (g_strcmp0 (text, "moo") == 0)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "printable is '%s'", text);
+	g_free (text);
+
+	/************************************************************/
 	egg_test_title (test, "test on real packageid");
 	sections = pk_package_id_split ("kde-i18n-csb;4:3.5.8~pre20071001-0ubuntu1;all;");
 	if (sections != NULL &&


More information about the PackageKit-commit mailing list