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

Richard Hughes hughsient at kemper.freedesktop.org
Mon Mar 9 02:47:41 PDT 2009


 NEWS                                          |   41 +
 RELEASE                                       |    2 
 configure.ac                                  |   10 
 contrib/Makefile.am                           |    4 
 contrib/app-install/.gitignore                |   11 
 contrib/app-install/Makefile.am               |   67 --
 contrib/app-install/README                    |    5 
 contrib/app-install/egg-debug.c               |    1 
 contrib/app-install/egg-debug.h               |    1 
 contrib/app-install/pk-app-install-add.c      |  262 -------
 contrib/app-install/pk-app-install-common.h   |   30 
 contrib/app-install/pk-app-install-create.c   |  133 ---
 contrib/app-install/pk-app-install-generate.c |  560 ----------------
 contrib/app-install/pk-app-install-remove.c   |  221 ------
 docs/html/pk-download.html                    |    1 
 lib/packagekit-qt/src/client.cpp              |   13 
 lib/packagekit-qt/src/clientprivate.h         |    1 
 lib/packagekit-qt/src/package.cpp             |   35 -
 lib/packagekit-qt/src/package.h               |   32 
 po/POTFILES.in                                |    4 
 po/ca.po                                      |  865 +++++++++++++++++++-------
 po/es.po                                      |  362 ++++++----
 22 files changed, 936 insertions(+), 1725 deletions(-)

New commits:
commit 31ae111ca83ba37b1445d212b855111fc8b66d01
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Mar 9 09:46:24 2009 +0000

    Release version 0.4.5

diff --git a/NEWS b/NEWS
index 2ab0e35..a59c9f8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,44 @@
+Version 0.4.5
+~~~~~~~~~~~~~
+Released: 2009-03-09
+
+Translations:
+ - Updated Punjabi translation (A S Alam)
+ - Updated Spanish translation (Domingo Becker)
+ - Updated Brazilian Portuguese translation (Igor Pires Soares)
+ - Updated German translation (Jens-Uwe Peter)
+ - Updated Spanish translation (Jorge A Gallegos)
+ - Updated Polish translation (Piotr DrÄ…g)
+ - Updated Marathi Translations (Sandeep Sheshrao Shedmake)
+ - Updated Catalan translation (Xavier Conde)
+
+New Features:
+ - Enable ptrace() on libpackagekit, it was always a bandaid (Richard Hughes)
+ - python: add a PkError exception class to better handle nested errors (Richard Hughes)
+ - Clarify the spec that a Details::size value of zero of a non-installed file
+   indicates it's in cache and doesn't need to be downloaded (Richard Hughes)
+ - Remove the app-install feature, it's now it's own project (Richard Hughes)
+ - Allow backends to enable simultaneous mode to do actions in parallel (Richard Hughes)
+ - Updated QPackageKit soname version to 0.4.1 (Daniel Nicoletti)
+ - Made package methods const and added an operator== to package (Daniel Nicoletti)
+
+Bugfixes:
+ - When we reset a PkClient, get a new reference to a PkPackageList (Richard Hughes)
+ - Ensure we set PK_STATUS_ENUM_FINISHED when we return cached updates (Richard Hughes)
+ - glib: When we cancel a transaction, don't overwrite the role as Cancel (Richard Hughes)
+ - Fix the self test by using actual provides in the catalog file (Richard Hughes)
+
+Backends:
+ - apt: Update the postinst script to store desktop file information in the desktop.db (Sebastian Heinlein)
+ - conary: Fix some typos for search methods (Andres Vargas)
+ - conary: Fix the unicode decode (Andres Vargas)
+ - conary: Remove chars what break the backend (Andres Vargas)
+ - dummy: Add other package details for updates (Richard Hughes)
+ - dummy: Make the gpg and eula prompts configurable (Richard Hughes)
+ - yum: Do proper error handling to avoid exiting the script on correctable errors (Richard Hughes)
+ - yum: Support the 'any' provide search (Richard Hughes)
+ - yum: Output a Details::size value of zero if the file is in cache (Richard Hughes)
+
 Version 0.4.4
 ~~~~~~~~~~~~~
 Released: 2009-02-23
diff --git a/RELEASE b/RELEASE
index 7104e74..7e6ba6c 100644
--- a/RELEASE
+++ b/RELEASE
@@ -22,7 +22,7 @@ git push --tags git+ssh://hughsient@git.freedesktop.org/git/packagekit
 5. Commit changes in gnome-packagekit git:
 
 git commit -a -m "Release version 0.4.5"
-git-tag GNOME_PACKAGEKIT_0_4_5
+git tag GNOME_PACKAGEKIT_0_4_5
 git push --tags
 git push
 
diff --git a/configure.ac b/configure.ac
index 259b1f7..a168db8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@ DEVELOPMENT_RELEASE=yes
 # AGE		If libpackagekit can be linked into executables which can be
 # 		built with previous versions of this library. Don't use.
 LT_CURRENT=11
-LT_REVISION=3
+LT_REVISION=4
 LT_AGE=0
 AC_SUBST(LT_CURRENT)
 AC_SUBST(LT_REVISION)
diff --git a/docs/html/pk-download.html b/docs/html/pk-download.html
index 7b30a44..c2b97ce 100644
--- a/docs/html/pk-download.html
+++ b/docs/html/pk-download.html
@@ -68,6 +68,7 @@ Releases are normally once every 1-2 weeks.
 </p>
 <table>
 <tr><td><b>Version</b></td><td>&nbsp;&nbsp;</td><td><b>Date</b></td></tr>
+<tr><td>0.4.5</td><td></td><td>2009-03-09</td></tr>
 <tr><td>0.4.4</td><td></td><td>2009-02-23</td></tr>
 <tr><td>0.4.3</td><td></td><td>2009-02-02</td></tr>
 <tr><td>0.4.2</td><td></td><td>2009-01-19</td></tr>
commit 60e4e000d24ed4465a997bae6aabfffb3312b216
Author: Richard Hughes <richard at hughsie.com>
Date:   Mon Mar 9 09:37:49 2009 +0000

    trivial: fix build

diff --git a/po/POTFILES.in b/po/POTFILES.in
index c760546..9887fec 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,10 +7,6 @@ client/pk-monitor.c
 client/pk-tools-common.c
 contrib/command-not-found/pk-command-not-found.c
 contrib/browser-plugin/src/contents.cpp
-contrib/app-install/pk-app-install-add.c
-contrib/app-install/pk-app-install-create.c
-contrib/app-install/pk-app-install-generate.c
-contrib/app-install/pk-app-install-remove.c
 data/packagekit-catalog.xml.in
 data/packagekit-package-list.xml.in
 data/packagekit-servicepack.xml.in
commit df30eedb281a211193e2fbcf8e7f4897f2ebc8ec
Author: Domingo Becker <domingobecker at gmail.com>
Date:   Sun Mar 8 23:29:23 2009 +0000

    updated Spanish translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/es.po b/po/es.po
index 8f4b711..34b88c5 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,5 +1,5 @@
-# Spanish translation of packagekit.
-# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 # Javier Alejandro Castro <javier.alejandro.castro at gmail.com>, 2008.
 #
@@ -8,12 +8,13 @@ msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-03-05 15:42+0000\n"
-"PO-Revision-Date: 2009-03-07 00:57-0600\n"
+"PO-Revision-Date: 2009-03-08 21:11-0300\n"
 "Last-Translator: Domingo Becker <domingobecker at gmail.com>\n"
-"Language-Team: Spanish <fedora-trans-es at redhat.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"
-"Content-Transfer-Encoding: 8bit"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
 
 #. TRANSLATORS: this is an atomic transaction
 #: ../client/pk-console.c:234
@@ -31,11 +32,13 @@ msgid "Succeeded"
 msgstr "Existosa"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:238 ../client/pk-console.c:405
+#: ../client/pk-console.c:238
+#: ../client/pk-console.c:405
 msgid "True"
 msgstr "Verdadero"
 
-#: ../client/pk-console.c:238 ../client/pk-console.c:405
+#: ../client/pk-console.c:238
+#: ../client/pk-console.c:405
 msgid "False"
 msgstr "Falso"
 
@@ -93,7 +96,8 @@ msgstr "Tipo"
 
 #. TRANSLATORS: this is any summary text describing the upgrade
 #. TRANSLATORS: this is the summary of the group
-#: ../client/pk-console.c:301 ../client/pk-console.c:324
+#: ../client/pk-console.c:301
+#: ../client/pk-console.c:324
 msgid "Summary"
 msgstr "Resúmen"
 
@@ -187,7 +191,8 @@ msgstr "Emitido"
 msgid "Updated"
 msgstr "Actualizado"
 
-#: ../client/pk-console.c:476 ../client/pk-console.c:478
+#: ../client/pk-console.c:476
+#: ../client/pk-console.c:478
 msgid "Percentage"
 msgstr "Porcentaje"
 
@@ -238,16 +243,20 @@ msgid "The package %s could not be installed: %s"
 msgstr "El paquete %s no se pudo instalar: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:724 ../client/pk-console.c:751
-#: ../client/pk-console.c:847 ../client/pk-console.c:964
-#: ../client/pk-tools-common.c:62 ../client/pk-tools-common.c:81
+#: ../client/pk-console.c:724
+#: ../client/pk-console.c:751
+#: ../client/pk-console.c:847
+#: ../client/pk-console.c:964
+#: ../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 "Error interno: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:732 ../client/pk-console.c:1360
+#: ../client/pk-console.c:732
+#: ../client/pk-console.c:1360
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Esta herramienta no pudo instalar los paquetes: %s"
@@ -265,7 +274,8 @@ msgid "This tool could not remove %s: %s"
 msgstr "Esta herramienta no pudo eliminar %s: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:838 ../client/pk-console.c:876
+#: ../client/pk-console.c:838
+#: ../client/pk-console.c:876
 #: ../client/pk-console.c:909
 #, c-format
 msgid "This tool could not remove the packages: %s"
@@ -290,9 +300,7 @@ msgstr "¡La eliminación de paquetes fue cancelada!"
 #: ../client/pk-console.c:941
 #, c-format
 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 fue "
-"encontrado"
+msgstr "Esta herramienta no pudo descargar el paquete %s debido a que no fue encontrado"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
 #: ../client/pk-console.c:972
@@ -301,25 +309,29 @@ msgid "This tool could not download the packages: %s"
 msgstr "Esta herramienta no pudo descargar los paquetes: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:999 ../client/pk-console.c:1008
+#: ../client/pk-console.c:999
+#: ../client/pk-console.c:1008
 #, c-format
 msgid "This tool could not update %s: %s"
 msgstr "Esta herramienta no pudo actualizar %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1030 ../client/pk-console.c:1038
+#: ../client/pk-console.c:1030
+#: ../client/pk-console.c:1038
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "Esta herramienta no pudo obtener los requerimientos de %s: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1060 ../client/pk-console.c:1068
+#: ../client/pk-console.c:1060
+#: ../client/pk-console.c:1068
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "Esta herramienta no pudo obtener las dependencias de %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1090 ../client/pk-console.c:1098
+#: ../client/pk-console.c:1090
+#: ../client/pk-console.c:1098
 #, c-format
 msgid "This tool could not get package details for %s: %s"
 msgstr "Esta herramienta no pudo obtener los detalles del paquete %s: %s"
@@ -343,13 +355,15 @@ msgid "File already exists: %s"
 msgstr "El archivo ya existe: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1155 ../client/pk-console.c:1211
+#: ../client/pk-console.c:1155
+#: ../client/pk-console.c:1211
 #: ../client/pk-console.c:1286
 msgid "Getting package list"
 msgstr "Obteniendo la lista de paquetes"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1161 ../client/pk-console.c:1217
+#: ../client/pk-console.c:1161
+#: ../client/pk-console.c:1217
 #: ../client/pk-console.c:1292
 #, c-format
 msgid "This tool could not get package list: %s"
@@ -361,7 +375,8 @@ msgid "Failed to save to disk"
 msgstr "Falló al guardar en el disco"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1206 ../client/pk-console.c:1281
+#: ../client/pk-console.c:1206
+#: ../client/pk-console.c:1281
 #, c-format
 msgid "File does not exist: %s"
 msgstr "El archivo no existe: %s"
@@ -410,15 +425,13 @@ msgstr "Instalando paquetes"
 #: ../client/pk-console.c:1389
 #, c-format
 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"
+msgstr "Esta herramienta no pudo encontrar los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
 #: ../client/pk-console.c:1397
 #, c-format
 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"
+msgstr "Esta herramienta no pudo obtener los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
 #: ../client/pk-console.c:1443
@@ -487,18 +500,21 @@ msgstr "Subcomandos:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1757 ../client/pk-generate-pack.c:185
+#: ../client/pk-console.c:1757
+#: ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
 #: ../contrib/command-not-found/pk-command-not-found.c:510
 #: ../contrib/app-install/pk-app-install-add.c:130
 #: ../contrib/app-install/pk-app-install-create.c:48
 #: ../contrib/app-install/pk-app-install-generate.c:392
-#: ../contrib/app-install/pk-app-install-remove.c:105 ../src/pk-main.c:199
+#: ../contrib/app-install/pk-app-install-remove.c:105
+#: ../src/pk-main.c:199
 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:1760 ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1760
+#: ../client/pk-monitor.c:127
 msgid "Show the program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
@@ -528,8 +544,10 @@ 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:1904 ../client/pk-console.c:1912
-#: ../client/pk-console.c:1920 ../client/pk-console.c:1928
+#: ../client/pk-console.c:1904
+#: ../client/pk-console.c:1912
+#: ../client/pk-console.c:1920
+#: ../client/pk-console.c:1928
 msgid "A search term is required"
 msgstr "Se necesita un término de búsqueda"
 
@@ -555,11 +573,8 @@ msgstr "Necesita dar un nombre de paquete a eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
 #: ../client/pk-console.c:1963
-msgid ""
-"A destination directory and then the package names to download are required"
-msgstr ""
-"Debe especificar el directorio destino y luego los nombres paquetes a "
-"descargar"
+msgid "A destination directory and then the package names to download are required"
+msgstr "Debe especificar el directorio destino y luego los nombres paquetes a descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
 #: ../client/pk-console.c:1969
@@ -582,7 +597,8 @@ msgid "A package name to resolve is required"
 msgstr "Se necesita un nombre de paquete a resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2009 ../client/pk-console.c:2017
+#: ../client/pk-console.c:2009
+#: ../client/pk-console.c:2017
 msgid "A repository name is required"
 msgstr "Se necesita un nombre de repositorio"
 
@@ -608,9 +624,12 @@ msgstr "Falló al obtener la hora de la última vez que se completó esta acció
 
 #. 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:2059 ../client/pk-console.c:2070
-#: ../client/pk-console.c:2078 ../client/pk-console.c:2094
-#: ../client/pk-console.c:2102 ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:2059
+#: ../client/pk-console.c:2070
+#: ../client/pk-console.c:2078
+#: ../client/pk-console.c:2094
+#: ../client/pk-console.c:2102
+#: ../client/pk-generate-pack.c:241
 msgid "A package name is required"
 msgstr "Se necesita un nombre de paquete"
 
@@ -625,7 +644,8 @@ msgid "A list file name to create is required"
 msgstr "Se necesita un nombre de archivo de la lista"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2119 ../client/pk-console.c:2128
+#: ../client/pk-console.c:2119
+#: ../client/pk-console.c:2128
 msgid "A list file to open is required"
 msgstr "Se necesita un archivo de lista a abrir"
 
@@ -667,10 +687,8 @@ msgstr "Ponga el nombre del archivo de dependencias a excluir"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:191
-msgid ""
-"The output file or directory (the current directory is used if ommitted)"
-msgstr ""
-"El directorio o archivo de salida (el directorio actual se usará si se omite)"
+msgid "The output file or directory (the current directory is used if ommitted)"
+msgstr "El directorio o archivo de salida (el directorio actual se usará si se omite)"
 
 #. TRANSLATORS: put a list of packages in the pack
 #: ../client/pk-generate-pack.c:194
@@ -699,16 +717,15 @@ msgstr "Se necesita un directorio o nombre de archivo de salida"
 
 #. 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:267
+#: ../client/pk-generate-pack.c:273
 msgid "The package manager cannot perform this type of operation."
 msgstr "El administrador de paquetes no puede realizar este tipo de operación."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
 #: ../client/pk-generate-pack.c:285
 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:301
@@ -911,14 +928,14 @@ msgstr "Instalando..."
 #: ../contrib/app-install/pk-app-install-generate.c:395
 #: ../contrib/app-install/pk-app-install-remove.c:108
 msgid "Main cache file to use (if not specififed, default is used)"
-msgstr "Archivo caché principal para usar (si no se especifica, se usa el que esta por defecto)"
+msgstr "Archivo caché principal a usar (si no se especifica, se usará el predeterminado)"
 
 #. TRANSLATORS: the source database, typically used for adding
 #. TRANSLATORS: the applicationdir database, typically used for adding
 #: ../contrib/app-install/pk-app-install-add.c:136
 #: ../contrib/app-install/pk-app-install-generate.c:398
 msgid "Source cache file to add to the main database"
-msgstr "Archivo caché fuente para añadir a la base de datos principal"
+msgstr "Archivo caché fuente para agregar a la base de datos principal"
 
 #. TRANSLATORS: the icon directory
 #. TRANSLATORS: the output directory
@@ -928,7 +945,7 @@ msgstr "Archivo caché fuente para añadir a la base de datos principal"
 #: ../contrib/app-install/pk-app-install-generate.c:404
 #: ../contrib/app-install/pk-app-install-remove.c:111
 msgid "Icon directory"
-msgstr "Directorio de íconos"
+msgstr "Directorio de Iconos"
 
 #. TRANSLATORS: the repo of the software source, e.g. fedora
 #. TRANSLATORS: the repo of the software applicationdir, e.g. fedora
@@ -937,7 +954,7 @@ msgstr "Directorio de íconos"
 #: ../contrib/app-install/pk-app-install-generate.c:407
 #: ../contrib/app-install/pk-app-install-remove.c:114
 msgid "Name of the remote repo"
-msgstr "Nombre del repositorio remoto"
+msgstr "Nombre del repo remoto"
 
 #. TRANSLATORS: tool that gets called when the command is not found
 #: ../contrib/app-install/pk-app-install-add.c:153
@@ -945,12 +962,12 @@ msgstr "Nombre del repositorio remoto"
 #: ../contrib/app-install/pk-app-install-generate.c:418
 #: ../contrib/app-install/pk-app-install-remove.c:125
 msgid "PackageKit Application Database Installer"
-msgstr "Instalador de Base de Datos de Aplicaciones de PackageKit"
+msgstr "Instalador de la Base de Datos de Aplicaciones de PackageKit"
 
 #. TRANSLATORS: if we are specifing a out-of-tree database
 #: ../contrib/app-install/pk-app-install-create.c:51
 msgid "Main database file to use (if not specififed, default is used)"
-msgstr "Archivo de base de datos principal para usar (si no se especifica, se usa el por defecto)"
+msgstr "Base de datos principal a usar (si no se especifica se usará el predeterminado)"
 
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
@@ -981,12 +998,8 @@ msgstr "El usuario correcto no esta lanzando el ejecutable (usualmente 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:193
@@ -1036,43 +1049,30 @@ msgstr "Error intentando arrancar: %s\n"
 
 #~ 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 or file to install"
 #~ msgstr "Debe especificar un paquete o archivo a instalar"
-
 #~ 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 "Failed to get last time"
 #~ msgstr "Fállo al obtener última hora"
-
 #~ 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 create"
 #~ msgstr "Debe especificar un archivo de lista a crear"
-
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Debe especificar un archivo de lista a abrir"
-
 #~ msgid "Accept EULA"
 #~ msgstr "Aceptar EULA"
-
 #~ msgid "Authentication is required to accept a EULA"
 #~ msgstr "Se requiere autenticación para aceptar una EULA"
 
@@ -1083,7 +1083,6 @@ msgstr "Error intentando arrancar: %s\n"
 #~ msgstr ""
 #~ "Se requiere autenticación para cambiar los parametros de fuente de "
 #~ "software"
-
 #~ msgid "Authentication is required to change software source parameters"
 #~ msgstr ""
 #~ "Se requiere autenticación para cambiar los parametros de fuente de "
@@ -1106,10 +1105,8 @@ msgstr "Error intentando arrancar: %s\n"
 #, fuzzy
 #~ msgid "Authentication is required to refresh the system sources"
 #~ msgstr "Se requiere autenticación para refrescar la lista de paquetes"
-
 #~ msgid "Authentication is required to remove packages"
 #~ msgstr "Se requiere autenticación para eliminar paquetes"
-
 #~ msgid "Authentication is required to rollback a transaction"
 #~ msgstr "Se requiere autenticación para deshacer una transaccion"
 
@@ -1118,10 +1115,8 @@ msgstr "Error intentando arrancar: %s\n"
 #~ "Authentication is required to set the network proxy used for downloading "
 #~ "packages"
 #~ msgstr "Se requiere autenticación para eliminar paquetes"
-
 #~ msgid "Authentication is required to update packages"
 #~ msgstr "Se requiere autenticación para actualizar paquetes"
-
 #~ msgid "Change software source parameters"
 #~ msgstr "Cambiar los parametros de fuente de software"
 
@@ -1132,150 +1127,114 @@ msgstr "Error intentando arrancar: %s\n"
 #, fuzzy
 #~ msgid "Install untrusted local file"
 #~ msgstr "Instalar archivo local"
-
 #~ msgid "Remove package"
 #~ msgstr "Eliminar paquete"
-
 #~ msgid "Rollback to a previous transaction"
 #~ msgstr "Deshacer hasta una transaccion previa"
 
 #, fuzzy
 #~ msgid "Update packages"
 #~ msgstr "Actualizar paquete"
-
 #~ 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 "Cancelled!"
 #~ msgstr "Cancelado!"
-
 #~ 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 "
-
 #~ msgid "Could not find a package match"
 #~ msgstr "No se pudo encontrar un paquete coincidente"
 
 #, 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 "Refresh package lists"
 #~ msgstr "Refrescar lista de paquetes"
-
 #~ 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 83bf4f35ffa9e198e6aaf7e93bb60236953f5960
Author: Xavier Conde <xavi.conde at gmail.com>
Date:   Sun Mar 8 16:40:02 2009 +0000

    Updated catalan po
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/ca.po b/po/ca.po
index ae3d022..8e917bf 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -21,754 +21,1173 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-24 01:31+0000\n"
-"PO-Revision-Date: 2008-12-14 20:57+0100\n"
-"Last-Translator: Agustí Grau <fletxa at gmail.com>\n"
+"POT-Creation-Date: 2009-03-03 02:18+0000\n"
+"PO-Revision-Date: 2009-03-07 08:46+0100\n"
+"Last-Translator: Pau Iranzo <pau at somgnu.cat>\n"
 "Language-Team: Catalan <fedora at softcatala.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+#. TRANSLATORS: this is an atomic transaction
+#: ../client/pk-console.c:230
+msgid "Transaction"
+msgstr "Transacció"
+
+#. TRANSLATORS: this is the time the transaction was started in system timezone
+#: ../client/pk-console.c:232
+msgid "System time"
+msgstr "Temps del sistema"
+
+#. TRANSLATORS: this is if the transaction succeeded or not
+#: ../client/pk-console.c:234
+msgid "Succeeded"
+msgstr "Fet"
+
+#. TRANSLATORS: if the repo is enabled
+#: ../client/pk-console.c:234 ../client/pk-console.c:401
+msgid "True"
+msgstr "Cert"
+
+#: ../client/pk-console.c:234 ../client/pk-console.c:401
+msgid "False"
+msgstr "Fals"
+
+#. TRANSLATORS: this is the transactions role, e.g. "update-system"
+#: ../client/pk-console.c:236
+msgid "Role"
+msgstr "Rol"
+
+#. TRANSLATORS: this is The duration of the transaction
+#: ../client/pk-console.c:241
+msgid "Duration"
+msgstr "Durada"
+
+#: ../client/pk-console.c:241
+msgid "(seconds)"
+msgstr "(segons)"
+
+#. TRANSLATORS: this is The command line used to do the action
+#: ../client/pk-console.c:245
+msgid "Command line"
+msgstr "Línia d'ordres"
+
+#. TRANSLATORS: this is the user ID of the user that started the action
+#: ../client/pk-console.c:247
+msgid "User ID"
+msgstr "ID d'usuari"
+
+#. TRANSLATORS: this is the username, e.g. hughsie
+#: ../client/pk-console.c:254
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
+#: ../client/pk-console.c:258
+msgid "Real name"
+msgstr "Nom real"
+
+#: ../client/pk-console.c:266
+msgid "Affected packages:"
+msgstr "Paquets afectats:"
+
+#: ../client/pk-console.c:268
+msgid "Affected packages: None"
+msgstr "Paquets afectats: cap"
+
+#. TRANSLATORS: this is the distro, e.g. Fedora 10
+#: ../client/pk-console.c:293
+msgid "Distribution"
+msgstr "Distribució"
+
+#. TRANSLATORS: this is type of update, stable or testing
+#: ../client/pk-console.c:295
+msgid "Type"
+msgstr "Tipus"
+
+#. TRANSLATORS: this is any summary text describing the upgrade
+#. TRANSLATORS: this is the summary of the group
+#: ../client/pk-console.c:297 ../client/pk-console.c:320
+msgid "Summary"
+msgstr "Resum"
+
+#. TRANSLATORS: this is the group category name
+#: ../client/pk-console.c:309
+msgid "Category"
+msgstr "Categoria"
+
+#. TRANSLATORS: this is group identifier
+#: ../client/pk-console.c:311
+msgid "ID"
+msgstr "ID"
+
+#. TRANSLATORS: this is the parent group
+#: ../client/pk-console.c:314
+msgid "Parent"
+msgstr "Pare"
+
+#. TRANSLATORS: this is the name of the parent group
+#: ../client/pk-console.c:317
+msgid "Name"
+msgstr "Nom"
+
+#. TRANSLATORS: this is preferred icon for the group
+#: ../client/pk-console.c:323
+msgid "Icon"
+msgstr "Icona"
+
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:287
+#: ../client/pk-console.c:338
 msgid "Details about the update:"
 msgstr "Detalls quant a l'actualització:"
 
-#: ../client/pk-console.c:480
+#. TRANSLATORS: details about the update, package name and version
+#: ../client/pk-console.c:340
+msgid "Package"
+msgstr "Paquet"
+
+#. TRANSLATORS: details about the update, any packages that this update updates
+#: ../client/pk-console.c:343
+msgid "Updates"
+msgstr "Actualitzacions"
+
+#. TRANSLATORS: details about the update, any packages that this update obsoletes
+#: ../client/pk-console.c:347
+msgid "Obsoletes"
+msgstr "Obsolets"
+
+#. TRANSLATORS: details about the update, the vendor URLs
+#: ../client/pk-console.c:351
+msgid "Vendor"
+msgstr "Proveïdor"
+
+#. TRANSLATORS: details about the update, the bugzilla URLs
+#: ../client/pk-console.c:355
+msgid "Bugzilla"
+msgstr "Bugzilla"
+
+#. TRANSLATORS: details about the update, the CVE URLs
+#: ../client/pk-console.c:359
+msgid "CVE"
+msgstr "CVE"
+
+#. TRANSLATORS: details about the update, if the package requires a restart
+#: ../client/pk-console.c:363
+msgid "Restart"
+msgstr "Reinicia"
+
+#. TRANSLATORS: details about the update, any description of the update
+#: ../client/pk-console.c:367
+msgid "Update text"
+msgstr "Actualitza el text"
+
+#. TRANSLATORS: details about the update, the changelog for the package
+#: ../client/pk-console.c:371
+msgid "Changes"
+msgstr "Canvis"
+
+#. TRANSLATORS: details about the update, the ongoing state of the update
+#: ../client/pk-console.c:375
+msgid "State"
+msgstr "Estat"
+
+#. TRANSLATORS: details about the update, date the update was issued
+#: ../client/pk-console.c:380
+msgid "Issued"
+msgstr "Emès"
+
+#. TRANSLATORS: details about the update, date the update was updated
+#: ../client/pk-console.c:385
+msgid "Updated"
+msgstr "Actualitzat"
+
+#: ../client/pk-console.c:472 ../client/pk-console.c:474
+msgid "Percentage"
+msgstr "Percentatge"
+
+#: ../client/pk-console.c:474
+msgid "Unknown"
+msgstr "Desconegut"
+
+#. TRANSLATORS: a package requires the system to be restarted
+#: ../client/pk-console.c:525
+msgid "System restart required by:"
+msgstr "Es requereix reiniciar el sistema per:"
+
+#. TRANSLATORS: a package requires the session to be restarted
+#: ../client/pk-console.c:528
+msgid "Session restart required:"
+msgstr "Es requereix reiniciar la sessió:"
+
+#. TRANSLATORS: a package requires the application to be restarted
+#: ../client/pk-console.c:531
+msgid "Application restart required by:"
+msgstr "Es requereix reiniciar l'aplicació per:"
+
+#. TRANSLATORS: a package needs to restart they system
+#: ../client/pk-console.c:568
 msgid "Please restart the computer to complete the update."
 msgstr "Reinicieu l'ordinador per completar l'actualització."
 
-#: ../client/pk-console.c:482
+#. TRANSLATORS: a package needs to restart the session
+#: ../client/pk-console.c:571
 msgid "Please logout and login to complete the update."
 msgstr "Sortiu i torneu a entrar per completar l'actualització."
 
-#: ../client/pk-console.c:484
+#. TRANSLATORS: a package needs to restart the application
+#: ../client/pk-console.c:574
 msgid "Please restart the application as it is being used."
 msgstr "Cal que reinicieu l'aplicació perquè s'està fent servir."
 
 #. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:596
+#: ../client/pk-console.c:687
 #, c-format
 msgid "The package %s is already installed"
 msgstr "El paquet %s ja està instal·lat"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:604
+#: ../client/pk-console.c:695
 #, c-format
 msgid "The package %s could not be installed: %s"
 msgstr "El paquet %s no s'ha pogut instal·lar: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:629
-#: ../client/pk-console.c:656
-#: ../client/pk-console.c:752
-#: ../client/pk-console.c:869
-#: ../client/pk-tools-common.c:61
-#: ../client/pk-tools-common.c:79
-#: ../client/pk-tools-common.c:86
+#: ../client/pk-console.c:720 ../client/pk-console.c:747
+#: ../client/pk-console.c:843 ../client/pk-console.c:960
+#: ../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 "Error intern: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:637
-#: ../client/pk-console.c:1264
+#: ../client/pk-console.c:728 ../client/pk-console.c:1356
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "No s'ha pogut instal·lar els paquets: %s"
 
 #. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:664
+#: ../client/pk-console.c:755
 #, c-format
 msgid "This tool could not install the files: %s"
 msgstr "No s'ha pogut instal·lar els fitxers: %s"
 
 #. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:720
+#: ../client/pk-console.c:811
 #, c-format
 msgid "This tool could not remove %s: %s"
 msgstr "No s'ha pogut esborrar %s: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:743
-#: ../client/pk-console.c:781
-#: ../client/pk-console.c:814
+#: ../client/pk-console.c:834 ../client/pk-console.c:872
+#: ../client/pk-console.c:905
 #, c-format
 msgid "This tool could not remove the packages: %s"
 msgstr "No s'han pogut esborrar els paquets: %s"
 
 #. TRANSLATORS: When removing, we might have to remove other dependencies
-#: ../client/pk-console.c:793
+#: ../client/pk-console.c:884
 msgid "The following packages have to be removed:"
 msgstr "Els següents paquets s'han d'esborrar:"
 
 #. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:800
+#: ../client/pk-console.c:891
 msgid "Proceed removing additional packages?"
 msgstr "Voleu esborrar paquets adicionals?"
 
 #. TRANSLATORS: We did not remove any packages
-#: ../client/pk-console.c:805
+#: ../client/pk-console.c:896
 msgid "The package removal was canceled!"
 msgstr "L'esborrament dels paquets s'ha cancel·lat!"
 
 #. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:846
+#: ../client/pk-console.c:937
 #, c-format
 msgid "This tool could not download the package %s as it could not be found"
 msgstr "No s'ha pogut baixar el paquet %s perquè no s'ha trobat"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:877
+#: ../client/pk-console.c:968
 #, c-format
 msgid "This tool could not download the packages: %s"
 msgstr "No s'han pogut baixar els paquets: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:904
-#: ../client/pk-console.c:913
+#: ../client/pk-console.c:995 ../client/pk-console.c:1004
 #, c-format
 msgid "This tool could not update %s: %s"
 msgstr "No s'ha pogut actualitzar %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:935
-#: ../client/pk-console.c:943
+#: ../client/pk-console.c:1026 ../client/pk-console.c:1034
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "No s'han pogut obtenir els requeriments per a %s: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:965
-#: ../client/pk-console.c:973
+#: ../client/pk-console.c:1056 ../client/pk-console.c:1064
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "No s'han pogut obtenir les dependències per a %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:995
-#: ../client/pk-console.c:1003
+#: ../client/pk-console.c:1086 ../client/pk-console.c:1094
 #, c-format
 msgid "This tool could not get package details for %s: %s"
 msgstr "No s'ha pogut obtenir els detalls del paquet %s: %s"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1025
+#: ../client/pk-console.c:1116
 #, c-format
 msgid "This tool could not find the files for %s: %s"
 msgstr "No s'han pogut trobar els fitxers %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1033
+#: ../client/pk-console.c:1124
 #, c-format
 msgid "This tool could not get the file list for %s: %s"
 msgstr "No s'ha pogut obtenir la llista de fitxers per a %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1055
+#: ../client/pk-console.c:1146
 #, c-format
 msgid "File already exists: %s"
 msgstr "El fitxer ja existeix: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1060
-#: ../client/pk-console.c:1116
-#: ../client/pk-console.c:1191
+#: ../client/pk-console.c:1151 ../client/pk-console.c:1207
+#: ../client/pk-console.c:1282
 msgid "Getting package list"
 msgstr "S'està obtenint la llista de paquets"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1066
-#: ../client/pk-console.c:1122
-#: ../client/pk-console.c:1197
+#: ../client/pk-console.c:1157 ../client/pk-console.c:1213
+#: ../client/pk-console.c:1288
 #, c-format
 msgid "This tool could not get package list: %s"
 msgstr "No s'ha pogut obtenir la llista de paquets: %s"
 
 #. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1077
+#: ../client/pk-console.c:1168
 msgid "Failed to save to disk"
 msgstr "S'ha produït un error en desar al disc"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1111
-#: ../client/pk-console.c:1186
+#: ../client/pk-console.c:1202 ../client/pk-console.c:1277
 #, c-format
 msgid "File does not exist: %s"
 msgstr "El fitxer no existeix: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1143
+#: ../client/pk-console.c:1234
 msgid "Packages to add"
 msgstr "Paquets a afegir"
 
 #. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1151
+#: ../client/pk-console.c:1242
 msgid "Packages to remove"
 msgstr "Paquets a esborrar"
 
 #. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1219
+#: ../client/pk-console.c:1310
 msgid "No new packages need to be installed"
 msgstr "No és necessari instal·lar paquets nous"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1225
+#: ../client/pk-console.c:1316
 msgid "To install"
 msgstr "Per a instal·lar"
 
 #. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1236
+#: ../client/pk-console.c:1328
 msgid "Searching for package: "
 msgstr "S'està cercant el paquet:"
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1240
+#: ../client/pk-console.c:1332
 msgid "not found."
 msgstr "no s'ha trobat."
 
 #. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1251
+#: ../client/pk-console.c:1343
 msgid "No packages can be found to install"
 msgstr "No s'han trobat paquets per a instal·lar"
 
 #. TRANSLATORS: installing new packages from package list
-#: ../client/pk-console.c:1257
+#: ../client/pk-console.c:1349
 msgid "Installing packages"
 msgstr "S'estan instal·lant els paquets"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1293
+#: ../client/pk-console.c:1385
 #, c-format
 msgid "This tool could not find the update details for %s: %s"
 msgstr "No s'han trobat els detalls per a actualitzar %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1301
+#: ../client/pk-console.c:1393
 #, c-format
 msgid "This tool could not get the update details for %s: %s"
 msgstr "No s'han pogut obtenir els detalls per a actualitzar %s: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1347
+#: ../client/pk-console.c:1439
 msgid "Error:"
 msgstr "S'ha produït un error:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1361
+#: ../client/pk-console.c:1453
 msgid "Package description"
 msgstr "Descripció del paquet"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1394
+#: ../client/pk-console.c:1487
 msgid "Package files"
 msgstr "Fitxers del paquet"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1403
+#: ../client/pk-console.c:1495
 msgid "No files"
 msgstr "Sense fitxers"
 
 #. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1426
+#: ../client/pk-console.c:1518
 msgid "Repository signature required"
 msgstr "Es requereix la firma del repositori"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1436
+#: ../client/pk-console.c:1528
 msgid "Do you accept this signature?"
 msgstr "Accepteu aquesta firma?"
 
 #. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1440
+#: ../client/pk-console.c:1532
 msgid "The signature was not accepted."
 msgstr "No s'ha acceptat la firma."
 
 #. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1474
+#: ../client/pk-console.c:1566
 msgid "End user license agreement required"
 msgstr "Es requeriex l'acord de llicència d'usuari final"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1481
+#: ../client/pk-console.c:1573
 msgid "Do you agree to this license?"
 msgstr "Esteu d'acord amb aquesta llicència?"
 
 #. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1485
+#: ../client/pk-console.c:1577
 msgid "The license was refused."
 msgstr "La llicència s'ha rebutjat."
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1514
+#: ../client/pk-console.c:1606
 msgid "The daemon crashed mid-transaction!"
 msgstr "Ha fallat el dimoni durant una transacció."
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1567
+#: ../client/pk-console.c:1659
 msgid "PackageKit Console Interface"
 msgstr "Interfície de consola de PackageKit"
 
-#: ../client/pk-console.c:1567
+#. these are commands we can use with pkcon
+#: ../client/pk-console.c:1661
 msgid "Subcommands:"
 msgstr "Subordres:"
 
-#: ../client/pk-console.c:1658
-#: ../client/pk-generate-pack.c:184
-#: ../client/pk-monitor.c:115
-#: ../src/pk-main.c:191
+#. TRANSLATORS: command line argument, if we should show debugging information
+#. TRANSLATORS: if we should show debugging data
+#: ../client/pk-console.c:1753 ../client/pk-generate-pack.c:185
+#: ../client/pk-monitor.c:125
+#: ../contrib/command-not-found/pk-command-not-found.c:510
+#: ../contrib/app-install/pk-app-install-add.c:244
+#: ../contrib/app-install/pk-app-install-create.c:48
+#: ../contrib/app-install/pk-app-install-generate.c:244
+#: ../contrib/app-install/pk-app-install-remove.c:87 ../src/pk-main.c:199
 msgid "Show extra debugging information"
 msgstr "Mostra informació extra de depuració"
 
-#: ../client/pk-console.c:1660
-#: ../client/pk-monitor.c:117
+#. TRANSLATORS: command line argument, just show the version string
+#: ../client/pk-console.c:1756 ../client/pk-monitor.c:127
 msgid "Show the program version and exit"
 msgstr "Mostra la versió de l'aplicació i surt"
 
-#: ../client/pk-console.c:1662
+#. TRANSLATORS: command line argument, use a filter to narrow down results
+#: ../client/pk-console.c:1759
 msgid "Set the filter, e.g. installed"
 msgstr "Configura el filtre, p.e. instal·lats"
 
-#: ../client/pk-console.c:1664
+#. TRANSLATORS: command line argument, work asynchronously
+#: ../client/pk-console.c:1762
 msgid "Exit without waiting for actions to complete"
 msgstr "Surt sense esperar que les accions es completin"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1691
+#: ../client/pk-console.c:1789
 msgid "This tool could not connect to system DBUS."
 msgstr "No s'ha pogut connectar amb el sistema DBUS."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1776
+#: ../client/pk-console.c:1876
 msgid "The filter specified was invalid"
 msgstr "El filtre especificat era invàlid"
 
-#: ../client/pk-console.c:1793
-msgid "You need to specify a search type, e.g. name"
-msgstr "Us cal especificar un tipus de cerca, p.e. per nom"
+#. TRANSLATORS: a search type can be name, details, file, etc
+#: ../client/pk-console.c:1894
+msgid "A search type is required, e.g. name"
+msgstr "Es requreix un mot de cerca, p.e. nom"
 
-#: ../client/pk-console.c:1798
-#: ../client/pk-console.c:1805
-#: ../client/pk-console.c:1812
-#: ../client/pk-console.c:1819
-#: ../client/pk-console.c:1930
-#: ../client/pk-console.c:1940
-#: ../client/pk-console.c:1947
-#: ../client/pk-console.c:1954
-msgid "You need to specify a search term"
-msgstr "us cal especificar un terme de cerca"
+#. TRANSLATORS: the user needs to provide a search term
+#: ../client/pk-console.c:1900 ../client/pk-console.c:1908
+#: ../client/pk-console.c:1916 ../client/pk-console.c:1924
+msgid "A search term is required"
+msgstr "Es requereix un terme de cerca"
 
-#: ../client/pk-console.c:1824
+#. TRANSLATORS: the search type was provided, but invalid
+#: ../client/pk-console.c:1930
 msgid "Invalid search type"
 msgstr "Tipus de cerca invàlida"
 
-#: ../client/pk-console.c:1829
-msgid "You need to specify a package or file to install"
-msgstr "Us cal especificar un paquet o fitxer per a instal·lar"
+#. TRANSLATORS: the user did not specify what they wanted to install
+#: ../client/pk-console.c:1936
+msgid "A package name or filename to install is required"
+msgstr "Es requreix un nom de paquet o fitxer per instal·lar"
 
-#: ../client/pk-console.c:1836
-msgid "You need to specify a type, key_id and package_id"
-msgstr "Us especifcar un tipus, un key_id o un package_id"
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1944
+msgid "A type, key_id and package_id are required"
+msgstr "Es requereixen un tipus, una clau_id i un paquet_id"
 
-#: ../client/pk-console.c:1843
-msgid "You need to specify a package to remove"
-msgstr "Us cal especificar un paquet per a esborrar"
+#. TRANSLATORS: the user did not specify what they wanted to remove
+#: ../client/pk-console.c:1952
+msgid "A package name to remove is required"
+msgstr "Es requereix un nom de paquet per eliminar"
 
-#: ../client/pk-console.c:1849
-msgid "You need to specify the destination directory and then the packages to download"
-msgstr "Us cal especificar el directori destí i, llavors, els paquets a descarregar"
+#. TRANSLATORS: the user did not specify anything about what to download or where
+#: ../client/pk-console.c:1959
+msgid ""
+"A destination directory and then the package names to download are required"
+msgstr ""
+"Us cal especificar el directori destí i els noms des paquets per a descarregar"
 
-#: ../client/pk-console.c:1854
+#. TRANSLATORS: the directory does not exist, so we can't continue
+#: ../client/pk-console.c:1965
 msgid "Directory not found"
 msgstr "No s'ha trobar el directori"
 
-#: ../client/pk-console.c:1860
-msgid "You need to specify a licence identifier (eula-id)"
-msgstr "Us cal especificar un identificador de llicència (eula-id)"
-
-#: ../client/pk-console.c:1876
-msgid "You need to specify a package name to resolve"
-msgstr "Us cal especificar el nom d'un paquet per a resoldre"
-
-#: ../client/pk-console.c:1885
-#: ../client/pk-console.c:1892
-msgid "You need to specify a repository name"
-msgstr "Us cal especificar el nom d'un repositori"
-
-#: ../client/pk-console.c:1899
-msgid "You need to specify a repo name/parameter and value"
-msgstr "Us cal especificar el nom o el paràmetre d'un repositori i el seu valor"
-
-#: ../client/pk-console.c:1912
-msgid "You need to specify an action, e.g. 'update-system'"
-msgstr "Us cal especificar una acció, p.e. 'update-system'"
-
-#: ../client/pk-console.c:1917
-msgid "You need to specify a correct role"
-msgstr "Us cal especificar un rol vàlid"
-
-#: ../client/pk-console.c:1922
-msgid "Failed to get last time"
-msgstr "S'ha produït un error en obtenir l'últim cop"
-
-#: ../client/pk-console.c:1961
-msgid "You need to specify a package to find the details for"
-msgstr "Us cal especificar un paquet per a trobar-ne els seus detalls"
-
-#: ../client/pk-console.c:1968
-msgid "You need to specify a package to find the files for"
-msgstr "Us cal especificar un paquet per a trobar-ne els seus fitxers"
-
-#: ../client/pk-console.c:1975
-msgid "You need to specify a list file to create"
-msgstr "Us cal especificar una llista de fitxers a crear"
-
-#: ../client/pk-console.c:1983
-#: ../client/pk-console.c:1991
-msgid "You need to specify a list file to open"
-msgstr "Us cal especificar una llista de fitxers a obrir"
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1972
+msgid "A licence identifier (eula-id) is required"
+msgstr "Es requreix un identificador de llicència (eula-id)"
+
+#. TRANSLATORS: geeky error, 99.9999% of users won't see this
+#: ../client/pk-console.c:1981
+msgid "A transaction identifier (tid) is required"
+msgstr "Es requreix un identificador de transacció (idt)"
+
+#. TRANSLATORS: The user did not specify a package name
+#: ../client/pk-console.c:1997
+msgid "A package name to resolve is required"
+msgstr "Es requereix un nom de paquet per resoldre"
+
+#. TRANSLATORS: The user did not specify a repository (software source) name
+#: ../client/pk-console.c:2005 ../client/pk-console.c:2013
+msgid "A repository name is required"
+msgstr "Es requreix un nom del repositori"
+
+#. TRANSLATORS: The user didn't provide any data
+#: ../client/pk-console.c:2021
+msgid "A repo name, parameter and value are required"
+msgstr "Es requreixen el nom o el paràmetre d'un repositori i el seu valor"
+
+#. TRANSLATORS: The user didn't specify what action to use
+#: ../client/pk-console.c:2034
+msgid "An action, e.g. 'update-system' is required"
+msgstr "Es requereix una acció, p.e. 'update-system'"
+
+#. TRANSLATORS: The user specified an invalid action
+#: ../client/pk-console.c:2040
+msgid "A correct role is required"
+msgstr "Es requereix un rol correcte"
+
+#. TRANSLATORS: we keep a database updated with the time that an action was last executed
+#: ../client/pk-console.c:2046
+msgid "Failed to get the time since this action was last completed"
+msgstr "No s'ha pogut obtenir l'hora des que aquesta acció es va completar per darrera vegada"
+
+#. 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:2055 ../client/pk-console.c:2066
+#: ../client/pk-console.c:2074 ../client/pk-console.c:2090
+#: ../client/pk-console.c:2098 ../client/pk-generate-pack.c:241
+msgid "A package name is required"
+msgstr "Es requreix un nom del paquet"
+
+#. TRANSLATORS: each package "provides" certain things, e.g. mime(gstreamer-decoder-mp3), the user didn't specify it
+#: ../client/pk-console.c:2082
+msgid "A package provide string is required"
+msgstr "Es requreix una cadena de proveïdor de paquet"
+
+#. TRANSLATORS: The user didn't specify a filename to create as a list
+#: ../client/pk-console.c:2106
+msgid "A list file name to create is required"
+msgstr "Es requreix un fitxer de llista per crear"
+
+#. TRANSLATORS: The user didn't specify a filename to open as a list
+#: ../client/pk-console.c:2115 ../client/pk-console.c:2124
+msgid "A list file to open is required"
+msgstr "Es requereix un fitxer de llista per obrir"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2044
+#: ../client/pk-console.c:2177
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "L'opció '%s' no està disponible"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2057
-msgid "You don't have the necessary privileges for this operation"
+#: ../client/pk-console.c:2190
+msgid "Incorrect privileges for this operation"
 msgstr "No teniu els privilegis necessaris per a aquesta operació"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2060
+#: ../client/pk-console.c:2193
 msgid "Command failed"
 msgstr "Ha fallat l'ordre"
 
 #. TRANSLATORS: This is the state of the transaction
-#: ../client/pk-generate-pack.c:100
+#: ../client/pk-generate-pack.c:101
 msgid "Downloading"
 msgstr "S'està descarregant"
 
 #. TRANSLATORS: This is when the main packages are being downloaded
-#: ../client/pk-generate-pack.c:120
+#: ../client/pk-generate-pack.c:121
 msgid "Downloading packages"
 msgstr "S'estàn baixant els paquets"
 
 #. TRANSLATORS: This is when the dependency packages are being downloaded
-#: ../client/pk-generate-pack.c:125
+#: ../client/pk-generate-pack.c:126
 msgid "Downloading dependencies"
 msgstr "S'estàn baixant les dependències"
 
-#: ../client/pk-generate-pack.c:186
+#. TRANSLATORS: we can exclude certain packages (glibc) when we know they'll exist on the target
+#: ../client/pk-generate-pack.c:188
 msgid "Set the file name of dependencies to be excluded"
 msgstr "Configureu els noms dels fitxers de dependències que s'han d'excloure"
 
-#: ../client/pk-generate-pack.c:188
-msgid "The output directory (the current directory is used if ommitted)"
-msgstr "El directori de sortida (per omissió s'utilitzarà el directori actual)"
+#. TRANSLATORS: the output location
+#: ../client/pk-generate-pack.c:191
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
+msgstr ""
+"El directori de sortida (per omissió s'utilitzarà el directori actual)"
 
-#: ../client/pk-generate-pack.c:190
+#. TRANSLATORS: put a list of packages in the pack
+#: ../client/pk-generate-pack.c:194
 msgid "The package to be put into the service pack"
 msgstr "El paquet que s'ha d'incloure en el service pack"
 
-#: ../client/pk-generate-pack.c:192
+#. TRANSLATORS: put all pending updates in the pack
+#: ../client/pk-generate-pack.c:197
 msgid "Put all updates available in the service pack"
 msgstr "Inclou totes les actualitzacions disponibles en el service pack"
 
 #. TRANSLATORS: This is when the user fails to supply the correct arguments
-#: ../client/pk-generate-pack.c:220
+#: ../client/pk-generate-pack.c:225
 msgid "Neither --package or --updates option selected."
 msgstr "Ni l'opció --package ni --updates s'han seleccionat."
 
 #. TRANSLATORS: This is when the user fails to supply just one argument
-#: ../client/pk-generate-pack.c:228
+#: ../client/pk-generate-pack.c:233
 msgid "Both options selected."
 msgstr "S'han seleccionat les dues opcions."
 
+#. TRANSLATORS: This is when the user fails to supply the output
+#: ../client/pk-generate-pack.c:249
+msgid "A output directory or file name is required"
+msgstr "Es requreix un directori de sortida o un nom de fitxer"
+
+#. 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
+msgid "The package manager cannot perform this type of operation."
+msgstr "El gestor de paquets no pot dur a terme aquest tipus d'operació."
+
+#. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
+#: ../client/pk-generate-pack.c:285
+msgid "If specifying a file, the service pack name must end with"
+msgstr "Si s'especifica un fitxer, el nom de paquet de servei ha d'acabar amb"
+
 #. TRANSLATORS: This is when file already exists
-#: ../client/pk-generate-pack.c:261
+#: ../client/pk-generate-pack.c:301
 msgid "A pack with the same name already exists, do you want to overwrite it?"
 msgstr "Ja existeix un paquet amb el mateix nom, desitgeu sobreescriure'l?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
-#: ../client/pk-generate-pack.c:264
+#: ../client/pk-generate-pack.c:304
 msgid "The pack was not overwritten."
 msgstr "No s'ha sobreescrit el paquet"
 
 #. TRANSLATORS: This is when the temporary directory cannot be created, the directory name follows
-#: ../client/pk-generate-pack.c:276
+#: ../client/pk-generate-pack.c:317
 msgid "Failed to create directory:"
 msgstr "Ha fallat la creació del directori:"
 
 #. TRANSLATORS: This is when the list of packages from the remote computer cannot be opened
-#: ../client/pk-generate-pack.c:285
+#: ../client/pk-generate-pack.c:327
 msgid "Failed to open package list."
 msgstr "S'ha produït un error en obrir la llista de paquets."
 
 #. TRANSLATORS: The package name is being matched up to available packages
-#: ../client/pk-generate-pack.c:295
+#: ../client/pk-generate-pack.c:338
 msgid "Finding package name."
 msgstr "S'està cercant el nom del paquet."
 
 #. TRANSLATORS: This is when the package cannot be found in any software source. The detailed error follows
-#: ../client/pk-generate-pack.c:299
+#: ../client/pk-generate-pack.c:342
 #, c-format
 msgid "Failed to find package '%s': %s"
 msgstr "Ha fallat en trobar el paquet '%s': %s"
 
 #. TRANSLATORS: This is telling the user we are in the process of making the pack
-#: ../client/pk-generate-pack.c:315
+#: ../client/pk-generate-pack.c:359
 msgid "Creating service pack..."
 msgstr "S'està creant el service pack..."
 
 #. TRANSLATORS: we succeeded in making the file
-#: ../client/pk-generate-pack.c:322
+#: ../client/pk-generate-pack.c:366
 #, c-format
 msgid "Service pack created '%s'"
 msgstr "S'ha creat el service pack '%s'"
 
 #. TRANSLATORS: we failed to make te file
-#: ../client/pk-generate-pack.c:326
+#: ../client/pk-generate-pack.c:371
 #, c-format
 msgid "Failed to create '%s': %s"
 msgstr "Ha fallat la creació de '%s': %s"
 
-#: ../client/pk-monitor.c:132
+#. TRANSLATORS: this is a program that monitors PackageKit
+#: ../client/pk-monitor.c:143
 msgid "PackageKit Monitor"
 msgstr "Monitor de PackageKit"
 
 #. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:114
+#: ../client/pk-tools-common.c:118
 msgid "The package could not be found"
 msgstr "No s'ha pogut trobar el paquet"
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-tools-common.c:125
+#: ../client/pk-tools-common.c:130
 msgid "More than one package matches:"
 msgstr "S'han trobat més d'un paquet que coincideixen amb:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-tools-common.c:132
+#: ../client/pk-tools-common.c:137
 msgid "Please choose the correct package: "
 msgstr "Escolliu el paquet correcte:"
 
-#: ../client/pk-tools-common.c:158
+#: ../client/pk-tools-common.c:162
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Introduïu un número de l'1 fins al %i:"
 
+#. TRANSLATORS: we failed to find the package, this shouldn't happen
+#: ../contrib/command-not-found/pk-command-not-found.c:361
+msgid "Failed to search for file"
+msgstr "S'ha produït un error en cercar el fitxer"
+
+#. TRANSLATORS: we failed to launch the executable, the error follows
+#: ../contrib/command-not-found/pk-command-not-found.c:485
+msgid "Failed to launch:"
+msgstr "S'ha produït un error en executar:"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/command-not-found/pk-command-not-found.c:526
+msgid "PackageKit Command Not Found"
+msgstr "No s'ha trobat l'ordre al PackageKit"
+
+#. TRANSLATORS: the prefix of all the output telling the user why it's not executing
+#: ../contrib/command-not-found/pk-command-not-found.c:548
+msgid "Command not found."
+msgstr "No s'ha trobat l'ordre."
+
+#. TRANSLATORS: tell the user what we think the command is
+#: ../contrib/command-not-found/pk-command-not-found.c:555
+msgid "Similar command is:"
+msgstr "Una ordre similar és:"
+
+#. TRANSLATORS: Ask the user if we should run the similar command
+#: ../contrib/command-not-found/pk-command-not-found.c:564
+msgid "Run similar command:"
+msgstr "Executa una ordre similar:"
+
+#. TRANSLATORS: show the user a list of commands that they could have meant
+#. TRANSLATORS: show the user a list of commands we could run
+#: ../contrib/command-not-found/pk-command-not-found.c:576
+#: ../contrib/command-not-found/pk-command-not-found.c:585
+msgid "Similar commands are:"
+msgstr "Ordres similars són:"
+
+#. TRANSLATORS: ask the user to choose a file to run
+#: ../contrib/command-not-found/pk-command-not-found.c:592
+msgid "Please choose a command to run"
+msgstr "Trieu una ordre per a executar"
+
+#. TRANSLATORS: tell the user what package provides the command
+#: ../contrib/command-not-found/pk-command-not-found.c:607
+msgid "The package providing this file is:"
+msgstr "El paquet que proveeix aquest fitxer és:"
+
+#. TRANSLATORS: as the user if we want to install a package to provide the command
+#: ../contrib/command-not-found/pk-command-not-found.c:612
+#, c-format
+msgid "Install package '%s' to provide command '%s'?"
+msgstr "Voleu instal·lar el paquet '%s' per proveir l'ordre '%s'?"
+
+#. TRANSLATORS: Show the user a list of packages that provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:633
+msgid "Packages providing this file are:"
+msgstr "Paquets que proveeixen aquest fitxer són:"
+
+#. TRANSLATORS: Show the user a list of packages that they can install to provide this command
+#: ../contrib/command-not-found/pk-command-not-found.c:642
+msgid "Suitable packages are:"
+msgstr "Paquets adequats són:"
+
+#. get selection
+#. TRANSLATORS: ask the user to choose a file to install
+#: ../contrib/command-not-found/pk-command-not-found.c:650
+msgid "Please choose a package to install"
+msgstr "Seleccioneu el paquet a instal·lar"
+
 #. TRANSLATORS: when we are getting data from the daemon
-#: ../contrib/packagekit-plugin/src/contents.cpp:294
+#: ../contrib/browser-plugin/src/contents.cpp:298
 msgid "Getting package information..."
 msgstr "S'està obtenint informació dels paquets..."
 
 #. TRANSLATORS: run an applicaiton
-#: ../contrib/packagekit-plugin/src/contents.cpp:300
+#: ../contrib/browser-plugin/src/contents.cpp:304
 #, c-format
 msgid "Run %s"
 msgstr "Executa %s"
 
 #. TRANSLATORS: show the installed version of a package
-#: ../contrib/packagekit-plugin/src/contents.cpp:306
+#: ../contrib/browser-plugin/src/contents.cpp:310
 msgid "Installed version"
 msgstr "Versió instal·lada"
 
 #. TRANSLATORS: run the application now
-#: ../contrib/packagekit-plugin/src/contents.cpp:314
+#: ../contrib/browser-plugin/src/contents.cpp:318
 #, c-format
 msgid "Run version %s now"
 msgstr "Executa la versió %s ara"
 
-#: ../contrib/packagekit-plugin/src/contents.cpp:320
+#. TRANSLATORS: run the application now
+#: ../contrib/browser-plugin/src/contents.cpp:324
 msgid "Run now"
 msgstr "Executa ara"
 
 #. TRANSLATORS: update to a new version of the package
-#: ../contrib/packagekit-plugin/src/contents.cpp:326
+#: ../contrib/browser-plugin/src/contents.cpp:330
 #, c-format
 msgid "Update to version %s"
 msgstr "Actualitza a la versió %s"
 
 #. TRANSLATORS: To install a package
-#: ../contrib/packagekit-plugin/src/contents.cpp:332
+#: ../contrib/browser-plugin/src/contents.cpp:336
 #, c-format
 msgid "Install %s now"
 msgstr "Instal·la %s ara"
 
 #. TRANSLATORS: the version of the package
-#: ../contrib/packagekit-plugin/src/contents.cpp:335
+#: ../contrib/browser-plugin/src/contents.cpp:339
 msgid "Version"
 msgstr "Versió"
 
 #. TRANSLATORS: noting found, so can't install
-#: ../contrib/packagekit-plugin/src/contents.cpp:340
+#: ../contrib/browser-plugin/src/contents.cpp:344
 msgid "No packages found for your system"
 msgstr "No s'han trobat paquets per al vostre sistema"
 
 #. TRANSLATORS: package is being installed
-#: ../contrib/packagekit-plugin/src/contents.cpp:345
+#: ../contrib/browser-plugin/src/contents.cpp:349
 msgid "Installing..."
 msgstr "S'està instal·lant..."
 
+#. TRANSLATORS: the action is non-localised
+#: ../contrib/app-install/pk-app-install-add.c:247
+#: ../contrib/app-install/pk-app-install-generate.c:247
+msgid "The action, one of 'create', 'add', or 'remove'"
+msgstr "L'acció, una de 'crea', 'afegeix' o 'elimina'"
+
+#. TRANSLATORS: if we are specifing a out-of-tree database
+#: ../contrib/app-install/pk-app-install-add.c:250
+#: ../contrib/app-install/pk-app-install-generate.c:250
+#: ../contrib/app-install/pk-app-install-remove.c:90
+msgid "Main cache file to use (if not specififed, default is used)"
+msgstr "Principal fitxer cau per usar (si no s'especifica, s'utilitza el fitxxer cau per defecte)"
+
+#. TRANSLATORS: the source database, typically used for adding
+#: ../contrib/app-install/pk-app-install-add.c:253
+#: ../contrib/app-install/pk-app-install-generate.c:253
+msgid "Source cache file to add to the main database"
+msgstr "Fitxer cau font per a afegir a la base dedades principal"
+
+#. TRANSLATORS: the icon directory
+#: ../contrib/app-install/pk-app-install-add.c:256
+#: ../contrib/app-install/pk-app-install-generate.c:256
+#: ../contrib/app-install/pk-app-install-remove.c:93
+msgid "Icon directory"
+msgstr "Directori d'icones"
+
+#. TRANSLATORS: the repo of the software source, e.g. fedora
+#: ../contrib/app-install/pk-app-install-add.c:259
+#: ../contrib/app-install/pk-app-install-generate.c:259
+#: ../contrib/app-install/pk-app-install-remove.c:96
+msgid "Name of the remote repo"
+msgstr "Nom del repositori remot"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/app-install/pk-app-install-add.c:270
+#: ../contrib/app-install/pk-app-install-create.c:62
+#: ../contrib/app-install/pk-app-install-generate.c:270
+#: ../contrib/app-install/pk-app-install-remove.c:107
+msgid "PackageKit Application Database Installer"
+msgstr "Aplicació Packagekit d'instal·lació de bases de dades"
+
+#. TRANSLATORS: if we are specifing a out-of-tree database
+#: ../contrib/app-install/pk-app-install-create.c:51
+msgid "Main database file to use (if not specififed, default is used)"
+msgstr "No s'ha pogut usar la base de dades principal (si no s'especifica, s'utilitza la base de dades per defecte)"
+
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
 msgstr "Catàleg de PackageKit"
 
-#: ../data/packagekit-servicepack.xml.in.h:1
-msgid "PackageKit Service Pack"
-msgstr "Service Pack de PackageKit"
-
 #: ../data/packagekit-package-list.xml.in.h:1
 msgid "PackageKit Package List"
 msgstr "Llista de paquets de Packagekit"
 
-#: ../src/pk-main.c:86
-msgid "Startup failed due to security policies on this machine."
-msgstr "Ha fallat l'inici degut a les polítiques de seguretat d'aquest sistema."
+#: ../data/packagekit-servicepack.xml.in.h:1
+msgid "PackageKit Service Pack"
+msgstr "Service Pack de PackageKit"
 
+#. TRANSLATORS: failed due to DBus security
 #: ../src/pk-main.c:87
+msgid "Startup failed due to security policies on this machine."
+msgstr ""
+"Ha fallat l'inici degut a les polítiques de seguretat d'aquest sistema."
+
+#. TRANSLATORS: only two ways this can fail...
+#: ../src/pk-main.c:89
 msgid "This can happen for two reasons:"
 msgstr "Pot succeir per dos motius:"
 
-#: ../src/pk-main.c:88
+#. TRANSLATORS: only allowed to be owned by root
+#: ../src/pk-main.c:91
 msgid "The correct user is not launching the executable (usually root)"
 msgstr "No s'està executant amb l'usuari correcte (normalment l'usuari root)"
 
-#: ../src/pk-main.c:89
-msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
-msgstr "El fitxer org.freedesktop.PackageKit.conf no està instal·lat al directori del sistema:"
+#. 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 fitxer org.freedesktop.PackageKit.conf no està instal·lat al directori "
+"del sistema:"
 
-#: ../src/pk-main.c:187
+#. TRANSLATORS: a backend is the system package tool, e.g. yum, apt
+#: ../src/pk-main.c:193
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Administrador de paquets a usar, p.ex. dummy"
 
-#: ../src/pk-main.c:189
+#. TRANSLATORS: if we should run in the background
+#: ../src/pk-main.c:196
 msgid "Daemonize and detach from the terminal"
 msgstr "Convertir en dimoni i lliurar la finestra de l'intèrpret de comandes"
 
-#: ../src/pk-main.c:193
+#. TRANSLATORS: if we should not monitor how long we are inactive for
+#: ../src/pk-main.c:202
 msgid "Disable the idle timer"
 msgstr "Inhabilita el temporitzador de repós"
 
-#: ../src/pk-main.c:195
+#. TRANSLATORS: show version
+#: ../src/pk-main.c:205
 msgid "Show version and exit"
 msgstr "Mostra la versió i surt"
 
-#: ../src/pk-main.c:197
+#. TRANSLATORS: exit after we've started up, used for user profiling
+#: ../src/pk-main.c:208
 msgid "Exit after a small delay"
 msgstr "Surt després de un petit retràs"
 
-#: ../src/pk-main.c:199
+#. TRANSLATORS: exit straight away, used for automatic profiling
+#: ../src/pk-main.c:211
 msgid "Exit after the engine has loaded"
 msgstr "Surt després que el motor s'hagi carregat"
 
-#: ../src/pk-main.c:213
+#. TRANSLATORS: describing the service that is running
+#: ../src/pk-main.c:226
 msgid "PackageKit service"
 msgstr "servei PackageKit"
 
-#: ../src/pk-main.c:249
+#. TRANSLATORS: fatal error, dbus is not running
+#: ../src/pk-main.c:263
 msgid "Cannot connect to the system bus"
 msgstr "No s'ha pogut connectar amb el bus del sistema"
 
-#: ../src/pk-main.c:298
+#. TRANSLATORS: cannot register on system bus, unknown reason
+#: ../src/pk-main.c:313
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "Ha fallat en intentar executar: %s\n"
 
+#~ msgid "You need to specify a search type, e.g. name"
+#~ msgstr "Us cal especificar un tipus de cerca, p.e. per nom"
+
+#~ msgid "You need to specify a search term"
+#~ msgstr "us cal especificar un terme de cerca"
+
+#~ msgid "You need to specify a package or file to install"
+#~ msgstr "Us cal especificar un paquet o fitxer per a instal·lar"
+
+#~ msgid "You need to specify a package to remove"
+#~ msgstr "Us cal especificar un paquet per a esborrar"
+
+#~ msgid "You need to specify a package name to resolve"
+#~ msgstr "Us cal especificar el nom d'un paquet per a resoldre"
+
+#~ msgid "You need to specify a repository name"
+#~ msgstr "Us cal especificar el nom d'un repositori"
+
+#~ msgid "You need to specify an action, e.g. 'update-system'"
+#~ msgstr "Us cal especificar una acció, p.e. 'update-system'"
+
+#~ msgid "You need to specify a correct role"
+#~ msgstr "Us cal especificar un rol vàlid"
+
+#~ msgid "You need to specify a package to find the details for"
+#~ msgstr "Us cal especificar un paquet per a trobar-ne els seus detalls"
+
+#~ msgid "You need to specify a package to find the files for"
+#~ msgstr "Us cal especificar un paquet per a trobar-ne els seus fitxers"
+
+#~ msgid "You need to specify a list file to create"
+#~ msgstr "Us cal especificar una llista de fitxers a crear"
+
+#~ msgid "You need to specify a list file to open"
+#~ msgstr "Us cal especificar una llista de fitxers a obrir"
+
 #~ msgid "This tool could not remove the packages: '%s'"
 #~ msgstr "No s'ha pogut suprimir els paquets: «%s»"
+
 #~ msgid "Okay to import key?"
 #~ msgstr "Esteu d'acord en importar la clau?"
+
 #~ msgid "Did not import key"
 #~ msgstr "No importis la clau"
+
 #~ msgid "Eula required"
 #~ msgstr "Es necessita l'EULA"
+
 #~ msgid "Do you agree?"
 #~ msgstr "Esteu d'acord?"
-#~ msgid "Update detail"
-#~ msgstr "Detalls de l'actualització"
-#~ msgid "A system restart is required"
-#~ msgstr "Es requereix reiniciar el sistema"
-#~ msgid "A logout and login is required"
-#~ msgstr "Es requereix sortir de la sessió"
-#~ msgid "An application restart is required"
-#~ msgstr "Es requereix reiniciar l'aplicació"
-#~ msgid "Could not find package to install"
-#~ msgstr "No s'ha trobat cap paquet per a instal·lar"
+
 #~ msgid "Could not find package to remove"
 #~ msgstr "No s'ha trobat cap paquet per a eliminar"
+
 #~ msgid "Cancelled!"
 #~ msgstr "Cancel·lat"
+
 #~ msgid "Could not find package to update"
 #~ msgstr "No s'ha trobat cap paquet per a actualitzar"
+
 #~ msgid "Could not find what packages require"
 #~ msgstr "No s'ha trobat cap paquet requerit"
+
 #~ msgid "Could not find details for"
 #~ msgstr "No s'han pogut trobar els detalls per a"
+
 #~ msgid "Could not find a package match"
 #~ msgstr "No s'han trobat coincidències en cap paquet"
+
 #~ msgid "Could not set database readonly"
 #~ msgstr "No s'ha pogut establir la base de dades a només lectura"
+
 #~ msgid "Could not open database: %s"
 #~ msgstr "No s'ha pogut obrir la base de dades: %s"
+
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr ""
 #~ "És probable que necessiteu executar aquesta aplicació com a administrador"
+
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Executa %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'>Executa la versió %s ara</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Executa ara</span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Actualitza a la versió %s</span>"
+
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Instal·la %s ara</"
 #~ "span>"
+
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Versió: %s</small>"
+
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr "no s'ha pogut baixar: directori i/o id de paquet invàlids"
+
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "No s'ha trobat un fitxer de metadades invàlid"
+
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Esteu d'acord en baixar els paquets adicionals?"
+
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Cal que especifiqueu el nom del paquet i els paquets a empaquetar\n"
+
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Nom invàlid per als grup de paquets de servei. Especifiqueu un nom amb "
 #~ "l'extensió .servicepack\n"
+
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
 #~ msgstr ""
 #~ "No s'ha pogut trobar un paquet amb aquest nom per instal·lar, o el paquet "
 #~ "ja es troba instal·lat"
+
 #~ msgid "Could not find a package with that name to update"
 #~ msgstr "No s'ha pogut trobar un paquet amb aquest nom per actualitzar"
-
commit 0040c124f66317833e6cb7e5472e53cc3a41ca31
Author: Jorge A Gallegos <kad at blegh.net>
Date:   Sat Mar 7 06:58:59 2009 +0000

    ES translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/es.po b/po/es.po
index dfb9f7a..8f4b711 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,5 +1,5 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Spanish translation of packagekit.
+# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 # Javier Alejandro Castro <javier.alejandro.castro at gmail.com>, 2008.
 #
@@ -7,657 +7,641 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-18 13:42+0000\n"
-"PO-Revision-Date: 2009-02-20 15:45-0300\n"
+"POT-Creation-Date: 2009-03-05 15:42+0000\n"
+"PO-Revision-Date: 2009-03-07 00:57-0600\n"
 "Last-Translator: Domingo Becker <domingobecker at gmail.com>\n"
 "Language-Team: Spanish <fedora-trans-es at redhat.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Spanish\n"
+"Content-Transfer-Encoding: 8bit"
 
 #. TRANSLATORS: this is an atomic transaction
-#: ../client/pk-console.c:230
+#: ../client/pk-console.c:234
 msgid "Transaction"
 msgstr "Transacción"
 
 #. TRANSLATORS: this is the time the transaction was started in system timezone
-#: ../client/pk-console.c:232
+#: ../client/pk-console.c:236
 msgid "System time"
 msgstr "Hora del sistema"
 
 #. TRANSLATORS: this is if the transaction succeeded or not
-#: ../client/pk-console.c:234
+#: ../client/pk-console.c:238
 msgid "Succeeded"
 msgstr "Existosa"
 
 #. TRANSLATORS: if the repo is enabled
-#: ../client/pk-console.c:234
-#: ../client/pk-console.c:401
+#: ../client/pk-console.c:238 ../client/pk-console.c:405
 msgid "True"
 msgstr "Verdadero"
 
-#: ../client/pk-console.c:234
-#: ../client/pk-console.c:401
+#: ../client/pk-console.c:238 ../client/pk-console.c:405
 msgid "False"
 msgstr "Falso"
 
 #. TRANSLATORS: this is the transactions role, e.g. "update-system"
-#: ../client/pk-console.c:236
+#: ../client/pk-console.c:240
 msgid "Role"
 msgstr "Rol"
 
 #. TRANSLATORS: this is The duration of the transaction
-#: ../client/pk-console.c:241
+#: ../client/pk-console.c:245
 msgid "Duration"
 msgstr "Duración"
 
-#: ../client/pk-console.c:241
+#: ../client/pk-console.c:245
 msgid "(seconds)"
 msgstr "(segundos)"
 
 #. TRANSLATORS: this is The command line used to do the action
-#: ../client/pk-console.c:245
+#: ../client/pk-console.c:249
 msgid "Command line"
 msgstr "Línea de Comando"
 
 #. TRANSLATORS: this is the user ID of the user that started the action
-#: ../client/pk-console.c:247
+#: ../client/pk-console.c:251
 msgid "User ID"
 msgstr "ID del Usuario"
 
 #. TRANSLATORS: this is the username, e.g. hughsie
-#: ../client/pk-console.c:254
+#: ../client/pk-console.c:258
 msgid "Username"
 msgstr "Nombre de Usuario"
 
 #. TRANSLATORS: this is the users real name, e.g. "Richard Hughes"
-#: ../client/pk-console.c:258
+#: ../client/pk-console.c:262
 msgid "Real name"
 msgstr "Nombre real"
 
-#: ../client/pk-console.c:266
+#: ../client/pk-console.c:270
 msgid "Affected packages:"
 msgstr "Paquete afectados:"
 
-#: ../client/pk-console.c:268
+#: ../client/pk-console.c:272
 msgid "Affected packages: None"
 msgstr "Paquetes afectados: Ninguno"
 
 #. TRANSLATORS: this is the distro, e.g. Fedora 10
-#: ../client/pk-console.c:293
+#: ../client/pk-console.c:297
 msgid "Distribution"
 msgstr "Distribución"
 
 #. TRANSLATORS: this is type of update, stable or testing
-#: ../client/pk-console.c:295
+#: ../client/pk-console.c:299
 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:297
-#: ../client/pk-console.c:320
+#: ../client/pk-console.c:301 ../client/pk-console.c:324
 msgid "Summary"
 msgstr "Resúmen"
 
 #. TRANSLATORS: this is the group category name
-#: ../client/pk-console.c:309
+#: ../client/pk-console.c:313
 msgid "Category"
 msgstr "categoría"
 
 #. TRANSLATORS: this is group identifier
-#: ../client/pk-console.c:311
+#: ../client/pk-console.c:315
 msgid "ID"
 msgstr "ID"
 
 #. TRANSLATORS: this is the parent group
-#: ../client/pk-console.c:314
+#: ../client/pk-console.c:318
 msgid "Parent"
 msgstr "Padre"
 
 #. TRANSLATORS: this is the name of the parent group
-#: ../client/pk-console.c:317
+#: ../client/pk-console.c:321
 msgid "Name"
 msgstr "Nombre"
 
 #. TRANSLATORS: this is preferred icon for the group
-#: ../client/pk-console.c:323
+#: ../client/pk-console.c:327
 msgid "Icon"
 msgstr "Icono"
 
 #. TRANSLATORS: this is a header for the package that can be updated
-#: ../client/pk-console.c:338
+#: ../client/pk-console.c:342
 msgid "Details about the update:"
 msgstr "Detalles acerca de la actualización:"
 
 #. TRANSLATORS: details about the update, package name and version
-#: ../client/pk-console.c:340
+#: ../client/pk-console.c:344
 msgid "Package"
 msgstr "Paquete"
 
 #. TRANSLATORS: details about the update, any packages that this update updates
-#: ../client/pk-console.c:343
+#: ../client/pk-console.c:347
 msgid "Updates"
 msgstr "Actualizaciones"
 
 #. TRANSLATORS: details about the update, any packages that this update obsoletes
-#: ../client/pk-console.c:347
+#: ../client/pk-console.c:351
 msgid "Obsoletes"
 msgstr "Sustituye"
 
 #. TRANSLATORS: details about the update, the vendor URLs
-#: ../client/pk-console.c:351
+#: ../client/pk-console.c:355
 msgid "Vendor"
 msgstr "Vendedor"
 
 #. TRANSLATORS: details about the update, the bugzilla URLs
-#: ../client/pk-console.c:355
+#: ../client/pk-console.c:359
 msgid "Bugzilla"
 msgstr "Bugzilla"
 
 #. TRANSLATORS: details about the update, the CVE URLs
-#: ../client/pk-console.c:359
+#: ../client/pk-console.c:363
 msgid "CVE"
 msgstr "CVE"
 
 #. TRANSLATORS: details about the update, if the package requires a restart
-#: ../client/pk-console.c:363
+#: ../client/pk-console.c:367
 msgid "Restart"
 msgstr "Reiniciar"
 
 #. TRANSLATORS: details about the update, any description of the update
-#: ../client/pk-console.c:367
+#: ../client/pk-console.c:371
 msgid "Update text"
 msgstr "Texto de actualización"
 
 #. TRANSLATORS: details about the update, the changelog for the package
-#: ../client/pk-console.c:371
+#: ../client/pk-console.c:375
 msgid "Changes"
 msgstr "Cambios"
 
 #. TRANSLATORS: details about the update, the ongoing state of the update
-#: ../client/pk-console.c:375
+#: ../client/pk-console.c:379
 msgid "State"
 msgstr "Estado"
 
 #. TRANSLATORS: details about the update, date the update was issued
-#: ../client/pk-console.c:380
+#: ../client/pk-console.c:384
 msgid "Issued"
 msgstr "Emitido"
 
 #. TRANSLATORS: details about the update, date the update was updated
-#: ../client/pk-console.c:385
+#: ../client/pk-console.c:389
 msgid "Updated"
 msgstr "Actualizado"
 
-#: ../client/pk-console.c:472
-#: ../client/pk-console.c:474
+#: ../client/pk-console.c:476 ../client/pk-console.c:478
 msgid "Percentage"
 msgstr "Porcentaje"
 
-#: ../client/pk-console.c:474
+#: ../client/pk-console.c:478
 msgid "Unknown"
 msgstr "Desconocido"
 
 #. TRANSLATORS: a package requires the system to be restarted
-#: ../client/pk-console.c:525
+#: ../client/pk-console.c:529
 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:528
+#: ../client/pk-console.c:532
 msgid "Session restart required:"
 msgstr "Se necesita reiniciar la sesión:"
 
 #. TRANSLATORS: a package requires the application to be restarted
-#: ../client/pk-console.c:531
+#: ../client/pk-console.c:535
 msgid "Application restart required by:"
 msgstr "Se necesita reiniciar una aplicación debido a:"
 
 #. TRANSLATORS: a package needs to restart they system
-#: ../client/pk-console.c:568
+#: ../client/pk-console.c:572
 msgid "Please restart the computer to complete the update."
 msgstr "Por favor, reinicie la computadora para completar la actualización"
 
 #. TRANSLATORS: a package needs to restart the session
-#: ../client/pk-console.c:571
+#: ../client/pk-console.c:575
 msgid "Please logout and login to complete the update."
 msgstr "Por favor, salga y vuelva a entrar para completar la actualización."
 
 #. TRANSLATORS: a package needs to restart the application
-#: ../client/pk-console.c:574
+#: ../client/pk-console.c:578
 msgid "Please restart the application as it is being used."
 msgstr "Por favor, reinicie la aplicación que está usando."
 
 #. TRANSLATORS: The package is already installed on the system
-#: ../client/pk-console.c:687
+#: ../client/pk-console.c:691
 #, c-format
 msgid "The package %s is already installed"
 msgstr "El paquete %s ya está instalado"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:695
+#: ../client/pk-console.c:699
 #, c-format
 msgid "The package %s could not be installed: %s"
 msgstr "El paquete %s no se pudo instalar: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:720
-#: ../client/pk-console.c:747
-#: ../client/pk-console.c:843
-#: ../client/pk-console.c:960
-#: ../client/pk-tools-common.c:61
-#: ../client/pk-tools-common.c:79
-#: ../client/pk-tools-common.c:86
+#: ../client/pk-console.c:724 ../client/pk-console.c:751
+#: ../client/pk-console.c:847 ../client/pk-console.c:964
+#: ../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 "Error interno: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:728
-#: ../client/pk-console.c:1355
+#: ../client/pk-console.c:732 ../client/pk-console.c:1360
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Esta herramienta no pudo instalar los paquetes: %s"
 
 #. TRANSLATORS: There was an error installing the files. The detailed error follows
-#: ../client/pk-console.c:755
+#: ../client/pk-console.c:759
 #, c-format
 msgid "This tool could not install the files: %s"
 msgstr "Esta herramienta no pudo instalar los archivos: %s"
 
 #. TRANSLATORS: The package name was not found in the installed list. The detailed error follows
-#: ../client/pk-console.c:811
+#: ../client/pk-console.c:815
 #, c-format
 msgid "This tool could not remove %s: %s"
 msgstr "Esta herramienta no pudo eliminar %s: %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:834
-#: ../client/pk-console.c:872
-#: ../client/pk-console.c:905
+#: ../client/pk-console.c:838 ../client/pk-console.c:876
+#: ../client/pk-console.c:909
 #, c-format
 msgid "This tool could not remove the packages: %s"
 msgstr "Esta herramienta no pudo eliminar los paquetes: %s"
 
 #. TRANSLATORS: When removing, we might have to remove other dependencies
-#: ../client/pk-console.c:884
+#: ../client/pk-console.c:888
 msgid "The following packages have to be removed:"
 msgstr "Los siguientes paquetes se eliminarán:"
 
 #. TRANSLATORS: We are checking if it's okay to remove a list of packages
-#: ../client/pk-console.c:891
+#: ../client/pk-console.c:895
 msgid "Proceed removing additional packages?"
 msgstr "¿De acuerdo con eliminar los paquetes adicionales?"
 
 #. TRANSLATORS: We did not remove any packages
-#: ../client/pk-console.c:896
+#: ../client/pk-console.c:900
 msgid "The package removal was canceled!"
 msgstr "¡La eliminación de paquetes fue cancelada!"
 
 #. TRANSLATORS: The package name was not found in any software sources
-#: ../client/pk-console.c:937
+#: ../client/pk-console.c:941
 #, c-format
 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 fue encontrado"
+msgstr ""
+"Esta herramienta no pudo descargar el paquete %s debido a que no fue "
+"encontrado"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
-#: ../client/pk-console.c:968
+#: ../client/pk-console.c:972
 #, c-format
 msgid "This tool could not download the packages: %s"
 msgstr "Esta herramienta no pudo descargar los paquetes: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:995
-#: ../client/pk-console.c:1004
+#: ../client/pk-console.c:999 ../client/pk-console.c:1008
 #, c-format
 msgid "This tool could not update %s: %s"
 msgstr "Esta herramienta no pudo actualizar %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1026
-#: ../client/pk-console.c:1034
+#: ../client/pk-console.c:1030 ../client/pk-console.c:1038
 #, c-format
 msgid "This tool could not get the requirements for %s: %s"
 msgstr "Esta herramienta no pudo obtener los requerimientos de %s: %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:1056
-#: ../client/pk-console.c:1064
+#: ../client/pk-console.c:1060 ../client/pk-console.c:1068
 #, c-format
 msgid "This tool could not get the dependencies for %s: %s"
 msgstr "Esta herramienta no pudo obtener las dependencias de %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:1086
-#: ../client/pk-console.c:1094
+#: ../client/pk-console.c:1090 ../client/pk-console.c:1098
 #, c-format
 msgid "This tool could not get package details for %s: %s"
 msgstr "Esta herramienta no pudo obtener los detalles del paquete %s: %s"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1116
+#: ../client/pk-console.c:1120
 #, c-format
 msgid "This tool could not find the files for %s: %s"
 msgstr "Esta herramienta no pudo encontrar los archivos de %s: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:1124
+#: ../client/pk-console.c:1128
 #, c-format
 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"
 
 #. TRANSLATORS: There was an error getting the list of packages. The filename follows
-#: ../client/pk-console.c:1146
+#: ../client/pk-console.c:1150
 #, c-format
 msgid "File already exists: %s"
 msgstr "El archivo ya existe: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1151
-#: ../client/pk-console.c:1207
-#: ../client/pk-console.c:1282
+#: ../client/pk-console.c:1155 ../client/pk-console.c:1211
+#: ../client/pk-console.c:1286
 msgid "Getting package list"
 msgstr "Obteniendo la lista de paquetes"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1157
-#: ../client/pk-console.c:1213
-#: ../client/pk-console.c:1288
+#: ../client/pk-console.c:1161 ../client/pk-console.c:1217
+#: ../client/pk-console.c:1292
 #, c-format
 msgid "This tool could not get package list: %s"
 msgstr "Esta herramienta no pudo obtener la lista de paquetes: %s"
 
 #. TRANSLATORS: There was an error saving the list
-#: ../client/pk-console.c:1168
+#: ../client/pk-console.c:1172
 msgid "Failed to save to disk"
 msgstr "Falló al guardar en el disco"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1202
-#: ../client/pk-console.c:1277
+#: ../client/pk-console.c:1206 ../client/pk-console.c:1281
 #, c-format
 msgid "File does not exist: %s"
 msgstr "El archivo no existe: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
-#: ../client/pk-console.c:1234
+#: ../client/pk-console.c:1238
 msgid "Packages to add"
 msgstr "Paquetes a agregar"
 
 #. TRANSLATORS: header to a list of packages removed
-#: ../client/pk-console.c:1242
+#: ../client/pk-console.c:1246
 msgid "Packages to remove"
 msgstr "Paquetes a eliminar"
 
 #. TRANSLATORS: We didn't find any differences
-#: ../client/pk-console.c:1310
+#: ../client/pk-console.c:1314
 msgid "No new packages need to be installed"
 msgstr "No hay paquetes nuevos para instalar"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1316
+#: ../client/pk-console.c:1320
 msgid "To install"
 msgstr "A instalar"
 
 #. TRANSLATORS: searching takes some time....
-#: ../client/pk-console.c:1327
+#: ../client/pk-console.c:1332
 msgid "Searching for package: "
 msgstr "Buscando el paquete:"
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
-#: ../client/pk-console.c:1331
+#: ../client/pk-console.c:1336
 msgid "not found."
 msgstr "no encontrado."
 
 #. TRANSLATORS: We didn't find any packages to install
-#: ../client/pk-console.c:1342
+#: ../client/pk-console.c:1347
 msgid "No packages can be found to install"
 msgstr "No se encontró ningún paquete para instalar"
 
 #. TRANSLATORS: installing new packages from package list
-#: ../client/pk-console.c:1348
+#: ../client/pk-console.c:1353
 msgid "Installing packages"
 msgstr "Instalando paquetes"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
-#: ../client/pk-console.c:1384
+#: ../client/pk-console.c:1389
 #, c-format
 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"
+msgstr ""
+"Esta herramienta no pudo encontrar los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
-#: ../client/pk-console.c:1392
+#: ../client/pk-console.c:1397
 #, c-format
 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"
+msgstr ""
+"Esta herramienta no pudo obtener los detalles de actualización de %s: %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
-#: ../client/pk-console.c:1438
+#: ../client/pk-console.c:1443
 msgid "Error:"
 msgstr "Error:"
 
 #. TRANSLATORS: This a list of details about the package
-#: ../client/pk-console.c:1452
+#: ../client/pk-console.c:1457
 msgid "Package description"
 msgstr "Descripción del paquete"
 
 #. TRANSLATORS: This a list files contained in the package
-#: ../client/pk-console.c:1486
+#: ../client/pk-console.c:1491
 msgid "Package files"
 msgstr "Archivos del paquete"
 
 #. TRANSLATORS: This where the package has no files
-#: ../client/pk-console.c:1494
+#: ../client/pk-console.c:1499
 msgid "No files"
 msgstr "No hay archivos"
 
 #. TRANSLATORS: This a request for a GPG key signature from the backend, which the client will prompt for later
-#: ../client/pk-console.c:1517
+#: ../client/pk-console.c:1522
 msgid "Repository signature required"
 msgstr "Se requiere la firma del repositorio"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
-#: ../client/pk-console.c:1527
+#: ../client/pk-console.c:1532
 msgid "Do you accept this signature?"
 msgstr "¿Acepta esta firma?"
 
 #. TRANSLATORS: This is where the user declined the security key
-#: ../client/pk-console.c:1531
+#: ../client/pk-console.c:1536
 msgid "The signature was not accepted."
 msgstr "La firma no fue aceptada."
 
 #. TRANSLATORS: This a request for a EULA
-#: ../client/pk-console.c:1565
+#: ../client/pk-console.c:1570
 msgid "End user license agreement required"
 msgstr "Se requiere un acuerdo de licencia de usuario final"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
-#: ../client/pk-console.c:1572
+#: ../client/pk-console.c:1577
 msgid "Do you agree to this license?"
 msgstr "¿Está de acuerdo con esta licencia?"
 
 #. TRANSLATORS: This is where the user declined the license
-#: ../client/pk-console.c:1576
+#: ../client/pk-console.c:1581
 msgid "The license was refused."
 msgstr "La licencia fue rechazada."
 
 #. TRANSLATORS: This is when the daemon crashed, and we are up shit creek without a paddle
-#: ../client/pk-console.c:1605
+#: ../client/pk-console.c:1610
 msgid "The daemon crashed mid-transaction!"
 msgstr "El servicio terminó en medio de una transacción!"
 
 #. TRANSLATORS: This is the header to the --help menu
-#: ../client/pk-console.c:1658
+#: ../client/pk-console.c:1663
 msgid "PackageKit Console Interface"
 msgstr "Interfaz de Consola de PackageKit"
 
 #. these are commands we can use with pkcon
-#: ../client/pk-console.c:1660
+#: ../client/pk-console.c:1665
 msgid "Subcommands:"
 msgstr "Subcomandos:"
 
 #. TRANSLATORS: command line argument, if we should show debugging information
 #. TRANSLATORS: if we should show debugging data
-#: ../client/pk-console.c:1752
-#: ../client/pk-generate-pack.c:185
+#: ../client/pk-console.c:1757 ../client/pk-generate-pack.c:185
 #: ../client/pk-monitor.c:125
 #: ../contrib/command-not-found/pk-command-not-found.c:510
-#: ../src/pk-main.c:199
+#: ../contrib/app-install/pk-app-install-add.c:130
+#: ../contrib/app-install/pk-app-install-create.c:48
+#: ../contrib/app-install/pk-app-install-generate.c:392
+#: ../contrib/app-install/pk-app-install-remove.c:105 ../src/pk-main.c:199
 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:1755
-#: ../client/pk-monitor.c:127
+#: ../client/pk-console.c:1760 ../client/pk-monitor.c:127
 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:1758
+#: ../client/pk-console.c:1763
 msgid "Set the filter, e.g. installed"
 msgstr "Defina el filtro, ej. installado"
 
 #. TRANSLATORS: command line argument, work asynchronously
-#: ../client/pk-console.c:1761
+#: ../client/pk-console.c:1766
 msgid "Exit without waiting for actions to complete"
 msgstr "Salir sin esperar que las acciones se completen"
 
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
-#: ../client/pk-console.c:1788
+#: ../client/pk-console.c:1793
 msgid "This tool could not connect to system DBUS."
 msgstr "Esta herramienta no se pudo conectar al DBUS del sistema."
 
 #. TRANSLATORS: The user specified an incorrect filter
-#: ../client/pk-console.c:1875
+#: ../client/pk-console.c:1880
 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:1893
+#: ../client/pk-console.c:1898
 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:1899
-#: ../client/pk-console.c:1907
-#: ../client/pk-console.c:1915
-#: ../client/pk-console.c:1923
+#: ../client/pk-console.c:1904 ../client/pk-console.c:1912
+#: ../client/pk-console.c:1920 ../client/pk-console.c:1928
 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:1929
+#: ../client/pk-console.c:1934
 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:1935
+#: ../client/pk-console.c:1940
 msgid "A package name or filename to install is required"
 msgstr "Se requiere un nombre de paquete o nombre de archivo a instalar"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1943
+#: ../client/pk-console.c:1948
 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:1951
+#: ../client/pk-console.c:1956
 msgid "A package name to remove is required"
 msgstr "Necesita dar un nombre de paquete a eliminar"
 
 #. TRANSLATORS: the user did not specify anything about what to download or where
-#: ../client/pk-console.c:1958
-msgid "A destination directory and then the package names to download are required"
-msgstr "Debe especificar el directorio destino y luego los nombres paquetes a descargar"
+#: ../client/pk-console.c:1963
+msgid ""
+"A destination directory and then the package names to download are required"
+msgstr ""
+"Debe especificar el directorio destino y luego los nombres paquetes a "
+"descargar"
 
 #. TRANSLATORS: the directory does not exist, so we can't continue
-#: ../client/pk-console.c:1964
+#: ../client/pk-console.c:1969
 msgid "Directory not found"
 msgstr "Directorio no encontrado"
 
 #. TRANSLATORS: geeky error, 99.9999% of users won't see this
-#: ../client/pk-console.c:1971
+#: ../client/pk-console.c:1976
 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:1980
+#: ../client/pk-console.c:1985
 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:1996
+#: ../client/pk-console.c:2001
 msgid "A package name to resolve is required"
 msgstr "Se necesita un nombre de paquete a resolver"
 
 #. TRANSLATORS: The user did not specify a repository (software source) name
-#: ../client/pk-console.c:2004
-#: ../client/pk-console.c:2012
+#: ../client/pk-console.c:2009 ../client/pk-console.c:2017
 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:2020
+#: ../client/pk-console.c:2025
 msgid "A repo name, parameter and value are required"
 msgstr "Debe especificar un nombre de repositorio, parametro y valor"
 
 #. TRANSLATORS: The user didn't specify what action to use
-#: ../client/pk-console.c:2033
+#: ../client/pk-console.c:2038
 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:2039
+#: ../client/pk-console.c:2044
 msgid "A correct role is required"
 msgstr "Se necesita el rol correcto"
 
 #. TRANSLATORS: we keep a database updated with the time that an action was last executed
-#: ../client/pk-console.c:2045
+#: ../client/pk-console.c:2050
 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: The user did not provide a package name
 #. TRANSLATORS: This is when the user fails to supply the package name
-#: ../client/pk-console.c:2054
-#: ../client/pk-console.c:2065
-#: ../client/pk-console.c:2073
-#: ../client/pk-console.c:2089
-#: ../client/pk-console.c:2097
-#: ../client/pk-generate-pack.c:241
+#: ../client/pk-console.c:2059 ../client/pk-console.c:2070
+#: ../client/pk-console.c:2078 ../client/pk-console.c:2094
+#: ../client/pk-console.c:2102 ../client/pk-generate-pack.c:241
 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:2081
+#: ../client/pk-console.c:2086
 msgid "A package provide string is required"
 msgstr "Se necesita la cadena de lo que provee el paquete"
 
 #. TRANSLATORS: The user didn't specify a filename to create as a list
-#: ../client/pk-console.c:2105
+#: ../client/pk-console.c:2110
 msgid "A list file name to create is required"
 msgstr "Se necesita un nombre de archivo de la lista"
 
 #. TRANSLATORS: The user didn't specify a filename to open as a list
-#: ../client/pk-console.c:2114
-#: ../client/pk-console.c:2123
+#: ../client/pk-console.c:2119 ../client/pk-console.c:2128
 msgid "A list file to open is required"
 msgstr "Se necesita un archivo de lista a abrir"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
-#: ../client/pk-console.c:2176
+#: ../client/pk-console.c:2181
 #, c-format
 msgid "Option '%s' is not supported"
 msgstr "La opción '%s' no está soportada"
 
 #. TRANSLATORS: User does not have permission to do this
-#: ../client/pk-console.c:2189
+#: ../client/pk-console.c:2194
 msgid "Incorrect privileges for this operation"
 msgstr "Privilegios incorrectos para esta operación"
 
 #. TRANSLATORS: Generic failure of what they asked to do
-#: ../client/pk-console.c:2192
+#: ../client/pk-console.c:2197
 msgid "Command failed"
 msgstr "Commando falló"
 
@@ -683,8 +667,10 @@ msgstr "Ponga el nombre del archivo de dependencias a excluir"
 
 #. TRANSLATORS: the output location
 #: ../client/pk-generate-pack.c:191
-msgid "The output file or directory (the current directory is used if ommitted)"
-msgstr "El directorio o archivo de salida (el directorio actual se usará si se omite)"
+msgid ""
+"The output file or directory (the current directory is used if ommitted)"
+msgstr ""
+"El directorio o archivo de salida (el directorio actual se usará si se omite)"
 
 #. TRANSLATORS: put a list of packages in the pack
 #: ../client/pk-generate-pack.c:194
@@ -713,15 +699,16 @@ msgstr "Se necesita un directorio o nombre de archivo de salida"
 
 #. 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:267 ../client/pk-generate-pack.c:273
 msgid "The package manager cannot perform this type of operation."
 msgstr "El administrador de paquetes no puede realizar este tipo de operación."
 
 #. TRANSLATORS: the user specified an absolute path, but didn't get the extension correct
 #: ../client/pk-generate-pack.c:285
 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:301
@@ -777,21 +764,21 @@ msgid "PackageKit Monitor"
 msgstr "Monitor de PackageKit"
 
 #. TRANSLATORS: The package was not found in any software sources
-#: ../client/pk-tools-common.c:114
+#: ../client/pk-tools-common.c:118
 msgid "The package could not be found"
 msgstr "No se pudo encontrar el paquete"
 
 #. TRANSLATORS: more than one package could be found that matched, to follow is a list of possible packages
-#: ../client/pk-tools-common.c:125
+#: ../client/pk-tools-common.c:130
 msgid "More than one package matches:"
 msgstr "Más de un paquete coincidentes:"
 
 #. TRANSLATORS: This finds out which package in the list to use
-#: ../client/pk-tools-common.c:132
+#: ../client/pk-tools-common.c:137
 msgid "Please choose the correct package: "
 msgstr "Por favor, elija el paquete correcto: "
 
-#: ../client/pk-tools-common.c:157
+#: ../client/pk-tools-common.c:162
 #, c-format
 msgid "Please enter a number from 1 to %i: "
 msgstr "Por favor ingrese un número de 1 a %i:"
@@ -919,6 +906,52 @@ msgstr "No se encontró ningún paquete para su sistema"
 msgid "Installing..."
 msgstr "Instalando..."
 
+#. TRANSLATORS: if we are specifing a out-of-tree database
+#: ../contrib/app-install/pk-app-install-add.c:133
+#: ../contrib/app-install/pk-app-install-generate.c:395
+#: ../contrib/app-install/pk-app-install-remove.c:108
+msgid "Main cache file to use (if not specififed, default is used)"
+msgstr "Archivo caché principal para usar (si no se especifica, se usa el que esta por defecto)"
+
+#. TRANSLATORS: the source database, typically used for adding
+#. TRANSLATORS: the applicationdir database, typically used for adding
+#: ../contrib/app-install/pk-app-install-add.c:136
+#: ../contrib/app-install/pk-app-install-generate.c:398
+msgid "Source cache file to add to the main database"
+msgstr "Archivo caché fuente para añadir a la base de datos principal"
+
+#. TRANSLATORS: the icon directory
+#. TRANSLATORS: the output directory
+#. TRANSLATORS: the icon directory
+#: ../contrib/app-install/pk-app-install-add.c:139
+#: ../contrib/app-install/pk-app-install-generate.c:401
+#: ../contrib/app-install/pk-app-install-generate.c:404
+#: ../contrib/app-install/pk-app-install-remove.c:111
+msgid "Icon directory"
+msgstr "Directorio de íconos"
+
+#. TRANSLATORS: the repo of the software source, e.g. fedora
+#. TRANSLATORS: the repo of the software applicationdir, e.g. fedora
+#. TRANSLATORS: the repo of the software source, e.g. fedora
+#: ../contrib/app-install/pk-app-install-add.c:142
+#: ../contrib/app-install/pk-app-install-generate.c:407
+#: ../contrib/app-install/pk-app-install-remove.c:114
+msgid "Name of the remote repo"
+msgstr "Nombre del repositorio remoto"
+
+#. TRANSLATORS: tool that gets called when the command is not found
+#: ../contrib/app-install/pk-app-install-add.c:153
+#: ../contrib/app-install/pk-app-install-create.c:62
+#: ../contrib/app-install/pk-app-install-generate.c:418
+#: ../contrib/app-install/pk-app-install-remove.c:125
+msgid "PackageKit Application Database Installer"
+msgstr "Instalador de Base de Datos de Aplicaciones de PackageKit"
+
+#. TRANSLATORS: if we are specifing a out-of-tree database
+#: ../contrib/app-install/pk-app-install-create.c:51
+msgid "Main database file to use (if not specififed, default is used)"
+msgstr "Archivo de base de datos principal para usar (si no se especifica, se usa el por defecto)"
+
 #: ../data/packagekit-catalog.xml.in.h:1
 msgid "PackageKit Catalog"
 msgstr "Catálogo de PackageKit"
@@ -948,8 +981,12 @@ msgstr "El usuario correcto no esta lanzando el ejecutable (usualmente 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:193
@@ -999,30 +1036,43 @@ msgstr "Error intentando arrancar: %s\n"
 
 #~ 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 or file to install"
 #~ msgstr "Debe especificar un paquete o archivo a instalar"
+
 #~ 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 "Failed to get last time"
 #~ msgstr "Fállo al obtener última hora"
+
 #~ 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 create"
 #~ msgstr "Debe especificar un archivo de lista a crear"
+
 #~ msgid "You need to specify a list file to open"
 #~ msgstr "Debe especificar un archivo de lista a abrir"
+
 #~ msgid "Accept EULA"
 #~ msgstr "Aceptar EULA"
+
 #~ msgid "Authentication is required to accept a EULA"
 #~ msgstr "Se requiere autenticación para aceptar una EULA"
 
@@ -1033,6 +1083,7 @@ msgstr "Error intentando arrancar: %s\n"
 #~ msgstr ""
 #~ "Se requiere autenticación para cambiar los parametros de fuente de "
 #~ "software"
+
 #~ msgid "Authentication is required to change software source parameters"
 #~ msgstr ""
 #~ "Se requiere autenticación para cambiar los parametros de fuente de "
@@ -1055,8 +1106,10 @@ msgstr "Error intentando arrancar: %s\n"
 #, fuzzy
 #~ msgid "Authentication is required to refresh the system sources"
 #~ msgstr "Se requiere autenticación para refrescar la lista de paquetes"
+
 #~ msgid "Authentication is required to remove packages"
 #~ msgstr "Se requiere autenticación para eliminar paquetes"
+
 #~ msgid "Authentication is required to rollback a transaction"
 #~ msgstr "Se requiere autenticación para deshacer una transaccion"
 
@@ -1065,8 +1118,10 @@ msgstr "Error intentando arrancar: %s\n"
 #~ "Authentication is required to set the network proxy used for downloading "
 #~ "packages"
 #~ msgstr "Se requiere autenticación para eliminar paquetes"
+
 #~ msgid "Authentication is required to update packages"
 #~ msgstr "Se requiere autenticación para actualizar paquetes"
+
 #~ msgid "Change software source parameters"
 #~ msgstr "Cambiar los parametros de fuente de software"
 
@@ -1077,114 +1132,150 @@ msgstr "Error intentando arrancar: %s\n"
 #, fuzzy
 #~ msgid "Install untrusted local file"
 #~ msgstr "Instalar archivo local"
+
 #~ msgid "Remove package"
 #~ msgstr "Eliminar paquete"
+
 #~ msgid "Rollback to a previous transaction"
 #~ msgstr "Deshacer hasta una transaccion previa"
 
 #, fuzzy
 #~ msgid "Update packages"
 #~ msgstr "Actualizar paquete"
+
 #~ 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 "Cancelled!"
 #~ msgstr "Cancelado!"
+
 #~ 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 "
+
 #~ msgid "Could not find a package match"
 #~ msgstr "No se pudo encontrar un paquete coincidente"
 
 #, 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 "Refresh package lists"
 #~ msgstr "Refrescar lista de paquetes"
+
 #~ 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 f5122b0c77cf0fe48b412e6fdc15e8d245f5eda2
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Fri Mar 6 22:16:03 2009 -0300

    Removed the sql warning message, (imo the private class was being deleted before
    the Client class). Feel free to revert if you don't like it.

diff --git a/lib/packagekit-qt/src/client.cpp b/lib/packagekit-qt/src/client.cpp
index b80461b..c15854a 100644
--- a/lib/packagekit-qt/src/client.cpp
+++ b/lib/packagekit-qt/src/client.cpp
@@ -57,16 +57,16 @@ Client::Client(QObject* parent) : QObject(parent)
 	connect(d->daemon, SIGNAL(TransactionListChanged(const QStringList&)), d, SLOT(transactionListChanged(const QStringList&)));
 
 	// Set up database for desktop files
-	d->desktopDB = QSqlDatabase::addDatabase("QSQLITE");
-	d->desktopDB.setDatabaseName ("/var/lib/PackageKit/desktop-files.db");
-	if (!d->desktopDB.open()) {
+	QSqlDatabase db;
+	db = QSqlDatabase::addDatabase("QSQLITE");
+	db.setDatabaseName ("/var/lib/PackageKit/desktop-files.db");
+	if (!db.open()) {
 		qDebug() << "Failed to initialize the desktop files database";
 	}
 }
 
 Client::~Client()
 {
-	d->desktopDB.close();
 	delete d;
 }
 
@@ -677,12 +677,13 @@ Transaction* Client::searchName(const QString& search, Filter filter)
 
 Package* Client::searchFromDesktopFile(const QString& path)
 {
-	if (!d->desktopDB.isOpen()) {
+	QSqlDatabase db = QSqlDatabase::database();
+	if (!db.isOpen()) {
 		qDebug() << "Desktop files database is not open";
 		return NULL;
 	}
 
-	QSqlQuery q(d->desktopDB);
+	QSqlQuery q(db);
 	q.prepare("SELECT package FROM cache WHERE filename = :path");
 	q.bindValue(":path", path);
 	if(!q.exec()) {
diff --git a/lib/packagekit-qt/src/clientprivate.h b/lib/packagekit-qt/src/clientprivate.h
index 0551545..f57c1da 100644
--- a/lib/packagekit-qt/src/clientprivate.h
+++ b/lib/packagekit-qt/src/clientprivate.h
@@ -40,7 +40,6 @@ public:
 
 	DaemonProxy* daemon;
 	Client* c;
-	QSqlDatabase desktopDB; // Used to search in /var/lib/PackageKit/desktop-files.db
 
 	QString locale;
 
commit d0a18dd61acdc6f56592aa666faffbcf2e708797
Merge: c630182... 92f043a...
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Fri Mar 6 20:23:42 2009 -0300

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

commit c63018220b203f376a21301b43933ff9fdb668df
Author: Daniel Nicoletti <dantti85-pk at yahoo.com.br>
Date:   Fri Mar 6 20:22:49 2009 -0300

    Made package methods const and added an operator== to package

diff --git a/lib/packagekit-qt/src/package.cpp b/lib/packagekit-qt/src/package.cpp
index 549ef55..7c860f4 100644
--- a/lib/packagekit-qt/src/package.cpp
+++ b/lib/packagekit-qt/src/package.cpp
@@ -61,32 +61,32 @@ Package::Details::~Details()
 	delete d;
 }
 
-Package* Package::Details::package()
+Package* Package::Details::package() const
 {
 	return d->package;
 }
 
-Package::License Package::Details::license()
+Package::License Package::Details::license() const
 {
 	return d->license;
 }
 
-Client::Group Package::Details::group()
+Client::Group Package::Details::group() const
 {
 	return d->group;
 }
 
-QString Package::Details::description()
+QString Package::Details::description() const
 {
 	return d->description;
 }
 
-QString Package::Details::url()
+QString Package::Details::url() const
 {
 	return d->url;
 }
 
-qulonglong Package::Details::size()
+qulonglong Package::Details::size() const
 {
 	return d->size;
 }
@@ -136,47 +136,47 @@ Package::~Package()
 		delete d->details;
 }
 
-QString Package::id()
+QString Package::id() const
 {
 	return d->id;
 }
 
-QString Package::name()
+QString Package::name() const
 {
 	return d->name;
 }
 
-QString Package::version()
+QString Package::version() const
 {
 	return d->version;
 }
 
-QString Package::arch()
+QString Package::arch() const
 {
 	return d->arch;
 }
 
-QString Package::data()
+QString Package::data() const
 {
 	return d->data;
 }
 
-QString Package::summary()
+QString Package::summary() const
 {
 	return d->summary;
 }
 
-Package::State Package::state()
+Package::State Package::state() const
 {
 	return d->state;
 }
 
-bool Package::hasDetails()
+bool Package::hasDetails() const
 {
 	return (d->details != NULL);
 }
 
-Package::Details* Package::details()
+Package::Details* Package::details() const
 {
 	return d->details;
 }
@@ -186,4 +186,9 @@ void Package::setDetails(Package::Details* det)
 	d->details = det;
 }
 
+bool Package::operator==(const Package *package) const
+{
+	return d->id == package->id();
+}
+
 #include "package.moc"
diff --git a/lib/packagekit-qt/src/package.h b/lib/packagekit-qt/src/package.h
index 6ac0b88..fac83e0 100644
--- a/lib/packagekit-qt/src/package.h
+++ b/lib/packagekit-qt/src/package.h
@@ -53,32 +53,32 @@ public:
 	 *
 	 * A PID (package ID) uniquely identifies a package among all software repositories
 	 */
-	QString id();
+	QString id() const;
 
 	/**
 	 * Returns the package name, for example vim
 	 */
-	QString name();
+	QString name() const;
 
 	/**
 	 * Returns the package version, for example 7.0
 	 */
-	QString version();
+	QString version() const;
 
 	/**
 	 * Returns the package's architecture, for example x86_64
 	 */
-	QString arch();
+	QString arch() const;
 
 	/**
 	 * Holds additionnal data about the package set by the backend
 	 */
-	QString data();
+	QString data() const;
 
 	/**
 	 * Returns the package's summary. You can get more details by using Client::getDetails
 	 */
-	QString summary();
+	QString summary() const;
 
 	/**
 	 * Describes the state of a package
@@ -104,7 +104,7 @@ public:
 	/**
 	 * Returns the package's state
 	 */
-	State state();
+	State state() const;
 
 	/**
 	 * Describes a package's license
@@ -254,32 +254,32 @@ public:
 			 * Returns the package these details are linked to
 			 * \return the Package object to which these details are related
 			 */
-			Package* package();
+			Package* package() const;
 
 			/**
 			 * Returns the package's license
 			 */
-			Package::License license();
+			Package::License license() const;
 
 			/**
 			 * Returns the package's group (for example Multimedia, Editors...)
 			 */
-			Client::Group group();
+			Client::Group group() const;
 
 			/**
 			 * Returns the package's long description
 			 */
-			QString description();
+			QString description() const;
 
 			/**
 			 * Returns the software's homepage url
 			 */
-			QString url();
+			QString url() const;
 
 			/**
 			 * Returns the package's size
 			 */
-			qulonglong size();
+			qulonglong size() const;
 		private:
 			friend class Package;
 			friend class TransactionPrivate;
@@ -293,7 +293,7 @@ public:
 	 * \sa Client::getDetails
 	 * \sa Package::details
 	 */
-	bool hasDetails();
+	bool hasDetails() const;
 
 	/**
 	 * \brief Returns the package's extended details
@@ -302,7 +302,9 @@ public:
 	 * \return a pointer to a Package::Details class containing the package's details
 	 * \sa Client::getDetails
 	 */
-	Details* details();
+	Details* details() const;
+
+	bool operator==(const Package *package) const;
 
 private:
 	friend class Transaction;
commit 92f043a698c225cf8db4eb01353203dcb4cb8936
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Mar 6 14:55:03 2009 +0000

    feature: remove the app-install feature, it's now it's own project

diff --git a/configure.ac b/configure.ac
index 4fc6056..259b1f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -393,13 +393,6 @@ fi
 AM_CONDITIONAL(PK_BUILD_GSTREAMER_PLUGIN, test $build_gstreamer_plugin = "yes")
 
 dnl ---------------------------------------------------------------------------
-dnl - Able to build gstreamer plugin
-dnl ---------------------------------------------------------------------------
-AC_ARG_ENABLE(app_install, AS_HELP_STRING([--enable-app-install],[Build application installer functionality]),
-	      enable_app_install=$enableval,enable_app_install=no)
-AM_CONDITIONAL(PK_BUILD_APP_INSTALL, test $enable_app_install = "yes")
-
-dnl ---------------------------------------------------------------------------
 dnl - Able to build GTK module
 dnl ---------------------------------------------------------------------------
 AC_ARG_ENABLE(gtk_module, AS_HELP_STRING([--enable-gtk-module],[Build GTK module functionality]),
@@ -697,7 +690,6 @@ contrib/gstreamer-plugin/Makefile
 contrib/gtk-module/Makefile
 contrib/yum-packagekit/Makefile
 contrib/command-not-found/Makefile
-contrib/app-install/Makefile
 contrib/ruck/Makefile
 contrib/ruck/src/Makefile
 backends/Makefile
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 843479a..4e47d70 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -12,10 +12,6 @@ if PK_BUILD_BROWSER_PLUGIN
 SUBDIRS += browser-plugin
 endif
 
-if PK_BUILD_APP_INSTALL
-SUBDIRS += app-install
-endif
-
 if PK_BUILD_GSTREAMER_PLUGIN
 SUBDIRS += gstreamer-plugin
 endif
diff --git a/contrib/app-install/.gitignore b/contrib/app-install/.gitignore
deleted file mode 100644
index 603e341..0000000
--- a/contrib/app-install/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.libs
-*.o
-pk-app-install-create
-pk-app-install-remove
-pk-app-install-add
-pk-app-install-generate
-*.db
-*.sh
-dist
-
diff --git a/contrib/app-install/Makefile.am b/contrib/app-install/Makefile.am
deleted file mode 100644
index 45b96ae..0000000
--- a/contrib/app-install/Makefile.am
+++ /dev/null
@@ -1,65 +0,0 @@
-## We require new-style dependency handling.
-AUTOMAKE_OPTIONS = 1.7
-
-INCLUDES =						\
-	$(GLIB_CFLAGS)					\
-	$(GIO_CFLAGS)					\
-	$(DBUS_CFLAGS)					\
-	$(SQLITE_CFLAGS)				\
-	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"		\
-	-DSYSCONFDIR=\""$(sysconfdir)"\" 		\
-	-DDATADIR=\""$(datadir)"\" 			\
-	-DLOCALSTATEDIR=\""$(localstatedir)"\" 		\
-	-DEGG_LOG_FILE=\""$(PK_LOG_DIR)/PackageKit"\"	\
-	-DEGG_VERBOSE="\"PK_VERBOSE\""			\
-	-DEGG_LOGGING="\"PK_LOGGING\""			\
-	-DEGG_CONSOLE="\"PK_CONSOLE\""			\
-	-I$(top_srcdir)/lib
-
-PK_GLIB_LIBS = $(top_builddir)/lib/packagekit-glib/libpackagekit-glib.la
-
-sbin_PROGRAMS = pk-app-install-create pk-app-install-remove pk-app-install-add pk-app-install-generate
-
-pk_app_install_create_SOURCES =				\
-	egg-debug.c					\
-	egg-debug.h					\
-	pk-app-install-create.c				\
-	pk-app-install-common.h				\
-	$(NULL)
-pk_app_install_create_LDADD = $(GIO_LIBS) $(GLIB_LIBS) $(SQLITE_LIBS)
-pk_app_install_create_CFLAGS = $(WARNINGFLAGS_C)
-
-pk_app_install_remove_SOURCES =				\
-	egg-debug.c					\
-	egg-debug.h					\
-	pk-app-install-remove.c				\
-	pk-app-install-common.h				\
-	$(NULL)
-pk_app_install_remove_LDADD = $(GIO_LIBS) $(GLIB_LIBS) $(SQLITE_LIBS)
-pk_app_install_remove_CFLAGS = $(WARNINGFLAGS_C)
-
-pk_app_install_add_SOURCES =				\
-	egg-debug.c					\
-	egg-debug.h					\
-	pk-app-install-add.c				\
-	pk-app-install-common.h				\
-	$(NULL)
-pk_app_install_add_LDADD = $(GIO_LIBS) $(GLIB_LIBS) $(SQLITE_LIBS)
-pk_app_install_add_CFLAGS = $(WARNINGFLAGS_C)
-
-pk_app_install_generate_SOURCES =			\
-	egg-debug.c					\
-	egg-debug.h					\
-	pk-app-install-generate.c			\
-	pk-app-install-common.h				\
-	$(NULL)
-pk_app_install_generate_LDADD = $(GIO_LIBS) $(GLIB_LIBS) $(SQLITE_LIBS) $(PK_GLIB_LIBS)
-pk_app_install_generate_CFLAGS = $(WARNINGFLAGS_C)
-
-install-data-hook:
-	if test -w $(DESTDIR)$(prefix)/; then \
-		mkdir -p $(DESTDIR)$(localstatedir)/lib/app-install/icons; \
-		mkdir -p $(DESTDIR)$(datadir)/app-install/icons; \
-		mkdir -p $(DESTDIR)$(datadir)/app-install/desktop; \
-	fi
-
diff --git a/contrib/app-install/README b/contrib/app-install/README
deleted file mode 100644
index 7821d16..0000000
--- a/contrib/app-install/README
+++ /dev/null
@@ -1,87 +0,0 @@
-Application installing:
-
-In the Linux desktop we have a very big problem: We focus very much on packages.
-Packages are interesting to programmers, but users care about *applications*.
-
-I'll explain the difference:
-
-* Packages can contain none, one or multiple applications
-* Applications only belong to one package
-
-Now, when a user wants to install an application, they have to research on
-Google what the package name is called (which is different on each distro) or
-hope that the application name is mentioned in the description of the package
-in the distro metadata.
-
-Now, I said as a desktop we have one big problem, well, we actually have two:
-We don't all speak English. Some of us speak no English at all.
-
-We want to be able to display package descriptions to the user in all languages,
-but we don't want to download 80x the metadata to do so. Most packaging systems
-only understand en_US anyway, and there certainly isn't the resources to
-translate every spec file or emerge instruction for each distro.
-To add to the problems, each package needs an icon, in various sizes so we
-can show the application icon rather than a generic box.
-
->So we're sunk, right?
-
-No. In each package, there are desktop files that contain all the applications,
-with nice translations gently massaged and QA'd by upstream. It would be nice
-if we could search on that data. At the moment, this is impossible, unless we
-want to download every package in the archive, and extract the data from it.
-This is sort of how Ubuntu does gnome-app-install, and it seems to work fairly
-well. It is Ubuntu specific, but maybe we could work on that.
-
->So, we cache all the desktop files, and push this out to the repo metadata?
-
-No. If you did that you make a lot of people very unhappy, as even compressed
-the metadata and icons make up over 80Mb. 
-
->So we're sunk, right?
-
-No. What we can do is create sub-packages for each repo
-(e.g. rpmfusion-appdata) which ships a tarball of icons and a few hundred Kb
-of SQL. Every time the repo maintainer can be bothered (once a month?) the
-new data is generated, and a new package pushed out to the mirrors. If the
-repo maintainer can't be bothered to do that, then none of the new packages will
-show up in the application browser. It's optional.
-
->This data clogs up my system right?
-
-Well, it's only a few tens of Mb if you want all the icons in most of the sizes,
-if you only choose the 48x48 option then it's much less. When you install the
-new $repo-appdata subpackage, it removes all the stale applications and re-adds
-the latest data. This happens in the vendor spec files as postinst scripts.
-
->How do I query the data?
-
-It's a simple sqlite database in /var/lib/app-install/desktop.db -- the icons
-are located in /usr/share/app-install/icons/$size/*.png -- there's no installer
-yet using this, but expect a few before two long.
-
->Great! Another Ubuntu v.s. Red Hat standards war!
-
-No. Roderick Greening and Sebastian Heinlein and myself together drafted
-the specification together, and made it generic enough for all the distros to
-use. It's totally expected that each distro will code a tool to extract the
-metadata, but that's because they are different in some ways.
-
->So the maintainers have to install everything just to get the desktop files?!
-
-No. You can download and install a package to a prefix without the deps -- we
-don't need the binary to run, we just need the data. in this way we don't need
-to download -data subpackages, only the one with the desktop file in.
-
->Can I add some more features to the spec?
-
-Yes, in a little while. We want to get version 1 of the spec finished, with it
-being used in a few distros. When we're comfortable this works correctly, we'll
-start working on version 2, and add stuff like popularity metrics and metadata
-about suggesting gnome-power-manager rather than kpowersave if you're running
-GNOME. There are lots of things we need to add for this to work really well.
-
-./pk-app-install-create --verbose
-./pk-app-install-generate --verbose --repo=fedora --outputdir=./dist/icons --cache=./dist/livna.sqldata
-./pk-app-install-add --verbose --repo=fedora --icondir=./dist/icons --source=./dist/livna.sqldata
-./pk-app-install-remove --verbose --repo=fedora --icondir=./dist/icons
-
diff --git a/contrib/app-install/egg-debug.c b/contrib/app-install/egg-debug.c
deleted file mode 120000
index 663c6cd..0000000
--- a/contrib/app-install/egg-debug.c
+++ /dev/null
@@ -1 +0,0 @@
-../command-not-found/egg-debug.c
\ No newline at end of file
diff --git a/contrib/app-install/egg-debug.h b/contrib/app-install/egg-debug.h
deleted file mode 120000
index 51c7d17..0000000
--- a/contrib/app-install/egg-debug.h
+++ /dev/null
@@ -1 +0,0 @@
-../command-not-found/egg-debug.h
\ No newline at end of file
diff --git a/contrib/app-install/pk-app-install-add.c b/contrib/app-install/pk-app-install-add.c
deleted file mode 100644
index 8172425..0000000
--- a/contrib/app-install/pk-app-install-add.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* -*- 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.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <sqlite3.h>
-#include <gio/gio.h>
-
-#include "pk-app-install-common.h"
-#include "egg-debug.h"
-
-static const gchar *icon_sizes[] = { "22x22", "24x24", "32x32", "48x48", "scalable", NULL };
-
-/**
- * pk_app_install_add_get_number_sqlite_cb:
- **/
-static gint
-pk_app_install_add_get_number_sqlite_cb (void *data, gint argc, gchar **argv, gchar **col_name)
-{
-	guint *number = (guint *) data;
-	(*number)++;
-	return 0;
-}
-
-/**
- * pk_app_install_add_copy_icons_sqlite_cb:
- **/
-static gint
-pk_app_install_add_copy_icons_sqlite_cb (void *data, gint argc, gchar **argv, gchar **col_name)
-{
-	guint i;
-	gchar *col;
-	gchar *value;
-	const gchar *application_id = NULL;
-	const gchar *icon_name = NULL;
-	gchar *path;
-	gchar *dest;
-	GFile *file;
-	GFile *remote;
-	const gchar *icondir = (const gchar *) data;
-	gboolean ret;
-	gchar *icon_name_full;
-	GError *error = NULL;
-
-	for (i=0; i<(guint)argc; i++) {
-		col = col_name[i];
-		value = argv[i];
-		if (g_strcmp0 (col, "application_id") == 0)
-			application_id = value;
-		else if (g_strcmp0 (col, "icon_name") == 0)
-			icon_name = value;
-	}
-	if (application_id == NULL || icon_name == NULL)
-		goto out;
-
-	egg_debug ("copying icon %s for application: %s", icon_name, application_id);
-	icon_name_full = g_strdup_printf ("%s.png", icon_name);
-
-	/* copy all icon sizes if they exist */
-	for (i=0; icon_sizes[i] != NULL; i++) {
-		path = g_build_filename (icondir, icon_sizes[i], icon_name_full, NULL);
-		ret = g_file_test (path, G_FILE_TEST_EXISTS);
-		if (ret) {
-			dest = g_build_filename (PK_APP_INSTALL_DEFAULT_ICONDIR, icon_sizes[i], icon_name_full, NULL);
-			egg_debug ("copying file %s to %s", path, dest);
-			file = g_file_new_for_path (path);
-			remote = g_file_new_for_path (dest);
-			ret = g_file_copy (file, remote, G_FILE_COPY_TARGET_DEFAULT_PERMS, NULL, NULL, NULL, &error);
-			if (!ret) {
-				egg_warning ("cannot copy %s: %s", path, error->message);
-				g_clear_error (&error);
-			}
-			g_object_unref (file);
-			g_object_unref (remote);
-			g_free (dest);
-		} else {
-			egg_debug ("failed to find icon %s", path);
-		}
-		g_free (path);
-	}
-	g_free (icon_name_full);
-out:
-	return 0;
-}
-
-/**
- * main:
- **/
-int
-main (int argc, char *argv[])
-{
-	gboolean verbose = FALSE;
-	GOptionContext *context;
-	gint retval = 0;
-	gchar *cache = NULL;
-	gchar *repo = NULL;
-	gchar *source = NULL;
-	gchar *icondir = NULL;
-	sqlite3 *db = NULL;
-	gchar *error_msg;
-	gint rc;
-	guint number = 0;
-	gchar *statement;
-	gchar *contents = NULL;
-	gboolean ret;
-	GError *error = NULL;
-
-	const GOptionEntry options[] = {
-		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
-		  _("Show extra debugging information"), NULL },
-		{ "cache", 'c', 0, G_OPTION_ARG_STRING, &cache,
-		  /* TRANSLATORS: if we are specifing a out-of-tree database */
-		  _("Main cache file to use (if not specififed, default is used)"), NULL},
-		{ "source", 's', 0, G_OPTION_ARG_STRING, &source,
-		  /* TRANSLATORS: the source database, typically used for adding */
-		  _("Source cache file to add to the main database"), NULL},
-		{ "icondir", 'i', 0, G_OPTION_ARG_STRING, &icondir,
-		  /* TRANSLATORS: the icon directory */
-		  _("Icon directory"), NULL},
-		{ "repo", 'n', 0, G_OPTION_ARG_STRING, &repo,
-		  /* TRANSLATORS: the repo of the software source, e.g. fedora */
-		  _("Name of the remote repo"), NULL},
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new (NULL);
-	/* TRANSLATORS: tool that gets called when the command is not found */
-	g_option_context_set_summary (context, _("PackageKit Application Database Installer"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-	g_option_context_free (context);
-
-	g_type_init ();
-	egg_debug_init (verbose);
-
-	egg_debug ("cache=%s, source=%s, repo=%s, icondir=%s", cache, source, repo, icondir);
-
-	/* use default */
-	if (cache == NULL) {
-		egg_debug ("cache not specified, using %s", PK_APP_INSTALL_DEFAULT_DATABASE);
-		cache = g_strdup (PK_APP_INSTALL_DEFAULT_DATABASE);
-	}
-
-	if (repo == NULL) {
-		egg_warning ("A repo name is required");
-		retval = 1;
-		goto out;
-	}
-	if (source == NULL) {
-		egg_warning ("A source filename is required");
-		retval = 1;
-		goto out;
-	}
-	if (!g_file_test (source, G_FILE_TEST_EXISTS)) {
-		egg_warning ("The source filename '%s' could not be found", source);
-		retval = 1;
-		goto out;
-	}
-	if (icondir == NULL || !g_file_test (icondir, G_FILE_TEST_IS_DIR)) {
-		egg_warning ("The icon directory '%s' could not be found", icondir);
-		retval = 1;
-		goto out;
-	}
-
-	/* check that there are no existing entries from this repo */
-	rc = sqlite3_open (cache, &db);
-	if (rc) {
-		egg_warning ("Can't open database: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* check that there are no existing entries from this repo */
-	statement = g_strdup_printf ("SELECT application_id FROM applications WHERE repo_id = '%s'", repo);
-	rc = sqlite3_exec (db, statement, pk_app_install_add_get_number_sqlite_cb, (void*) &number, &error_msg);
-	g_free (statement);
-	if (rc != SQLITE_OK) {
-		egg_warning ("SQL error: %s\n", error_msg);
-		sqlite3_free (error_msg);
-		retval = 1;
-		goto out;
-	}
-
-	/* already have data for this repo */
-	if (number > 0) {
-		egg_warning ("There are already %i entries for repo_id=%s", number, repo);
-		goto out;
-	}
-
-	/* get all the sql from the source file */
-	ret = g_file_get_contents (source, &contents, NULL, &error);
-	if (!ret) {
-		egg_warning ("cannot read source file: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* don't sync */
-	rc = sqlite3_exec (db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
-	if (rc) {
-		egg_warning ("Can't turn off sync: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* copy all the applications and translations into remote db */
-	rc = sqlite3_exec (db, contents, NULL, NULL, &error_msg);
-	if (rc != SQLITE_OK) {
-		egg_warning ("SQL error: %s\n", error_msg);
-		sqlite3_free (error_msg);
-		retval = 1;
-		goto out;
-	}
-	egg_debug ("%i additions to the database", sqlite3_changes (db));
-
-	/* copy all the icons */
-	statement = g_strdup_printf ("SELECT application_id, icon_name FROM applications WHERE repo_id = '%s'", repo);
-	rc = sqlite3_exec (db, statement, pk_app_install_add_copy_icons_sqlite_cb, (void*) icondir, &error_msg);
-	g_free (statement);
-	if (rc != SQLITE_OK) {
-		egg_warning ("SQL error: %s\n", error_msg);
-		sqlite3_free (error_msg);
-		retval = 1;
-		goto out;
-	}
-
-out:
-	if (db != NULL)
-		sqlite3_close (db);
-	g_free (contents);
-	g_free (cache);
-	g_free (repo);
-	g_free (source);
-	g_free (icondir);
-	return 0;
-}
-
diff --git a/contrib/app-install/pk-app-install-common.h b/contrib/app-install/pk-app-install-common.h
deleted file mode 100644
index 23fe1f5..0000000
--- a/contrib/app-install/pk-app-install-common.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- 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_APP_INSTALL_COMMON_H
-#define __PK_APP_INSTALL_COMMON_H
-
-#define PK_APP_INSTALL_DEFAULT_DATABASE		LOCALSTATEDIR "/lib/app-install/desktop.db"
-#define PK_APP_INSTALL_DEFAULT_ICONDIR		DATADIR "/app-install/icons"
-
-#endif /* __PK_APP_INSTALL_COMMON_H */
diff --git a/contrib/app-install/pk-app-install-create.c b/contrib/app-install/pk-app-install-create.c
deleted file mode 100644
index df06ce6..0000000
--- a/contrib/app-install/pk-app-install-create.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- 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.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <sqlite3.h>
-
-#include "pk-app-install-common.h"
-#include "egg-debug.h"
-
-/**
- * main:
- **/
-int
-main (int argc, char *argv[])
-{
-	gboolean verbose = FALSE;
-	GOptionContext *context;
-	gchar *cache = NULL;
-	gboolean create_file;
-	const gchar *statement;
-	sqlite3 *db = NULL;
-	gint retval;
-	gint rc;
-
-	const GOptionEntry options[] = {
-		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
-		  _("Show extra debugging information"), NULL },
-		{ "cache", 'c', 0, G_OPTION_ARG_STRING, &cache,
-		  /* TRANSLATORS: if we are specifing a out-of-tree database */
-		  _("Main database file to use (if not specififed, default is used)"), NULL},
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new (NULL);
-	/* TRANSLATORS: tool that gets called when the command is not found */
-	g_option_context_set_summary (context, _("PackageKit Application Database Installer"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-	g_option_context_free (context);
-
-	egg_debug_init (verbose);
-
-	/* use default */
-	if (cache == NULL) {
-		egg_debug ("cache not specified, using %s", PK_APP_INSTALL_DEFAULT_DATABASE);
-		cache = g_strdup (PK_APP_INSTALL_DEFAULT_DATABASE);
-	}
-
-	/* if the database file was not installed (or was nuked) recreate it */
-	create_file = g_file_test (cache, G_FILE_TEST_EXISTS);
-	if (create_file == TRUE) {
-		egg_warning ("already exists");
-		goto out;
-	}
-
-	/* open database */
-	rc = sqlite3_open (cache, &db);
-	if (rc) {
-		egg_warning ("Can't open database: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* don't sync */
-	statement = "PRAGMA synchronous=OFF";
-	rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-	if (rc) {
-		egg_warning ("Can't turn off sync: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* create */
-	if (create_file == FALSE) {
-		statement = "CREATE TABLE applications ("
-			    "application_id TEXT primary key,"
-			    "package_name TEXT,"
-			    "categories TEXT,"
-			    "repo_id TEXT,"
-			    "icon_name TEXT,"
-			    "application_name TEXT,"
-			    "application_summary TEXT);";
-		rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-		if (rc) {
-			egg_warning ("Can't create applications table: %s\n", sqlite3_errmsg (db));
-			retval = 1;
-			goto out;
-		}
-		statement = "CREATE TABLE translations ("
-			    "application_id TEXT,"
-			    "application_name TEXT,"
-			    "application_summary TEXT,"
-			    "locale TEXT);";
-		rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-		if (rc) {
-			egg_warning ("Can't create translations table: %s\n", sqlite3_errmsg (db));
-			retval = 1;
-			goto out;
-		}
-	}
-out:
-	if (db != NULL)
-		sqlite3_close (db);
-	g_free (cache);
-	return retval;
-}
-
diff --git a/contrib/app-install/pk-app-install-generate.c b/contrib/app-install/pk-app-install-generate.c
deleted file mode 100644
index 0fb9538..0000000
--- a/contrib/app-install/pk-app-install-generate.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/* -*- 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.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <sqlite3.h>
-#include <gio/gio.h>
-#include <packagekit-glib/packagekit.h>
-
-#include "pk-app-install-common.h"
-#include "egg-debug.h"
-
-static const gchar *icon_sizes[] = { "22x22", "24x24", "32x32", "48x48", "scalable", NULL };
-
-typedef struct {
-	gchar	*key;
-	gchar	*value;
-	gchar	*locale;
-} PkDesktopData;
-
-/**
- * pk_app_install_generate_desktop_data_free:
- **/
-static void
-pk_app_install_generate_desktop_data_free (PkDesktopData *data)
-{
-	g_free (data->key);
-	g_free (data->value);
-	g_free (data->locale);
-	g_free (data);
-}
-
-/**
- * pk_app_install_generate_create_icon_directories:
- **/
-static gboolean
-pk_app_install_generate_create_icon_directories (const gchar *directory)
-{
-	gboolean ret;
-	GError *error = NULL;
-	GFile *file;
-	gchar *path;
-	guint i;
-
-	/* create main directory */
-	ret = g_file_test (directory, G_FILE_TEST_IS_DIR);
-	if (!ret) {
-		file = g_file_new_for_path (directory);
-		ret = g_file_make_directory (file, NULL, &error);
-		g_object_unref (file);
-		if (!ret) {
-			egg_warning ("cannot create %s: %s", path, error->message);
-			g_error_free (error);
-			goto out;
-		}
-	}
-
-	/* make sub directories */
-	for (i=0; icon_sizes[i] != NULL; i++) {
-		path = g_build_filename (directory, icon_sizes[i], NULL);
-		ret = g_file_test (path, G_FILE_TEST_IS_DIR);
-		if (!ret) {
-			egg_debug ("creating %s", path);
-			file = g_file_new_for_path (path);
-			ret = g_file_make_directory (file, NULL, &error);
-			if (!ret) {
-				egg_warning ("cannot create %s: %s", path, error->message);
-				g_clear_error (&error);
-			}
-			g_object_unref (file);
-		}
-		g_free (path);
-	}
-out:
-	return ret;
-}
-
-/**
- * pk_app_install_generate_get_desktop_data:
- **/
-static GPtrArray *
-pk_app_install_generate_get_desktop_data (const gchar *filename)
-{
-	gboolean ret;
-	GError *error = NULL;
-	GPtrArray *data = NULL;
-	gchar *contents = NULL;
-	gchar **lines;
-	gchar **parts;
-	guint i, len;
-	PkDesktopData *obj;
-
-	/* get all the contents */
-	ret = g_file_get_contents (filename, &contents, NULL, &error);
-	if (!ret) {
-		egg_warning ("cannot read source file: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	/* split lines and extract data */
-	data = g_ptr_array_new ();
-	lines = g_strsplit (contents, "\n", -1);
-	for (i=0; lines[i] != NULL; i++) {
-		parts = g_strsplit_set (lines[i], "=[]", -1);
-		len = g_strv_length (parts);
-		if (len == 2) {
-			obj = g_new0 (PkDesktopData, 1);
-			obj->key = g_strdup (parts[0]);
-			obj->value = g_strdup (parts[1]);
-			g_ptr_array_add (data, obj);
-		} else if (len == 4) {
-			obj = g_new0 (PkDesktopData, 1);
-			obj->key = g_strdup (parts[0]);
-			obj->locale = g_strdup (parts[1]);
-			obj->value = g_strdup (parts[3]);
-			g_ptr_array_add (data, obj);
-		}
-		g_strfreev (parts);
-	}
-	g_strfreev (lines);
-	g_free (contents);
-out:
-	return data;
-}
-
-/**
- * pk_app_install_generate_get_value_for_locale:
- **/
-static gchar *
-pk_app_install_generate_get_value_for_locale (GPtrArray *data, const gchar *key, const gchar *locale)
-{
-	guint i;
-	gchar *value = NULL;
-	const PkDesktopData *obj;
-
-	/* find data matching key name and locale */
-	for (i=0; i<data->len; i++) {
-		obj = g_ptr_array_index (data, i);
-		if (g_strcmp0 (key, obj->key) == 0 && g_strcmp0 (locale, obj->locale) == 0) {
-			value = g_strdup (obj->value);
-			break;
-		}
-	}
-	return value;
-}
-
-/**
- * pk_app_install_generate_get_locales:
- **/
-static GPtrArray *
-pk_app_install_generate_get_locales (GPtrArray *data)
-{
-	guint i, j;
-	GPtrArray *locales;
-	const PkDesktopData *obj;
-
-	/* find data matching key name and locale */
-	locales = g_ptr_array_new ();
-	for (i=0; i<data->len; i++) {
-		obj = g_ptr_array_index (data, i);
-
-		/* no point */
-		if (obj->locale == NULL)
-			continue;
-
-		/* is already in locale list */
-		for (j=0; j<locales->len; j++) {
-			if (g_strcmp0 (obj->locale, g_ptr_array_index (locales, j)) == 0)
-				break;
-		}
-		/* not already there */
-		if (j == locales->len)
-			g_ptr_array_add (locales, g_strdup (obj->locale));
-	}
-	return locales;
-}
-
-/**
- * pk_app_install_generate_get_application_id:
- **/
-static gchar *
-pk_app_install_generate_get_application_id (const gchar *filename)
-{
-	gchar *find;
-	gchar *application_id;
-
-	find = g_strrstr (filename, "/");
-	application_id = g_strdup (find+1);
-	find = g_strrstr (application_id, ".");
-	*find = '\0';
-	return application_id;
-}
-
-/**
- * pk_app_install_generate_applications_sql:
- **/
-static gchar *
-pk_app_install_generate_applications_sql (GPtrArray *data, const gchar *repo, const gchar *package, const gchar *application_id)
-{
-	GString *sql;
-	gchar *name = NULL;
-	gchar *comment = NULL;
-	gchar *icon_name = NULL;
-	gchar *categories = NULL;
-	gchar *escaped;
-
-	sql = g_string_new ("");
-	name = pk_app_install_generate_get_value_for_locale (data, "Name", NULL);
-	icon_name = pk_app_install_generate_get_value_for_locale (data, "Icon", NULL);
-	comment = pk_app_install_generate_get_value_for_locale (data, "Comment", NULL);
-	categories = pk_app_install_generate_get_value_for_locale (data, "Categories", NULL);
-
-	/* remove invalid icons */
-	if (icon_name != NULL &&
-	    (g_str_has_prefix (icon_name, "/") ||
-	     g_str_has_suffix (icon_name, ".png"))) {
-		g_free (icon_name);
-		icon_name = NULL;
-	}
-
-	egg_debug ("application_id=%s, name=%s, comment=%s, icon=%s, categories=%s", application_id, name, comment, icon_name, categories);
-
-	/* append the application data to the sql string */
-	escaped = sqlite3_mprintf ("INSERT INTO applications (application_id, package_name, categories, "
-				   "repo_id, icon_name, application_name, application_summary) "
-				   "VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q);",
-				   application_id, package, categories, repo, icon_name, name, comment);
-	g_string_append_printf (sql, "%s\n", escaped);
-
-	sqlite3_free (escaped);
-	g_free (name);
-	g_free (comment);
-	g_free (icon_name);
-	g_free (categories);
-	return g_string_free (sql, FALSE);
-}
-
-/**
- * pk_app_install_generate_translations_sql:
- **/
-static gchar *
-pk_app_install_generate_translations_sql (GPtrArray *data, GPtrArray *locales, const gchar *application_id)
-{
-	GString *sql;
-	gchar *name = NULL;
-	gchar *comment = NULL;
-	gchar *escaped;
-	const gchar *locale;
-	guint i;
-
-	sql = g_string_new ("");
-	for (i=0; i<locales->len; i++) {
-		locale = g_ptr_array_index (locales, i);
-		name = pk_app_install_generate_get_value_for_locale (data, "Name", locale);
-		comment = pk_app_install_generate_get_value_for_locale (data, "Comment", locale);
-
-		/* append the application data to the sql string if either not null */
-		if (name != NULL || comment != NULL) {
-			escaped = sqlite3_mprintf ("INSERT INTO translations (application_id, application_name, application_summary, locale) "
-						   "VALUES (%Q, %Q, %Q, %Q);", application_id, name, comment, locale);
-			g_string_append_printf (sql, "%s\n", escaped);
-
-			sqlite3_free (escaped);
-			g_free (name);
-			g_free (comment);
-		}
-	}
-
-	return g_string_free (sql, FALSE);
-}
-
-/**
- * pk_app_install_generate_copy_icons:
- **/
-static gboolean
-pk_app_install_generate_copy_icons (const gchar *root, const gchar *directory, const gchar *icon_name)
-{
-	gboolean ret;
-	GError *error = NULL;
-	GFile *file;
-	GFile *remote;
-	gchar *dest;
-	gchar *iconpath;
-	gchar *icon_name_full;
-	guint i;
-
-	/* copy all icon sizes if they exist */
-	for (i=0; icon_sizes[i] != NULL; i++) {
-
-		/* get the icon name */
-		if (g_strcmp0 (icon_sizes[i], "scalable") == 0)
-			icon_name_full = g_strdup_printf ("%s.svg", icon_name);
-		else
-			icon_name_full = g_strdup_printf ("%s.png", icon_name);
-
-		/* build the icon path */
-		iconpath = g_build_filename (root, "/usr/share/icons/hicolor", icon_sizes[i], "apps", icon_name_full, NULL);
-		ret = g_file_test (iconpath, G_FILE_TEST_EXISTS);
-		if (ret) {
-			dest = g_build_filename (directory, icon_sizes[i], icon_name_full, NULL);
-			egg_debug ("copying file %s to %s", iconpath, dest);
-			file = g_file_new_for_path (iconpath);
-			remote = g_file_new_for_path (dest);
-			ret = g_file_copy (file, remote, G_FILE_COPY_TARGET_DEFAULT_PERMS | G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, &error);
-			if (!ret) {
-				egg_warning ("cannot copy %s: %s", dest, error->message);
-				g_clear_error (&error);
-			}
-			g_object_unref (file);
-			g_object_unref (remote);
-			g_free (dest);
-		} else {
-			egg_debug ("does not exist: %s, so not copying", iconpath);
-		}
-		g_free (iconpath);
-		g_free (icon_name_full);
-	}
-	return TRUE;
-}
-
-/**
- * main:
- **/
-int
-main (int argc, char *argv[])
-{
-	gboolean verbose = FALSE;
-	GOptionContext *context;
-	gint retval = 0;
-	gchar *repo = NULL;
-	gchar *root = NULL;
-	gchar *desktopfile = NULL;
-	gchar *outputdir = NULL;
-	gchar *icondir = NULL;
-	gchar *package = NULL;
-	GString *string = NULL;
-	GPtrArray *data = NULL;
-	gchar *sql = NULL;
-	gchar *application_id = NULL;
-	gchar *icon_name = NULL;
-	GPtrArray *locales = NULL;
-	gchar *filename = NULL;
-
-	const GOptionEntry options[] = {
-		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
-		  _("Show extra debugging information"), NULL },
-		{ "root", 's', 0, G_OPTION_ARG_STRING, &root,
-		  /* TRANSLATORS: the root database, typically used for adding */
-		  _("Source cache file to add to the main database"), NULL},
-		{ "desktopfile", 'i', 0, G_OPTION_ARG_STRING, &desktopfile,
-		  /* TRANSLATORS: the icon directory */
-		  _("Icon directory"), NULL},
-		{ "package", 'n', 0, G_OPTION_ARG_STRING, &package,
-		  /* TRANSLATORS: the repo of the software root, e.g. fedora */
-		  _("Name of the package"), NULL},
-		{ "outputdir", 'o', 0, G_OPTION_ARG_STRING, &outputdir,
-		  /* TRANSLATORS: the output directory */
-		  _("Icon directory"), NULL},
-		{ "repo", 'n', 0, G_OPTION_ARG_STRING, &repo,
-		  /* TRANSLATORS: the repo of the software root, e.g. fedora */
-		  _("Name of the remote repo"), NULL},
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new (NULL);
-	/* TRANSLATORS: tool that gets called when the command is not found */
-	g_option_context_set_summary (context, _("PackageKit Application Database Installer"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-	g_option_context_free (context);
-
-	g_type_init ();
-	egg_debug_init (verbose);
-
-	/* use default */
-
-	/* things we require */
-	if (repo == NULL) {
-		g_print ("A repo name is required\n");
-		retval = 1;
-		goto out;
-	}
-	if (outputdir == NULL) {
-		g_print ("A output directory is required\n");
-		retval = 1;
-		goto out;
-	}
-	if (desktopfile == NULL) {
-		g_print ("A desktop file is required\n");
-		retval = 1;
-		goto out;
-	}
-	if (package == NULL) {
-		g_print ("A package name is required\n");
-		retval = 1;
-		goto out;
-	}
-
-	/* use defaults */
-	if (root == NULL) {
-		egg_debug ("root not specified, using /");
-		root = g_strdup ("/");
-	}
-
-	/* check directories exist */
-	if (!g_file_test (root, G_FILE_TEST_IS_DIR)) {
-		g_print ("The root filename '%s' could not be found\n", root);
-		retval = 1;
-		goto out;
-	}
-	if (!g_file_test (outputdir, G_FILE_TEST_IS_DIR)) {
-		g_print ("The icon output directory '%s' could not be found\n", outputdir);
-		retval = 1;
-		goto out;
-	}
-
-	/* generate the sub directories in the outputdir if they dont exist */
-	icondir = g_build_filename (outputdir, "icons", NULL);
-	pk_app_install_generate_create_icon_directories (icondir);
-
-	/* use this to dump the data */
-	string = g_string_new ("");
-
-	filename = g_build_filename (root, "/usr/share/applications", desktopfile, NULL);
-	egg_debug ("filename: %s", filename);
-
-	/* get app-id */
-	application_id = pk_app_install_generate_get_application_id (filename);
-
-	/* extract data */
-	data = pk_app_install_generate_get_desktop_data (filename);
-	if (data == NULL) {
-		g_print ("Could not get desktop data from %s\n", filename);
-		retval = 1;
-		goto out;
-	}
-
-	/* form application SQL */
-	sql = pk_app_install_generate_applications_sql (data, repo, package, application_id);
-	g_string_append_printf (string, "%s", sql);
-	g_free (sql);
-
-	/* get list of locales in this file */
-	locales = pk_app_install_generate_get_locales (data);
-	if (locales == NULL) {
-		g_print ("Could not get locale data from %s\n", filename);
-		retval = 1;
-		goto out;
-	}
-
-	/* form translations SQL */
-	sql = pk_app_install_generate_translations_sql (data, locales, application_id);
-	g_string_append_printf (string, "%s\n", sql);
-	g_free (sql);
-
-	/* copy icons */
-	icon_name = pk_app_install_generate_get_value_for_locale (data, "Icon", NULL);
-	if (icon_name != NULL && !g_str_has_suffix (icon_name, ".png"))
-		pk_app_install_generate_copy_icons (root, icondir, icon_name);
-
-	/* print to screen */
-	g_print ("%s", string->str);
-
-out:
-	if (string != NULL)
-		g_string_free (string, TRUE);
-	if (locales != NULL) {
-		g_ptr_array_foreach (locales, (GFunc) g_free, NULL);
-		g_ptr_array_free (locales, TRUE);
-	}
-	if (data != NULL) {
-		g_ptr_array_foreach (data, (GFunc) pk_app_install_generate_desktop_data_free, NULL);
-		g_ptr_array_free (data, TRUE);
-	}
-	g_free (icondir);
-	g_free (icon_name);
-	g_free (package);
-	g_free (filename);
-	g_free (application_id);
-	g_free (repo);
-	g_free (root);
-	g_free (desktopfile);
-	g_free (outputdir);
-	return retval;
-}
-
diff --git a/contrib/app-install/pk-app-install-remove.c b/contrib/app-install/pk-app-install-remove.c
deleted file mode 100644
index 3753b13..0000000
--- a/contrib/app-install/pk-app-install-remove.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/* -*- 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.
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <glib/gstdio.h>
-#include <sqlite3.h>
-#include <gio/gio.h>
-
-#include "pk-app-install-common.h"
-#include "egg-debug.h"
-
-const gchar *icon_sizes[] = { "22x22", "24x24", "32x32", "48x48", "scalable", NULL };
-
-/**
- * pk_app_install_remove_icons_sqlite_cb:
- **/
-static gint
-pk_app_install_remove_icons_sqlite_cb (void *data, gint argc, gchar **argv, gchar **col_name)
-{
-	guint i;
-	gchar *col;
-	gchar *value;
-	const gchar *application_id = NULL;
-	const gchar *icon_name = NULL;
-	gchar *path;
-	const gchar *icondir = (const gchar *) data;
-	GFile *file;
-	gboolean ret;
-	GError *error = NULL;
-
-	for (i=0; i<(guint)argc; i++) {
-		col = col_name[i];
-		value = argv[i];
-		if (g_strcmp0 (col, "application_id") == 0)
-			application_id = value;
-		else if (g_strcmp0 (col, "icon_name") == 0)
-			icon_name = value;
-	}
-	if (application_id == NULL || icon_name == NULL)
-		goto out;
-
-	egg_debug ("removing icons for application: %s", application_id);
-
-	/* delete all icon sizes */
-	for (i=0; icon_sizes[i] != NULL; i++) {
-		path = g_build_filename (icondir, icon_sizes[i], icon_name, NULL);
-		ret = g_file_test (path, G_FILE_TEST_EXISTS);
-		if (ret) {
-			egg_debug ("removing file %s", path);
-			file = g_file_new_for_path (path);
-			ret = g_file_delete (file, NULL, &error);
-			if (!ret) {
-				egg_warning ("cannot delete %s: %s", path, error->message);
-				g_clear_error (&error);
-			}
-			g_object_unref (file);
-		}
-		g_free (path);
-	}
-out:
-	return 0;
-}
-
-/**
- * main:
- **/
-int
-main (int argc, char *argv[])
-{
-	gboolean verbose = FALSE;
-	GOptionContext *context;
-	gint retval = 0;
-	gchar *cache = NULL;
-	gchar *repo = NULL;
-	gchar *icondir = NULL;
-	gboolean ret = TRUE;
-	gchar *statement = NULL;
-	sqlite3 *db = NULL;
-	gchar *error_msg;
-	gint rc;
-
-	const GOptionEntry options[] = {
-		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
-		  _("Show extra debugging information"), NULL },
-		{ "cache", 'c', 0, G_OPTION_ARG_STRING, &cache,
-		  /* TRANSLATORS: if we are specifing a out-of-tree database */
-		  _("Main cache file to use (if not specififed, default is used)"), NULL},
-		{ "icondir", 'i', 0, G_OPTION_ARG_STRING, &icondir,
-		  /* TRANSLATORS: the icon directory */
-		  _("Icon directory"), NULL},
-		{ "repo", 'n', 0, G_OPTION_ARG_STRING, &repo,
-		  /* TRANSLATORS: the repo of the software source, e.g. fedora */
-		  _("Name of the remote repo"), NULL},
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	context = g_option_context_new (NULL);
-	/* TRANSLATORS: tool that gets called when the command is not found */
-	g_option_context_set_summary (context, _("PackageKit Application Database Installer"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_parse (context, &argc, &argv, NULL);
-	g_option_context_free (context);
-
-	egg_debug_init (verbose);
-
-	/* use default */
-	if (cache == NULL) {
-		egg_debug ("cache not specified, using %s", PK_APP_INSTALL_DEFAULT_DATABASE);
-		cache = g_strdup (PK_APP_INSTALL_DEFAULT_DATABASE);
-	}
-	if (icondir == NULL) {
-		egg_debug ("icondir not specified, using %s", PK_APP_INSTALL_DEFAULT_ICONDIR);
-		icondir = g_strdup (PK_APP_INSTALL_DEFAULT_ICONDIR);
-	}
-
-	/* check */
-	if (repo == NULL) {
-		egg_warning ("A repo name is required");
-		retval = 1;
-		goto out;
-	}
-	if (!g_file_test (icondir, G_FILE_TEST_IS_DIR)) {
-		egg_warning ("The icon directory '%s' could not be found", icondir);
-		retval = 1;
-		goto out;
-	}
-
-	/* open database */
-	rc = sqlite3_open (cache, &db);
-	if (rc) {
-		egg_warning ("Can't open database: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* don't sync */
-	rc = sqlite3_exec (db, "PRAGMA synchronous=OFF", NULL, NULL, NULL);
-	if (rc) {
-		egg_warning ("Can't turn off sync: %s\n", sqlite3_errmsg (db));
-		retval = 1;
-		goto out;
-	}
-
-	/* remove icons */
-	statement = g_strdup_printf ("SELECT application_id, icon_name FROM applications WHERE repo_id = '%s'", repo);
-	rc = sqlite3_exec (db, statement, pk_app_install_remove_icons_sqlite_cb, (void*) icondir, &error_msg);
-	g_free (statement);
-	if (rc != SQLITE_OK) {
-		egg_warning ("SQL error: %s\n", error_msg);
-		sqlite3_free (error_msg);
-		return 0;
-	}
-
-	/* delete from translations (translations has no repo_id, so key of applications) */
-	statement = g_strdup_printf ("DELETE FROM translations WHERE EXISTS ( "
-				      "SELECT applications.application_id FROM applications WHERE "
-				      "applications.application_id = applications.application_id AND applications.repo_id = '%s')", repo);
-	rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-	g_free (statement);
-	if (rc) {
-		egg_warning ("Can't remove rows: %s\n", sqlite3_errmsg (db));
-		ret = FALSE;
-		goto out;
-	}
-	egg_debug ("%i removals from translations", sqlite3_changes (db));
-
-	/* delete from applications */
-	statement = g_strdup_printf ("DELETE FROM applications WHERE repo_id = '%s'", repo);
-	rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-	g_free (statement);
-	if (rc) {
-		egg_warning ("Can't remove rows: %s\n", sqlite3_errmsg (db));
-		ret = FALSE;
-		goto out;
-	}
-	egg_debug ("%i removals from applications", sqlite3_changes (db));
-
-	/* reclaim memory */
-	statement = g_strdup ("VACUUM");
-	rc = sqlite3_exec (db, statement, NULL, NULL, NULL);
-	if (rc) {
-		egg_warning ("Can't vacuum: %s\n", sqlite3_errmsg (db));
-		ret = FALSE;
-		goto out;
-	}
-out:
-	if (db != NULL)
-		sqlite3_close (db);
-	g_free (statement);
-	g_free (cache);
-	g_free (repo);
-	g_free (icondir);
-	return 0;
-}
-
commit 89db78ebd1fac32e040c76626ef86451d5aa3dab
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Mar 6 11:32:57 2009 +0000

    trivial: fix up the app-install stuff

diff --git a/contrib/app-install/Makefile.am b/contrib/app-install/Makefile.am
index 834aa4b..45b96ae 100644
--- a/contrib/app-install/Makefile.am
+++ b/contrib/app-install/Makefile.am
@@ -18,9 +18,7 @@ INCLUDES =						\
 
 PK_GLIB_LIBS = $(top_builddir)/lib/packagekit-glib/libpackagekit-glib.la
 
-noinst_PROGRAMS = pk-app-install-add pk-app-install-generate
-
-sbin_PROGRAMS = pk-app-install-create pk-app-install-remove
+sbin_PROGRAMS = pk-app-install-create pk-app-install-remove pk-app-install-add pk-app-install-generate
 
 pk_app_install_create_SOURCES =				\
 	egg-debug.c					\
diff --git a/contrib/app-install/README b/contrib/app-install/README
index d69da4a..7821d16 100644
--- a/contrib/app-install/README
+++ b/contrib/app-install/README
@@ -1,3 +1,85 @@
+Application installing:
+
+In the Linux desktop we have a very big problem: We focus very much on packages.
+Packages are interesting to programmers, but users care about *applications*.
+
+I'll explain the difference:
+
+* Packages can contain none, one or multiple applications
+* Applications only belong to one package
+
+Now, when a user wants to install an application, they have to research on
+Google what the package name is called (which is different on each distro) or
+hope that the application name is mentioned in the description of the package
+in the distro metadata.
+
+Now, I said as a desktop we have one big problem, well, we actually have two:
+We don't all speak English. Some of us speak no English at all.
+
+We want to be able to display package descriptions to the user in all languages,
+but we don't want to download 80x the metadata to do so. Most packaging systems
+only understand en_US anyway, and there certainly isn't the resources to
+translate every spec file or emerge instruction for each distro.
+To add to the problems, each package needs an icon, in various sizes so we
+can show the application icon rather than a generic box.
+
+>So we're sunk, right?
+
+No. In each package, there are desktop files that contain all the applications,
+with nice translations gently massaged and QA'd by upstream. It would be nice
+if we could search on that data. At the moment, this is impossible, unless we
+want to download every package in the archive, and extract the data from it.
+This is sort of how Ubuntu does gnome-app-install, and it seems to work fairly
+well. It is Ubuntu specific, but maybe we could work on that.
+
+>So, we cache all the desktop files, and push this out to the repo metadata?
+
+No. If you did that you make a lot of people very unhappy, as even compressed
+the metadata and icons make up over 80Mb. 
+
+>So we're sunk, right?
+
+No. What we can do is create sub-packages for each repo
+(e.g. rpmfusion-appdata) which ships a tarball of icons and a few hundred Kb
+of SQL. Every time the repo maintainer can be bothered (once a month?) the
+new data is generated, and a new package pushed out to the mirrors. If the
+repo maintainer can't be bothered to do that, then none of the new packages will
+show up in the application browser. It's optional.
+
+>This data clogs up my system right?
+
+Well, it's only a few tens of Mb if you want all the icons in most of the sizes,
+if you only choose the 48x48 option then it's much less. When you install the
+new $repo-appdata subpackage, it removes all the stale applications and re-adds
+the latest data. This happens in the vendor spec files as postinst scripts.
+
+>How do I query the data?
+
+It's a simple sqlite database in /var/lib/app-install/desktop.db -- the icons
+are located in /usr/share/app-install/icons/$size/*.png -- there's no installer
+yet using this, but expect a few before two long.
+
+>Great! Another Ubuntu v.s. Red Hat standards war!
+
+No. Roderick Greening and Sebastian Heinlein and myself together drafted
+the specification together, and made it generic enough for all the distros to
+use. It's totally expected that each distro will code a tool to extract the
+metadata, but that's because they are different in some ways.
+
+>So the maintainers have to install everything just to get the desktop files?!
+
+No. You can download and install a package to a prefix without the deps -- we
+don't need the binary to run, we just need the data. in this way we don't need
+to download -data subpackages, only the one with the desktop file in.
+
+>Can I add some more features to the spec?
+
+Yes, in a little while. We want to get version 1 of the spec finished, with it
+being used in a few distros. When we're comfortable this works correctly, we'll
+start working on version 2, and add stuff like popularity metrics and metadata
+about suggesting gnome-power-manager rather than kpowersave if you're running
+GNOME. There are lots of things we need to add for this to work really well.
+
 ./pk-app-install-create --verbose
 ./pk-app-install-generate --verbose --repo=fedora --outputdir=./dist/icons --cache=./dist/livna.sqldata
 ./pk-app-install-add --verbose --repo=fedora --icondir=./dist/icons --source=./dist/livna.sqldata
diff --git a/contrib/app-install/pk-app-install-common.h b/contrib/app-install/pk-app-install-common.h
index 704b8a3..23fe1f5 100644
--- a/contrib/app-install/pk-app-install-common.h
+++ b/contrib/app-install/pk-app-install-common.h
@@ -24,7 +24,5 @@
 
 #define PK_APP_INSTALL_DEFAULT_DATABASE		LOCALSTATEDIR "/lib/app-install/desktop.db"
 #define PK_APP_INSTALL_DEFAULT_ICONDIR		DATADIR "/app-install/icons"
-#define PK_APP_INSTALL_DEFAULT_APPICONDIR	DATADIR "/icons/hicolor/"
-#define PK_APP_INSTALL_DEFAULT_APPDIR		"/usr/share/applications"
 
 #endif /* __PK_APP_INSTALL_COMMON_H */
diff --git a/contrib/app-install/pk-app-install-generate.c b/contrib/app-install/pk-app-install-generate.c
index 97ac05f..0fb9538 100644
--- a/contrib/app-install/pk-app-install-generate.c
+++ b/contrib/app-install/pk-app-install-generate.c
@@ -31,7 +31,24 @@
 #include "egg-debug.h"
 
 static const gchar *icon_sizes[] = { "22x22", "24x24", "32x32", "48x48", "scalable", NULL };
-static PkDesktop *desktop;
+
+typedef struct {
+	gchar	*key;
+	gchar	*value;
+	gchar	*locale;
+} PkDesktopData;
+
+/**
+ * pk_app_install_generate_desktop_data_free:
+ **/
+static void
+pk_app_install_generate_desktop_data_free (PkDesktopData *data)
+{
+	g_free (data->key);
+	g_free (data->value);
+	g_free (data->locale);
+	g_free (data);
+}
 
 /**
  * pk_app_install_generate_create_icon_directories:
@@ -45,6 +62,20 @@ pk_app_install_generate_create_icon_directories (const gchar *directory)
 	gchar *path;
 	guint i;
 
+	/* create main directory */
+	ret = g_file_test (directory, G_FILE_TEST_IS_DIR);
+	if (!ret) {
+		file = g_file_new_for_path (directory);
+		ret = g_file_make_directory (file, NULL, &error);
+		g_object_unref (file);
+		if (!ret) {
+			egg_warning ("cannot create %s: %s", path, error->message);
+			g_error_free (error);
+			goto out;
+		}
+	}
+
+	/* make sub directories */
 	for (i=0; icon_sizes[i] != NULL; i++) {
 		path = g_build_filename (directory, icon_sizes[i], NULL);
 		ret = g_file_test (path, G_FILE_TEST_IS_DIR);
@@ -60,56 +91,8 @@ pk_app_install_generate_create_icon_directories (const gchar *directory)
 		}
 		g_free (path);
 	}
-	return ret;
-}
-
-/**
- * pk_app_install_generate_get_desktop_files:
- **/
-static GPtrArray *
-pk_app_install_generate_get_desktop_files (const gchar *directory)
-{
-	GPtrArray *files = NULL;
-	GError *error = NULL;
-	const gchar *filename;
-	GDir *dir;
-
-	dir = g_dir_open (directory, 0, &error);
-	if (dir == NULL) {
-		egg_warning ("cannot open directory %s: %s", directory, error->message);
-		g_error_free (error);
-		goto out;
-	}
-
-	files = g_ptr_array_new ();
-	filename = g_dir_read_name (dir);
-	while (filename != NULL) {
-		if (g_str_has_suffix (filename, ".desktop"))
-			g_ptr_array_add (files, g_build_filename (directory, filename, NULL));
-		filename = g_dir_read_name (dir);
-	}
 out:
-	g_dir_close (dir);
-	return files;
-}
-
-
-typedef struct {
-	gchar	*key;
-	gchar	*value;
-	gchar	*locale;
-} PkDesktopData;
-
-/**
- * pk_app_install_generate_desktop_data_free:
- **/
-static void
-pk_app_install_generate_desktop_data_free (PkDesktopData *data)
-{
-	g_free (data->key);
-	g_free (data->value);
-	g_free (data->locale);
-	g_free (data);
+	return ret;
 }
 
 /**
@@ -135,9 +118,8 @@ pk_app_install_generate_get_desktop_data (const gchar *filename)
 		goto out;
 	}
 
-	data = g_ptr_array_new ();
-
 	/* split lines and extract data */
+	data = g_ptr_array_new ();
 	lines = g_strsplit (contents, "\n", -1);
 	for (i=0; lines[i] != NULL; i++) {
 		parts = g_strsplit_set (lines[i], "=[]", -1);
@@ -157,6 +139,7 @@ pk_app_install_generate_get_desktop_data (const gchar *filename)
 		g_strfreev (parts);
 	}
 	g_strfreev (lines);
+	g_free (contents);
 out:
 	return data;
 }
@@ -214,24 +197,6 @@ pk_app_install_generate_get_locales (GPtrArray *data)
 }
 
 /**
- * pk_app_install_generate_get_package_for_file:
- **/
-static gchar *
-pk_app_install_generate_get_package_for_file (const gchar *filename)
-{
-	gchar *package;
-	GError *error = NULL;
-
-	/* get package providing file */
-	package = pk_desktop_get_package_for_file (desktop, filename, &error);
-	if (package == NULL) {
-		egg_warning ("failed to get package for %s: %s", filename, error->message);
-		g_error_free (error);
-	}
-	return package;
-}
-
-/**
  * pk_app_install_generate_get_application_id:
  **/
 static gchar *
@@ -310,14 +275,16 @@ pk_app_install_generate_translations_sql (GPtrArray *data, GPtrArray *locales, c
 		name = pk_app_install_generate_get_value_for_locale (data, "Name", locale);
 		comment = pk_app_install_generate_get_value_for_locale (data, "Comment", locale);
 
-		/* append the application data to the sql string */
-		escaped = sqlite3_mprintf ("INSERT INTO translations (application_id, application_name, application_summary, locale) "
-					   "VALUES (%Q, %Q, %Q, %Q);", application_id, name, comment, locale);
-		g_string_append_printf (sql, "%s\n", escaped);
+		/* append the application data to the sql string if either not null */
+		if (name != NULL || comment != NULL) {
+			escaped = sqlite3_mprintf ("INSERT INTO translations (application_id, application_name, application_summary, locale) "
+						   "VALUES (%Q, %Q, %Q, %Q);", application_id, name, comment, locale);
+			g_string_append_printf (sql, "%s\n", escaped);
 
-		sqlite3_free (escaped);
-		g_free (name);
-		g_free (comment);
+			sqlite3_free (escaped);
+			g_free (name);
+			g_free (comment);
+		}
 	}
 
 	return g_string_free (sql, FALSE);
@@ -327,7 +294,7 @@ pk_app_install_generate_translations_sql (GPtrArray *data, GPtrArray *locales, c
  * pk_app_install_generate_copy_icons:
  **/
 static gboolean
-pk_app_install_generate_copy_icons (const gchar *directory, const gchar *icon_name)
+pk_app_install_generate_copy_icons (const gchar *root, const gchar *directory, const gchar *icon_name)
 {
 	gboolean ret;
 	GError *error = NULL;
@@ -339,9 +306,16 @@ pk_app_install_generate_copy_icons (const gchar *directory, const gchar *icon_na
 	guint i;
 
 	/* copy all icon sizes if they exist */
-	icon_name_full = g_strdup_printf ("%s.png", icon_name);
 	for (i=0; icon_sizes[i] != NULL; i++) {
-		iconpath = g_build_filename (PK_APP_INSTALL_DEFAULT_APPICONDIR, icon_sizes[i], "apps", icon_name_full, NULL);
+
+		/* get the icon name */
+		if (g_strcmp0 (icon_sizes[i], "scalable") == 0)
+			icon_name_full = g_strdup_printf ("%s.svg", icon_name);
+		else
+			icon_name_full = g_strdup_printf ("%s.png", icon_name);
+
+		/* build the icon path */
+		iconpath = g_build_filename (root, "/usr/share/icons/hicolor", icon_sizes[i], "apps", icon_name_full, NULL);
 		ret = g_file_test (iconpath, G_FILE_TEST_EXISTS);
 		if (ret) {
 			dest = g_build_filename (directory, icon_sizes[i], icon_name_full, NULL);
@@ -360,8 +334,8 @@ pk_app_install_generate_copy_icons (const gchar *directory, const gchar *icon_na
 			egg_debug ("does not exist: %s, so not copying", iconpath);
 		}
 		g_free (iconpath);
+		g_free (icon_name_full);
 	}
-	g_free (icon_name_full);
 	return TRUE;
 }
 
@@ -374,36 +348,37 @@ main (int argc, char *argv[])
 	gboolean verbose = FALSE;
 	GOptionContext *context;
 	gint retval = 0;
-	gchar *cache = NULL;
 	gchar *repo = NULL;
-	gchar *applicationdir = NULL;
-	gchar *icondir = NULL;
+	gchar *root = NULL;
+	gchar *desktopfile = NULL;
 	gchar *outputdir = NULL;
-	gboolean ret;
-	GError *error = NULL;
-	const gchar *filename;
+	gchar *icondir = NULL;
+	gchar *package = NULL;
 	GString *string = NULL;
-	GPtrArray *files = NULL;
-	GPtrArray *data;
-	guint k;
+	GPtrArray *data = NULL;
+	gchar *sql = NULL;
+	gchar *application_id = NULL;
+	gchar *icon_name = NULL;
+	GPtrArray *locales = NULL;
+	gchar *filename = NULL;
 
 	const GOptionEntry options[] = {
 		{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose,
 		  _("Show extra debugging information"), NULL },
-		{ "cache", 'c', 0, G_OPTION_ARG_STRING, &cache,
-		  /* TRANSLATORS: if we are specifing a out-of-tree database */
-		  _("Main cache file to use (if not specififed, default is used)"), NULL},
-		{ "applicationdir", 's', 0, G_OPTION_ARG_STRING, &applicationdir,
-		  /* TRANSLATORS: the applicationdir database, typically used for adding */
+		{ "root", 's', 0, G_OPTION_ARG_STRING, &root,
+		  /* TRANSLATORS: the root database, typically used for adding */
 		  _("Source cache file to add to the main database"), NULL},
-		{ "icondir", 'i', 0, G_OPTION_ARG_STRING, &icondir,
+		{ "desktopfile", 'i', 0, G_OPTION_ARG_STRING, &desktopfile,
 		  /* TRANSLATORS: the icon directory */
 		  _("Icon directory"), NULL},
-		{ "outputdir", 'i', 0, G_OPTION_ARG_STRING, &outputdir,
+		{ "package", 'n', 0, G_OPTION_ARG_STRING, &package,
+		  /* TRANSLATORS: the repo of the software root, e.g. fedora */
+		  _("Name of the package"), NULL},
+		{ "outputdir", 'o', 0, G_OPTION_ARG_STRING, &outputdir,
 		  /* TRANSLATORS: the output directory */
 		  _("Icon directory"), NULL},
 		{ "repo", 'n', 0, G_OPTION_ARG_STRING, &repo,
-		  /* TRANSLATORS: the repo of the software applicationdir, e.g. fedora */
+		  /* TRANSLATORS: the repo of the software root, e.g. fedora */
 		  _("Name of the remote repo"), NULL},
 		{ NULL}
 	};
@@ -422,139 +397,116 @@ main (int argc, char *argv[])
 
 	g_type_init ();
 	egg_debug_init (verbose);
-	desktop = pk_desktop_new ();
-	ret = pk_desktop_open_database (desktop, &error);
-	if (!ret) {
-		egg_warning ("cannot open database: %s", error->message);
-		g_error_free (error);
-		goto out;
-	}
 
 	/* use default */
-	if (cache == NULL) {
-		egg_debug ("cache not specified, using %s", PK_APP_INSTALL_DEFAULT_DATABASE);
-		cache = g_strdup (PK_APP_INSTALL_DEFAULT_DATABASE);
-	}
 
 	/* things we require */
 	if (repo == NULL) {
-		egg_warning ("A repo name is required");
+		g_print ("A repo name is required\n");
 		retval = 1;
 		goto out;
 	}
 	if (outputdir == NULL) {
-		egg_warning ("A icon output directory is required");
+		g_print ("A output directory is required\n");
+		retval = 1;
+		goto out;
+	}
+	if (desktopfile == NULL) {
+		g_print ("A desktop file is required\n");
+		retval = 1;
+		goto out;
+	}
+	if (package == NULL) {
+		g_print ("A package name is required\n");
 		retval = 1;
 		goto out;
 	}
 
 	/* use defaults */
-	if (applicationdir == NULL) {
-		egg_debug ("applicationdir not specified, using %s", PK_APP_INSTALL_DEFAULT_APPDIR);
-		applicationdir = g_strdup (PK_APP_INSTALL_DEFAULT_APPDIR);
-	}
-	if (icondir == NULL) {
-		egg_debug ("icondir not specified, using %s", PK_APP_INSTALL_DEFAULT_APPICONDIR);
-		icondir = g_strdup (PK_APP_INSTALL_DEFAULT_APPICONDIR);
+	if (root == NULL) {
+		egg_debug ("root not specified, using /");
+		root = g_strdup ("/");
 	}
 
 	/* check directories exist */
-	if (!g_file_test (applicationdir, G_FILE_TEST_IS_DIR)) {
-		egg_warning ("The applicationdir filename '%s' could not be found", applicationdir);
-		retval = 1;
-		goto out;
-	}
-	if (!g_file_test (icondir, G_FILE_TEST_IS_DIR)) {
-		egg_warning ("The icondir filename '%s' could not be found", icondir);
+	if (!g_file_test (root, G_FILE_TEST_IS_DIR)) {
+		g_print ("The root filename '%s' could not be found\n", root);
 		retval = 1;
 		goto out;
 	}
 	if (!g_file_test (outputdir, G_FILE_TEST_IS_DIR)) {
-		egg_warning ("The icon output directory '%s' could not be found", outputdir);
+		g_print ("The icon output directory '%s' could not be found\n", outputdir);
 		retval = 1;
 		goto out;
 	}
 
-	/* just dump them */
-	egg_warning ("cache=%s, applicationdir=%s, repo=%s, icondir=%s, outputdir=%s", cache, applicationdir, repo, icondir, outputdir);
-
 	/* generate the sub directories in the outputdir if they dont exist */
-	pk_app_install_generate_create_icon_directories (outputdir);
+	icondir = g_build_filename (outputdir, "icons", NULL);
+	pk_app_install_generate_create_icon_directories (icondir);
 
 	/* use this to dump the data */
-	string = g_string_new ("/* auto generated today */\n");
+	string = g_string_new ("");
 
-	/* get a list of desktop files in applicationdir */
-	files = pk_app_install_generate_get_desktop_files (applicationdir);
+	filename = g_build_filename (root, "/usr/share/applications", desktopfile, NULL);
+	egg_debug ("filename: %s", filename);
 
-	for (k=0; k<files->len; k++) {
-		gchar *sql;
-		gchar *package;
-		gchar *application_id;
-		gchar *icon_name;
-		GPtrArray *locales;
+	/* get app-id */
+	application_id = pk_app_install_generate_get_application_id (filename);
 
-		filename = g_ptr_array_index (files, k);
-		egg_debug ("filename: %s", filename);
-
-		/* get package name */
-		package = pk_app_install_generate_get_package_for_file (filename);
-		if (package == NULL)
-			continue;
-
-		/* get app-id */
-		application_id = pk_app_install_generate_get_application_id (filename);
+	/* extract data */
+	data = pk_app_install_generate_get_desktop_data (filename);
+	if (data == NULL) {
+		g_print ("Could not get desktop data from %s\n", filename);
+		retval = 1;
+		goto out;
+	}
 
-		/* extract data */
-		data = pk_app_install_generate_get_desktop_data (filename);
+	/* form application SQL */
+	sql = pk_app_install_generate_applications_sql (data, repo, package, application_id);
+	g_string_append_printf (string, "%s", sql);
+	g_free (sql);
 
-		/* form application SQL */
-		sql = pk_app_install_generate_applications_sql (data, repo, package, application_id);
-		g_string_append_printf (string, "%s", sql);
+	/* get list of locales in this file */
+	locales = pk_app_install_generate_get_locales (data);
+	if (locales == NULL) {
+		g_print ("Could not get locale data from %s\n", filename);
+		retval = 1;
+		goto out;
+	}
 
-		/* get list of locales in this file */
-		locales = pk_app_install_generate_get_locales (data);
+	/* form translations SQL */
+	sql = pk_app_install_generate_translations_sql (data, locales, application_id);
+	g_string_append_printf (string, "%s\n", sql);
+	g_free (sql);
 
-		/* form translations SQL */
-		sql = pk_app_install_generate_translations_sql (data, locales, application_id);
-		g_string_append_printf (string, "%s\n", sql);
+	/* copy icons */
+	icon_name = pk_app_install_generate_get_value_for_locale (data, "Icon", NULL);
+	if (icon_name != NULL && !g_str_has_suffix (icon_name, ".png"))
+		pk_app_install_generate_copy_icons (root, icondir, icon_name);
 
-		/* copy icons */
-		icon_name = pk_app_install_generate_get_value_for_locale (data, "Icon", NULL);
-		if (icon_name != NULL)
-			pk_app_install_generate_copy_icons (outputdir, icon_name);
+	/* print to screen */
+	g_print ("%s", string->str);
 
-		/* free temp data */
+out:
+	if (string != NULL)
+		g_string_free (string, TRUE);
+	if (locales != NULL) {
 		g_ptr_array_foreach (locales, (GFunc) g_free, NULL);
 		g_ptr_array_free (locales, TRUE);
+	}
+	if (data != NULL) {
 		g_ptr_array_foreach (data, (GFunc) pk_app_install_generate_desktop_data_free, NULL);
 		g_ptr_array_free (data, TRUE);
-		g_free (icon_name);
-		g_free (sql);
-		g_free (package);
-		g_free (application_id);
-	}
-
-	/* save to disk */
-	ret = g_file_set_contents (cache, string->str, -1, &error);
-	if (!ret) {
-		egg_warning ("cannot write data file: %s", error->message);
-		g_error_free (error);
-		goto out;
 	}
-	egg_debug ("saved to %s", cache);
-
-out:
-	if (string != NULL)
-		g_string_free (string, TRUE);
-	g_ptr_array_foreach (files, (GFunc) g_free, NULL);
-	g_ptr_array_free (files, TRUE);
-	g_free (cache);
-	g_free (repo);
-	g_free (applicationdir);
 	g_free (icondir);
+	g_free (icon_name);
+	g_free (package);
+	g_free (filename);
+	g_free (application_id);
+	g_free (repo);
+	g_free (root);
+	g_free (desktopfile);
 	g_free (outputdir);
-	g_object_unref (desktop);
-	return 0;
+	return retval;
 }
 


More information about the PackageKit-commit mailing list