aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS9
-rw-r--r--COPYRIGHT339
-rw-r--r--NEWS717
-rw-r--r--README7
-rw-r--r--README.PackageKit76
-rw-r--r--README.tests7
-rw-r--r--TODO26
-rw-r--r--apport/aptdaemon.py75
-rwxr-xr-xaptd41
-rw-r--r--aptdaemon/__init__.py28
-rw-r--r--aptdaemon/client.py1714
-rw-r--r--aptdaemon/config.py243
-rw-r--r--aptdaemon/console.py691
-rw-r--r--aptdaemon/core.py2204
-rw-r--r--aptdaemon/crash.py79
-rw-r--r--aptdaemon/debconf.py180
-rw-r--r--aptdaemon/enums.py718
-rw-r--r--aptdaemon/errors.py235
-rw-r--r--aptdaemon/gtk3widgets.py1206
-rw-r--r--aptdaemon/lock.py198
-rw-r--r--aptdaemon/logger.py77
-rw-r--r--aptdaemon/loop.py33
-rw-r--r--aptdaemon/networking.py267
-rw-r--r--aptdaemon/pkenums.py969
-rw-r--r--aptdaemon/pkutils.py46
-rw-r--r--aptdaemon/policykit1.py175
-rw-r--r--aptdaemon/progress.py829
-rw-r--r--aptdaemon/test.py312
-rw-r--r--aptdaemon/utils.py131
-rw-r--r--aptdaemon/worker/__init__.py334
-rw-r--r--aptdaemon/worker/aptworker.py1537
-rw-r--r--aptdaemon/worker/pkworker.py1353
-rwxr-xr-xaptdcon30
-rw-r--r--data/20dbus2
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-cleaning-up.pngbin0 -> 2586 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-downloading.pngbin0 -> 1458 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-installing.pngbin0 -> 1707 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-removing.pngbin0 -> 1698 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-resolving.pngbin0 -> 1767 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-updating-cache.pngbin0 -> 1884 bytes
-rw-r--r--data/icons/16x16/animations/aptdaemon-action-waiting.pngbin0 -> 1628 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-add.pngbin0 -> 1762 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-cleanup.pngbin0 -> 1848 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-delete.pngbin0 -> 1836 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-download.pngbin0 -> 1839 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-resolve.pngbin0 -> 1906 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-update-cache.pngbin0 -> 1888 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-upgrade.pngbin0 -> 1921 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-wait.pngbin0 -> 1853 bytes
-rw-r--r--data/icons/16x16/status/aptdaemon-working.pngbin0 -> 1866 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-cleaning-up.pngbin0 -> 3131 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-downloading.pngbin0 -> 2667 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-installing.pngbin0 -> 2900 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-removing.pngbin0 -> 3017 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-resolving.pngbin0 -> 2900 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-updating-cache.pngbin0 -> 2396 bytes
-rw-r--r--data/icons/22x22/animations/aptdaemon-action-waiting.pngbin0 -> 2411 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-add.pngbin0 -> 893 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-cleanup.pngbin0 -> 1139 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-delete.pngbin0 -> 997 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-download.pngbin0 -> 1098 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-resolve.pngbin0 -> 1246 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-update-cache.pngbin0 -> 1240 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-upgrade.pngbin0 -> 1232 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-wait.pngbin0 -> 975 bytes
-rw-r--r--data/icons/22x22/status/aptdaemon-working.pngbin0 -> 1013 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-cleaning-up.pngbin0 -> 3154 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-downloading.pngbin0 -> 2709 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-installing.pngbin0 -> 2993 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-removing.pngbin0 -> 3067 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-resolving.pngbin0 -> 2960 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-updating-cache.pngbin0 -> 2555 bytes
-rw-r--r--data/icons/24x24/animations/aptdaemon-action-waiting.pngbin0 -> 2476 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-add.pngbin0 -> 1377 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-cleanup.pngbin0 -> 1976 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-delete.pngbin0 -> 1671 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-download.pngbin0 -> 1837 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-resolve.pngbin0 -> 2229 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-update-cache.pngbin0 -> 2116 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-upgrade.pngbin0 -> 2173 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-wait.pngbin0 -> 1583 bytes
-rw-r--r--data/icons/24x24/status/aptdaemon-working.pngbin0 -> 1553 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-cleaning-up.pngbin0 -> 9816 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-downloading.pngbin0 -> 5593 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-installing.pngbin0 -> 9223 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-removing.pngbin0 -> 7640 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-resolving.pngbin0 -> 13917 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-updating-cache.pngbin0 -> 7131 bytes
-rw-r--r--data/icons/48x48/animations/aptdaemon-action-waiting.pngbin0 -> 5909 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-add.pngbin0 -> 2492 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-cleanup.pngbin0 -> 2865 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-delete.pngbin0 -> 2714 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-download.pngbin0 -> 2524 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-resolve.pngbin0 -> 3489 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-update-cache.pngbin0 -> 3283 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-upgrade.pngbin0 -> 3336 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-wait.pngbin0 -> 2765 bytes
-rw-r--r--data/icons/48x48/status/aptdaemon-working.pngbin0 -> 3245 bytes
-rwxr-xr-xdata/icons/clean_svg_icons.sh11
-rwxr-xr-xdata/icons/generate_16x16_icons.sh14
-rwxr-xr-xdata/icons/generate_24x24_icons.sh14
-rwxr-xr-xdata/icons/generate_48x48_icons.sh13
-rw-r--r--data/icons/scalable/status/aptdaemon-add.svg350
-rw-r--r--data/icons/scalable/status/aptdaemon-cleanup.svg550
-rw-r--r--data/icons/scalable/status/aptdaemon-delete.svg554
-rw-r--r--data/icons/scalable/status/aptdaemon-download.svg357
-rw-r--r--data/icons/scalable/status/aptdaemon-resolve.svg471
-rw-r--r--data/icons/scalable/status/aptdaemon-setup.svg344
-rw-r--r--data/icons/scalable/status/aptdaemon-update-cache.svg1100
-rw-r--r--data/icons/scalable/status/aptdaemon-upgrade.svg551
-rw-r--r--data/icons/scalable/status/aptdaemon-wait.svg439
-rw-r--r--data/lintian/debian/aptdaemon.profile7
-rw-r--r--data/lintian/ubuntu/aptdaemon.profile42
-rw-r--r--data/org.debian.apt.conf17
-rw-r--r--data/org.debian.apt.policy.in214
-rw-r--r--data/org.debian.apt.service5
-rw-r--r--data/org.freedesktop.PackageKit-aptd.conf29
-rw-r--r--data/org.freedesktop.PackageKit.service5
-rw-r--r--debian/aptdaemon-data.install1
-rw-r--r--debian/aptdaemon.install9
-rw-r--r--debian/changelog2127
-rw-r--r--debian/compat1
-rw-r--r--debian/control136
-rw-r--r--debian/copyright34
-rw-r--r--debian/lintian-fatal.tags.Ubuntu34
-rw-r--r--debian/lintian-nonfatal.tags.Ubuntu12
-rw-r--r--debian/patches/CVE-2020-15703.patch16
-rw-r--r--debian/patches/CVE-2020-16128.patch166
-rw-r--r--debian/patches/CVE-2020-27349.patch31
-rw-r--r--debian/patches/allow-unauthenticated.patch23
-rw-r--r--debian/patches/apport-report.patch24
-rw-r--r--debian/patches/dbus_timeout.patch63
-rw-r--r--debian/patches/do-not-raise-stopiteration.patch68
-rw-r--r--debian/patches/drop_pkcompat.patch2068
-rw-r--r--debian/patches/failing-tests.patch85
-rw-r--r--debian/patches/fix-dependency-solving.patch97
-rw-r--r--debian/patches/fix-high-trust-pkcompat.diff16
-rw-r--r--debian/patches/fix-installation.patch18
-rw-r--r--debian/patches/fix-some-deprecated-code.patch182
-rw-r--r--debian/patches/frontend-locking.patch56
-rw-r--r--debian/patches/gdk-gtk-versions.py13
-rw-r--r--debian/patches/key_value_typo.patch18
-rw-r--r--debian/patches/lintian_deprecated_error.patch20
-rw-r--r--debian/patches/lock-is-held-typo.patch15
-rw-r--r--debian/patches/lp1153725-temporary-workaround.patch25
-rw-r--r--debian/patches/lp1356823.diff13
-rw-r--r--debian/patches/lp1439769-aptdaemon-autoinstall.patch50
-rw-r--r--debian/patches/lp1449587.diff363
-rw-r--r--debian/patches/lp1487087.diff21
-rw-r--r--debian/patches/lp1623856-window-height.patch15
-rw-r--r--debian/patches/lp1689668-config-file-window.patch13
-rw-r--r--debian/patches/lp1690541-details-open-twice.patch12
-rw-r--r--debian/patches/native-arch.patch17
-rw-r--r--debian/patches/pep8-accommodations.diff35
-rw-r--r--debian/patches/pk-debconf-helper.patch40
-rw-r--r--debian/patches/pk1.1.1_compat.patch29
-rw-r--r--debian/patches/py3_inheritable.patch14
-rw-r--r--debian/patches/python3.7-compat.patch53
-rw-r--r--debian/patches/remove-lintian-scanning-of-local-packages.patch180
-rw-r--r--debian/patches/series33
-rw-r--r--debian/patches/test-with-timeout.patch15
-rw-r--r--debian/python3-aptdaemon.gtk3widgets.examples1
-rw-r--r--debian/python3-aptdaemon.gtk3widgets.install1
-rw-r--r--debian/python3-aptdaemon.install17
-rw-r--r--debian/python3-aptdaemon.test.examples1
-rw-r--r--debian/python3-aptdaemon.test.install9
-rwxr-xr-xdebian/rules24
-rw-r--r--debian/source/format1
-rw-r--r--debian/tests/control2
-rwxr-xr-xdebian/tests/run-test9
-rw-r--r--debian/watch2
-rw-r--r--doc/aptd.154
-rw-r--r--doc/aptdcon.195
-rw-r--r--doc/examples/chained.py47
-rw-r--r--doc/org.debian.apt.7238
-rw-r--r--doc/org.debian.apt.transaction.7220
-rw-r--r--doc/source/_ext/signals.py20
-rw-r--r--doc/source/aptdaemon.client.rst134
-rw-r--r--doc/source/aptdaemon.enums.rst5
-rw-r--r--doc/source/aptdaemon.gtk3widgets.rst5
-rw-r--r--doc/source/conf.py199
-rw-r--r--doc/source/dbus.rst410
-rw-r--r--doc/source/index.rst22
-rw-r--r--doc/source/plugins.rst68
-rwxr-xr-xgtk3-demo.py166
-rw-r--r--po/POTFILES.in10
-rw-r--r--po/af.po1446
-rw-r--r--po/am.po1420
-rw-r--r--po/ar.po1462
-rw-r--r--po/ast.po1490
-rw-r--r--po/az.po1420
-rw-r--r--po/be.po1496
-rw-r--r--po/bg.po1487
-rw-r--r--po/bn.po1472
-rw-r--r--po/br.po1442
-rw-r--r--po/bs.po1491
-rw-r--r--po/ca.po1509
-rw-r--r--po/ca@valencia.po1503
-rw-r--r--po/crh.po1419
-rw-r--r--po/cs.po1481
-rw-r--r--po/cy.po1420
-rw-r--r--po/da.po1487
-rw-r--r--po/de.po1541
-rw-r--r--po/dv.po1420
-rw-r--r--po/el.po1512
-rw-r--r--po/en_AU.po1485
-rw-r--r--po/en_CA.po1459
-rw-r--r--po/en_GB.po1485
-rw-r--r--po/eo.po1478
-rw-r--r--po/es.po1499
-rw-r--r--po/et.po1466
-rw-r--r--po/eu.po1477
-rw-r--r--po/fa.po1419
-rw-r--r--po/fi.po1491
-rw-r--r--po/fil.po1426
-rw-r--r--po/fo.po1419
-rw-r--r--po/fr.po1522
-rw-r--r--po/gd.po1557
-rw-r--r--po/gl.po1497
-rw-r--r--po/he.po1464
-rw-r--r--po/hi.po1451
-rw-r--r--po/hr.po1420
-rw-r--r--po/hu.po1482
-rw-r--r--po/hy.po1419
-rw-r--r--po/id.po1472
-rw-r--r--po/is.po1423
-rw-r--r--po/it.po1503
-rw-r--r--po/ja.po1476
-rw-r--r--po/kk.po1438
-rw-r--r--po/km.po1439
-rw-r--r--po/kn.po1419
-rw-r--r--po/ko.po1460
-rw-r--r--po/ku.po1420
-rw-r--r--po/ky.po1419
-rw-r--r--po/ln.po1419
-rw-r--r--po/lt.po1490
-rw-r--r--po/lv.po1489
-rw-r--r--po/mi.po1419
-rw-r--r--po/ml.po1430
-rw-r--r--po/ms.po1493
-rw-r--r--po/my.po1420
-rw-r--r--po/nb.po1468
-rw-r--r--po/nds.po1419
-rw-r--r--po/ne.po1419
-rw-r--r--po/nl.po1522
-rw-r--r--po/nn.po1438
-rw-r--r--po/oc.po1512
-rw-r--r--po/pl.po1503
-rw-r--r--po/pt.po1500
-rw-r--r--po/pt_BR.po1494
-rw-r--r--po/ro.po1505
-rw-r--r--po/ru.po1510
-rw-r--r--po/se.po1419
-rw-r--r--po/shn.po1419
-rw-r--r--po/si.po1420
-rw-r--r--po/sk.po1501
-rw-r--r--po/sl.po1504
-rw-r--r--po/sq.po1499
-rw-r--r--po/sr.po1498
-rw-r--r--po/sv.po1485
-rw-r--r--po/ta.po1425
-rw-r--r--po/te.po1420
-rw-r--r--po/th.po1434
-rw-r--r--po/tr.po1487
-rw-r--r--po/ug.po1474
-rw-r--r--po/uk.po1491
-rw-r--r--po/ur.po1420
-rw-r--r--po/uz.po1419
-rw-r--r--po/vi.po1474
-rw-r--r--po/zh_CN.po1437
-rw-r--r--po/zh_HK.po1434
-rw-r--r--po/zh_TW.po1434
-rw-r--r--pylintrc8
-rwxr-xr-xrelease.sh67
-rw-r--r--setup.cfg14
-rwxr-xr-xsetup.py60
-rw-r--r--tests/__init__.py0
-rw-r--r--tests/_test_py2_string_handling.py103
-rw-r--r--tests/_test_py3_string_handling.py46
l---------tests/aptdaemon1
-rw-r--r--tests/data/high-trust-repository-whitelist-broken.cfg13
-rw-r--r--tests/data/high-trust-repository-whitelist.cfg10
l---------tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist-broken.cfg1
l---------tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist.cfg1
-rw-r--r--tests/dbus.conf21
-rwxr-xr-xtests/debconf/aptdaemon.config10
-rw-r--r--tests/debconf/aptdaemon.templates5
-rwxr-xr-xtests/dpkg-wrapper.sh2
-rwxr-xr-xtests/fake-polkitd.py64
-rwxr-xr-xtests/fakeroot-apt-key2
l---------tests/regressions/aptdaemon1
-rw-r--r--tests/regressions/test_lp722228.py152
-rw-r--r--tests/regressions/test_lp768691.py66
-rw-r--r--tests/repo/Packages217
-rw-r--r--tests/repo/Release22
-rw-r--r--tests/repo/Release.gpg11
-rw-r--r--tests/repo/backports/Packages20
-rw-r--r--tests/repo/backports/Packages.gpg34
-rw-r--r--tests/repo/backports/Release16
-rw-r--r--tests/repo/backports/Release.gpg30
-rw-r--r--tests/repo/glatzor.gpg115
-rw-r--r--tests/repo/gstreamer0.10-silly_0.1-0_all.debbin0 -> 52016 bytes
-rw-r--r--tests/repo/security/Packages20
-rw-r--r--tests/repo/security/Packages.gpg34
-rw-r--r--tests/repo/security/Release16
-rw-r--r--tests/repo/security/Release.gpg30
-rw-r--r--tests/repo/silly-base_0.1-0_all.debbin0 -> 1824 bytes
-rw-r--r--tests/repo/silly-base_0.1-0update1_all.debbin0 -> 1934 bytes
-rw-r--r--tests/repo/silly-broken_0.1-0_all.debbin0 -> 1840 bytes
-rw-r--r--tests/repo/silly-bully_0.1-0_all.debbin0 -> 1808 bytes
-rw-r--r--tests/repo/silly-config_0.1-0_all.debbin0 -> 1928 bytes
-rw-r--r--tests/repo/silly-depend-base-lintian-broken_0.1-0_all.debbin0 -> 1758 bytes
-rw-r--r--tests/repo/silly-depend-base_0.1-0_all.debbin0 -> 1812 bytes
-rw-r--r--tests/repo/silly-essential_0.1-0_all.debbin0 -> 1800 bytes
-rw-r--r--tests/repo/silly-fail_0.1-0_all.debbin0 -> 1874 bytes
-rw-r--r--tests/repo/silly-important_0.1-0_all.debbin0 -> 1792 bytes
-rw-r--r--tests/repo/silly-postinst-input_0.1-0_all.debbin0 -> 1906 bytes
-rw-r--r--tests/repo/whitelisted/Packages34
-rw-r--r--tests/repo/whitelisted/Packages.gpg34
-rw-r--r--tests/repo/whitelisted/Release17
-rw-r--r--tests/repo/whitelisted/Release.gpg0
l---------tests/repo/whitelisted/silly-base_0.1-0update1_all.deb1
-rw-r--r--tests/test_cdrom.py99
-rw-r--r--tests/test_client.py174
-rw-r--r--tests/test_configfileprompt.py147
-rw-r--r--tests/test_configparser.py100
-rw-r--r--tests/test_dbus_type.py196
-rw-r--r--tests/test_debconf.py132
-rw-r--r--tests/test_gtk3widgets.py49
-rw-r--r--tests/test_high_trust_repository_whitelist.py200
-rw-r--r--tests/test_index.py48
-rw-r--r--tests/test_lock.py127
-rw-r--r--tests/test_lock_location.py53
-rw-r--r--tests/test_pep8.py42
-rw-r--r--tests/test_pk.py601
-rw-r--r--tests/test_progress.py55
-rw-r--r--tests/test_py2_string_handling.py44
-rw-r--r--tests/test_simulate.py74
-rw-r--r--tests/test_trans_chain.py59
-rw-r--r--tests/test_valid_package_names.py71
-rw-r--r--tests/test_worker.py588
341 files changed, 158000 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..3e129ab
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,9 @@
+Maintainer:
+ Sebastian Heinlein <devel@glatzor.de>
+
+Developers:
+ Michael Vogt <mvo@ubuntu.com>
+
+Icon Artits:
+ Mike Langlie <mlanglie@redhat.com>
+ Richard Hughes <richard@hughsie.com>
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..d011e2b
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,717 @@
+VERSION 1.1.1 - released on Mon Aug 12 06:33:46 2013
+
+ * Bug Fixes:
+
+ - Export aptdaemon.progress.Daemon(Fork|Lintian)Progress correctly
+ - Make sure to not remove transactions from the D-Bus more than once
+ - Fix release script to not add a white space when releasing a new version
+ - Fix white space in release version
+ - Fix supported PackageKit roles (add remove_packages and install_files)
+
+
+VERSION 1.1 - released on Tue Jul 16 06:57:38 2013
+
+ * Enhancements:
+
+ - Migrate to the PackageKit 0.8 D-Bus interface including several
+ bug and behavior fixes. Futhermore add support for more transaction
+ roles, see API Changes.
+ - Run the daemon in the tests always with debugging information
+ - Use a colored log output on the console
+ - Add a test to check if installing from a CDrom works after the
+ transaction has failed
+ - Configuration file conflict prompts now default to replace old
+ configuration
+
+ * API Changes:
+
+ - Update to the PackageKit 0.8 system D-Bus interface
+ - Add support for the PackageKit RepairSystem and InstallFiles transaction
+ - Add support for CanAuthorize by mapping PackageKit privileges to the
+ coresponding aptdaemon ones
+ - Make us of the ItemProgress singal to report package download progress
+ - Add the ARCH and NOT_ARCH filter
+ - Report the correct package id for download/install progress reports
+ by caching the ids
+
+ * Bug Fixes:
+
+ - Fix backwards compatibility for GLib.io_add_watch()
+ - Ensure that the default filesystem encoding is always set by defaulting
+ to C.UTF-8. Thanks Michael (LP: #1058038)
+ - Catch a random exception while resizing GTK3 dialogs (LP: #898851)
+
+VERSION 1.0 - released on Sun Mar 10 14:37:49 2013
+
+ * Enhancements:
+
+ - Python3 support and run the daemon with Python3 by default
+
+ - Make use of apt.auth instead of softwareproperties.AptAuth
+
+ - Support installing trusted packages from whitelisted repositories with
+ a separate PolicyKit privilege. Ubuntu installs those packages
+ without any confirmation
+
+ - Support more PackageKit transactions (InstallSignature, RepoEnable)
+
+ - Use lintian profiles instead of tag files (separat profiles for Debian
+ and Ubuntu are available). Thanks to Niels Thykier.
+
+ - The client prefers the GOBject introspectable GLib instead of the
+ Python gobject module
+
+ - Allow to update saved credentials if a repository is re-added
+
+ - Comply to the PEP8 coding standards
+
+ - Port to latest PyGObject API (>3.7.2)
+
+ * API changes:
+
+ - aptdaemon.test.TestCase has now a start_keyserver() method to fake
+ a GnuPG key server
+
+ - aptdaemon.errors has got two new transaction error enums
+ ERROR_AUTH_FAILED and ERROR_NOT_AUTHORIZED
+
+ - If the authorization to run a transaction fails the transaction
+ itself will fail instead of only the run() call
+
+ - gtk(3)widgtes: Remove the AptMessageDialog since we don't support
+ non fatal messages at all
+
+ * Bug fixes:
+
+ - Report blocked updates if the dependency system is broken (LP: #932581)
+ - Fix transaction status message if the package status is
+ unknown (LP: #900982)
+ - Restore compatibility with Python2, which doesn't have urllib.parse
+ - Several fixes for the test suite (LP: #1050799)
+ - Fix package file list handling in PK GetFiles()
+ - Fix parsing process cmdlines with special characters (LP: #1044900)
+ - Fix translations if running in a non-C locale (LP: #1034806)
+ - Fix unicode-hanlding in error messages (LP: LP: #846044)
+ - Fix handling of multiline comments in the APT configuration system
+ - Don't change the automatically installed flag of packages during
+ upgrade (LP: #1078544) - Thanks Daniel Hartwig
+ - Fix installing of local packages that have conflicts (LP: #750958)
+ - Don't fail if we want to remove a package without any candidate
+ when simulating a transaction
+ - Fix formating of config file diffs (LP: #1120322) - Thanks Barry Warsaw
+ - Fix setting the AllowCancel instead of the Speed PackageKit transaction
+ property
+ - Set default values of PK transaction property with a defined type
+ - Report a failed authorization correctly to PK client
+ - Allow repositories to have a dot in the release name
+ - Set a sensible default size for the details in GTK2 error dialogs
+ - Set the GTK dialog details section insensitive if there aren't
+ any details to show
+ - Fix some typos and formattings in the man page (LP: #1112492)
+ Thanks to Ansgar Burchardt
+
+
+CHANGES (0.45):
+
+ * Enhancements:
+
+ - Support multiarch package names like apt-get, e.g. xterm:amd64
+
+ - Store the transaction role and sender in apt's history log
+
+ - Freeze (copy) the dpkg status file during a dpkg call to allow
+ simulating other transactions with the frozen dpkg status
+
+ - Share WhatProvides plugins with the Python APT PackageKit backend
+
+ - Allow to install global license keys, see below
+
+ - Add compatibility for py-gobject 3.0 to the client module by switching
+ to gobject from introspection repository
+
+ - Add an apport package hook which collects information on every
+ unhandled crash to make solving bugs easier
+
+ - Avoid creating an apport crash report for valid DBusExceptions that
+ are send to the client (subclasses of AptDaemonError)
+
+ - Only create an apport crash report if it is enabled and aptdaemon
+ was started as a system service
+
+ - Improve error reporting in the case of DBus type conversions
+
+ - Unset the apt-listbugs frontend in non-interactive mode
+
+ - Replace the backported unittest2 framework by the native one of
+ Python 2.7 and Nose to collect the tests
+
+ - Speedup transaction start time by not marking changes in the cache
+ twice (at simulate and install time)
+
+ * API changes:
+
+ - what-provides plugin: Share this plugin with the Python APT backend
+ of PackageKit to allow other packages to specify providers for
+ mod aliases, GStreamer codecs or language support
+
+ - get-license-key plugin: Add this new plugin which gets the uid,
+ the package name, a json oauth token identifieng the customer
+ and a server name to retrieve a license key and the path to store it to
+
+ - org.debian.apt D-Bus interface:
+ o Add new AddLicenseKey method which allows to place a license key
+ file at the loaction specified in the record/control field
+ LicenseKeyPath of the corresponding package.
+ o Add the RebootRequired property. Should be quite self-explanatory
+
+ - org.debian.apt.transaction D-Bus interface:
+ o The Download and Space properties are now of type Int64
+ (signed 64-bit integer)
+ o The elapsed time, total and done bytes in the ProgressDetails property
+ are now of type Int64 (signed 64-bit integer). Furthermore the speed
+ is a now Double.
+
+ - org.freedesktop.PackageKit D-Bus interface: Initial implmentation
+
+ - org.freedesktop.PackageKit.transaction D-Bus interface: Initial
+ implementaion
+
+ - aptdaemon.client:
+ o New AptClient.add_license_key method
+ o Rename Transaction.disconnect() to Transaction._disconnect_from_dbus()
+
+ - aptdaemon.enums:
+ o Add enums for package states (e.g. PKG_INSTALLING or
+ PKG_CONFIGURING) and a corresponding description mapping function
+ get_package_status_from_enum()
+ o Add ERROR_NOT_SUPPORTED to indicate that a feature isn't yet implemented
+ * Add ERROR_SYSTEM_ALREADY_UPTODATE to indicate that there isn't any
+ need to upgrade the system
+ o Add STATUS_DOWNLOADING_REPO to indicate that the information of
+ available packages is downloaded from the repositories
+
+ - aptdaemon.errors:
+ o Add a new TransactionAlreadySimulating() error which gets emitted
+ if a transaction should be simulated but a simulation is already
+ performed currently
+
+ - aptdaemon.gtk3widgets.AptProgressDialog.run() is now deferable,
+ LP #819328
+
+ - aptdaemon.test.Chroot now has got new methods to handle faked cdrom
+ repositories: add_cdrom_repository(), mount_cdrom() and unmount_cdrom()
+
+
+ * Bug fixes:
+
+ - Fix untranslated status messages during installation, LP #641262
+ - Fix an error in the string decoding helper method
+ - Fix detection of a failed lintian check by convert the exit status
+ correctly
+ - Fix remaining watch_lock refactoring issues, LP #759023 and LP#764422
+ Thanks to Robert Roth!
+ - Catch a broken cache in the simulate method, LP #694505
+ - Queued transaction should show as waiting and not as running, LP #702442
+ - Catch broken and really large install sizes specified in third party
+ packages which result in an overflow error, LP #758837
+ - Fix argument handling in wait_for_lock call, LP #763642
+ - Map the dpkg disappear status, LP #762210
+ - Don't fail if the master_fd was already closed and the io callback is
+ still in the loop, LP #753928
+ - Convert messages of AptDaemonErrors to unicode, LP #761386
+ - Don't leak file descriptors during locking, LP #742935
+ - Handle interrupt signals correctly in the forked child
+ - Make sure to quit the forked child correctly on errors
+ - Fix cdrom test case
+ - Avoid apport crash reports for dpkg failures, LP# 799982
+ - Use apt_pkg.version_compare to detect already upt-to-date packages
+ instead of simple string comparison
+ - Fix --downgrade option of aptdcon
+ - Fix not supported errors in pkcompat
+ - Fix cancelling transactions
+ - Sync all properties of a transaction in the client before emitting
+ the finished signal (LP#747172)
+ - Fixes to piping the terminal (LP #733090)
+
+
+CHANGES (0.43)
+
+ * Enhancements:
+
+ - If there are unsatisiefied dependencies show more details like
+ apt-get does
+ - Allow distributions to ship different lintian tag files (fatal and
+ non-fatal ones) - adds a depedency on lsb_release
+ - No longer take queued transactions into account to simulate
+ transactions (future status). The multi arch support adds to much
+ complexity.
+ - Automatically switch to non-interactive mode if the controlling terminal
+ of the client isn't available anymore
+ - Verify package names specified in aptdaemon DBus calls
+
+ * API changes:
+
+ - aptdaemon.gtkwidgets.AptProgressDialog.run() is now deferable,
+ LP #626798
+
+ * Bug fixes:
+
+ - Wait for the lock after dpkg has been executed instead of failing
+ LP #698170, #665572
+ - Don't overwrite DBusException.args in TransactionFailed leading to
+ empty error messages
+ - Fix policykit translations by dropping the gettext domain field from the
+ policy definitions, LP #690270
+ - Fix installing local packages which are not yet known to the cache
+ - Fix use of required_version in the gt3widgets, thanks pitti
+ - Fix the client add_repository call, thanks mvo
+ - Stop processing a transaction in the client if there has been an error
+ - Adapt gtkwidgets.AptProgressDialog.run() to latest API using
+ the sync() method of the transaction
+ - Call waitpid after reading the output from lintian, LP# 724859
+ - Allow package names containing an architecture separated by ":",
+ LP #750941
+ - gtkwidgets.AptProgressDialog.run() should call Transaction.sync() if
+ attach is True. Missing adoption to API changes.
+ - Don't segfault if we cannot read the status of the process holding a
+ lock - fixes LP #745517
+ - Fix UnicodeDecodeErrors, LP #724735, #745261, #742051, #749505, #707490,
+ #707490, #708964, #747037 and #706572
+ - Fix logging of Finished signals
+
+
+CHANGES (0.42):
+
+ - IMPORTANT SECURTIY FIX, see CVE-2011-0725
+ http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2011-0725
+ https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/722228
+
+ The UpdateCachePartially method allows to specify an alternative
+ sources.list snippet to only update the repositories specified in the
+ corresponding configuration file.
+
+ Aptdaemon did not restrict the path to the sources.list.d directory and
+ allowed to inject packages from malicious sources specified in a custom
+ sources.list and even to read every file on the system.
+
+
+CHANGES (0.41):
+
+ - Greatly enhanced test suite by moving to unittest2, allowing to perform
+ package operations in a chroot and running tests on a local session dbus:
+ "dbus-launch unit2 discover"
+ - Improved error reporting
+ - Improved open progress. Thanks to mvo!
+ - Use sudo to run linitian as the user of the transaction
+ - Several bug fixes
+
+* General API changes:
+
+ - Fix: Emit the properties and signals with the documentated static types.
+
+* gtk3widgets Python module:
+
+ - There is now a gtk3widgets module which uses GTK 3.0 and pygobject (with
+ introspection). gtk3-demo.py is a corresponding port of gtk-demo.py.
+
+* org.debian.apt.transaction D-Bus interface
+
+ - The sizes in the ProgressDownload are now of type long - following the API
+ changes in APT. Therefor the signature of the ProgressDownload struct
+ changed to "ssxxs".
+
+
+API CHANGES 0.40:
+
+* General:
+
+ - Checks .deb files with lintian before installing
+ - Apport integration provides additional information on exceptions
+ - Uses gettext domains in policy files
+
+* org.debian.aptdaemon D-Bus interface:
+
+ - Allow to specify the to be installed/removed version of package. The package
+ name and version are separated by "=", e.g. "xterm=258-1".
+
+ - API BREAK: The CommitPackage method has got a new argument to downgrade
+ packages.
+ You have to specify the version of the to be downgraded packages.
+
+ - API BREAK: The InstallFile method now takes an additional argument force to
+ allow installing package files which violate the Debian/Ubuntu policy.
+
+ - Authentication for actions has been moved to the
+ org.debian.aptdaemon.transaction.Run(). This allows to simulate actions
+ without having to authenticate for it.
+
+ - Add a new transaction based action Clean() which allows to remove
+ cached downloaded package files.
+
+ - Add a new transaction based action Reconfigure() which allows to reconfigure
+ already installed packages using debconf.
+
+ - Add writable property PopConParticipation to control the participation
+ in the package popularity contest.
+
+ - Add writable properties AutoUpdateInterval, AutoDownload, AutoCleanInterval
+ and UnattendedUpgrade to control the behavior of the APT cron job.
+
+* console client:
+
+ - Add a --details option to show the version number of to be changed packages
+
+ - Add --clean, --reconfigure and --priority option
+
+* defer modules:
+
+ - Moved to a separate project python-defer
+
+* enums module:
+
+ - Add ERROR_UNREADABLE_PACKAGE_FILE and ERROR_INVALID_PACKAGE_FILE to provide
+ finer error messages
+
+* client module:
+
+ - The return value of wait=True in an async call is now the exit state of
+ the transaction instead of the Transaction instance. It behaves now
+ as documented and in the same way as sync calls.
+
+ - Add AptClient.clean(), see changes in the D-Bus interface
+
+ - Add AptClient.reconfigure(), see changes in the D-Bus interface
+
+* PolicyKit privileges:
+
+ - Add a new org.debian.apt.clean privilege for removing downloaded
+ package files. It is granted by default to all active sessions.
+
+ - Add org.debian.apt.change-config privilege for changing the APT
+ configuration.
+
+
+API CHANGES 0.33
+
+* org.debian.apt D-Bus interface
+
+ - Make AddRepository() and EnableDistroComponent() transaction based.
+
+ - Add a new UpdateCachePartially() method which allows to only update
+ the repositories from a given sources.list snippet.
+
+
+* org.debian.apt.transaction D-Bus interface
+
+ - Add a RunAfter() method to chain transactions.
+
+ - Add an Unauthenticated property to the transaction.
+
+
+* client Python module
+
+ - Adapt to changes in the D-Bus interfaces.
+
+
+* enums Python module
+
+ - Add new role enums ROLE_ADD_REPOSITORY and ROLE_ENABLE_DISTOR_COMP.
+
+
+* policykit1 Python module
+
+ - Raise an AuthorizationFailed exception in a non-interactive check if the
+ user could obtain the privilege in interactive-mode (is_challenged)
+
+
+* errors Python module
+
+ - Make the AuthorizationFailed error an inheritance of NotAuthorizedError
+
+
+* PolicyKit1:
+
+ - Allow every active user to update the cache
+ - Merge install-packages, remove-packages and fix privilege into a new
+ install-or-remove-packages one
+ - Merge add- and remove-vendor-key privileges into change-repository one
+ - Remove upgrade-system in favour of upgrade-packages
+ - Allow set-proxy and cancel-foreign only by auth_admin
+
+
+API CHANGES 0.32
+
+* PolicyKit1:
+
+ - Add a new privilege org.debian.apt.set-proxy which allows to set an http
+ proxy server for a transaction. Currently every active user is allowed to
+ set a proxy for his or her transactions.
+
+
+* entry points:
+
+ - Add modify_cache_before and modify_cache_after entry point which make
+ it possible for plugins to modify the to be installed or removed packages
+ of a transaction. See README.Plugins for further details.
+
+
+* client Python module:
+
+ - Allow to convert all methods into Deferreds by using the deferable_function
+ decorator, see below for more details.
+
+ - Add a downloads attribute to AptTransaction. It contains a dictionary of all
+ processed downloads. The key is the uri of the download. The value is a
+ tuple of status enum, short description, full size, downloaded size and a
+ status/error message
+
+ - Add a progress-download-changed signal to AptTransaction which is emitted
+ when a download progress information changed, see above.
+
+ - Implement the wait arguement in the AptClient methods which are transaction
+ based. If True the transaction will be started immediately and the method
+ call will return when the transaction is finished.
+
+ - Add add_vendor_key_from_keyserver method, see AddVendorKeyFromKeyserver
+
+
+* enums Python module:
+
+ - Add a set of DOWNLOAD_* status enumerations.
+
+ - Fix value of STATUS_DOWNLOADING: from status-downloadgin to
+ status-downloading
+
+
+* defer Python module:
+
+ - Add inline_callbacks and return_value functions which allow to write
+ async code in a sync way. Works like the inlineCallbacks decorator from
+ the Twisted framework.
+
+ - Add deferable decorator which adds a defer attribute to the
+ decorated function and returns a Deferred instance. The callback of the
+ Deferred will be passed as reply_handler argument and the errback as the
+ error_handler argument to the decorated function.
+
+
+* gtkwidgets Python module:
+
+ - Add to the AptConfirmDialog two methods which allow to override the rendered
+ objects and icons: map_package and render_package_icon
+
+ - Add AptDownloadsView class, which allows to show the sub progress of each
+ download
+
+ - Rename AptTerminalExpander to AptDetailsExpander and add a terminal
+ attribute to the __init__ call, since the expander now also shows
+ the download sub-progresses.
+
+ - AptProgressWindow now sets the proxy and debconf frontend during the
+ run call instead of during the set_transaction call.
+
+
+* org.debian.aptdaemon.transaction D-Bus interface:
+
+ - Add a ProgressDownload property. It contains the last download progress
+ information that was recieved from APT. It is an array of uri, status enum,
+ short description, full size, downloaded size and an error/status message.
+
+ - Add AddVendorKeyFromKeyserver method to download and use a GnuPG which
+ is used for authenticating packages.
+
+
+API CHANGES 0.31
+
+* client Python module:
+
+ - Add AptClient.enable_distro_component method, see EnableDistroComponent
+
+
+* org.debian.aptdaemon D-Bus interface:
+
+ - Add EnableDistroComponent method which enables a component for all distro
+ repositories, e.g. main or universe
+
+
+API CHANGES 0.30
+
+* client Python module:
+
+ - Change order of error_handler and reply_handler in the AptTransaction.run
+ method to be in sync with the other methods
+
+ - Add the dependencies, download and space attribute and the corresponding
+ *-changed signal to AptTransaction, see interface changes below
+
+ - Add a new AptTransaction.simulate() method, see interface changes below
+
+ - The AptDaemonError stored in client.AptTransaction.error was replaced by
+ a errors.TransactionFailed error. The APtDaemonError has been removed
+ from the client module.
+
+ - The DBus exception will be converted to native ones which are shared
+ with the daemon. E.g. The DBusException with the error name
+ "org.debian.apt.TransactionRoleAlreadySet" will be a
+ TransactionRoleAlreadySet instance instead. This makes error handling
+ easier since you can use try/except without having to compare the
+ _dbus_error_name attributes.
+
+
+* errors Python modules:
+
+ - Rename APTDError to AptDaemonError because of readabilty
+
+ - Add convert_dbus_exception decorator which converts DBus exception
+ raised in a function to native ones. Also takes asynchrous calls
+ into account.
+
+ - Move NotAuthorizedError from policykit1 to the errors module
+
+
+* enums Python module:
+
+ - Use strings instead of integers for STATUS_*, EXIT_*, ROLE_* and ERROR_*
+ enum. See interface changes for additional information
+
+ - Add new enum EXIT_UNFINISHED
+
+
+* org.debian.aptdaemon.transaction D-Bus interface:
+
+ - The Exit, Status, Role and Error property and the Finished signal now
+ use strings for the enums. This helps to make debugging a lot easier.
+
+ - Add Simulate method which calculates the dependencies, the download size
+ and the to be used disk space of the transaction. Furthermore it raises
+ a "org.debian.aptdaemon.errors.TransactionFailed" if the transaction
+ could not be performed.
+
+ The Simulate call also takes all previously queued or currently running
+ transactions into account. So you can simulate the removal a package
+ if the installation of it is still in the queue.
+
+ - Add new properties Dependencies, Download and Space, see above.
+
+
+API CHANGES 0.20
+
+You don't have to request a transaction, set it up and call the whished action
+on it aynmore. Instead you call the action, e.g. UpdateCache, on the daemon
+interface which will return the id of a newly created transaction. After settingit up you have to call its Run method.
+
+* org.debian.aptdaemon D-Bus interface:
+
+ - Add InstallPackages, InstallFile, RemovePackages, CommitPackages,
+ UpgradePackages, UpgradeSystem, AddVendorKey, RemoveVendorKey, UpdateCache
+ method. Each method creates a new transaction and returns its tid.
+
+ - Remove RequestTransaction method
+
+ - Add new FixIncompleteInstall method which basically runs dpkg --configure -a
+
+ - Add a new FixBrokenDepends method wich tries to correct dependencies
+
+
+* org.debian.aptdaemon.transaction D-Bus interface:
+
+ - Remove InstallPackages, InstallFile, RemovePackages, CommitPackages,
+ UpgradePackages, UpgradeSystem, AddVendorKey, RemoveVendorKey, UpdateCache
+ method. They are now part of the org.debian.aptdaemon interface.
+
+ - Add a Run method which queues the transaction.
+
+ - Add PropertyChanged signal - should be used instead of the deprecated
+ signals. Signal matchers are quite limited on the system bus by default.
+
+ - Add ProgressDetails, RequiredMedium, ConfigFilePrompt, ExitState, Error,
+ Locale, AllowUnauthenticated, Terminal, DebconfSocket, Packages,
+ MetaData and RemoveObsoletedDepends properties.
+
+ The Packages property keeps a lists of packages which should be installed,
+ reinstalled, removed, purged or upgraded. Currently this doesn't work for
+ UpgradeSystem.
+
+ The MetaData property allows clients to store additional meta data in the
+ transaction. See man page org.debian.apt.transaction(7) for the format.
+
+ - Rename the AllowCancel property to Cancellable and the AllowTerminal one
+ to TerminalAttached - helps to make a difference between allowing
+ from the client and daemon side e.g. AllowUnauthenticated.
+
+ - Remove Message signal and the concept of having non-critical fail states
+ on the daemon side. The decision is up to the client e.g. if a system
+ could not be fully updated.
+
+ - Remove the Role, Status, AllowCancel, AllowTerminal, StatusDetails,
+ Progress, ProgressDetails signal - PropertyChanged signal should be used
+ instead.
+
+ - Remove the Attach method - GetAll on the properties interface
+ should be used instead.
+
+ - Rename property ConfigFilePrompt to ConfigFileConflict and the method
+ AnswerConfigFilePrompt to ResolveConfigFileConflict
+
+
+* client Python module:
+
+ - The exit_handler was removed from the AptDaemonClient methods, instead it
+ now supports (reply|error)_handlers to call the method asynchronously and
+ furthermore a wait statement to return after the method is complete.
+
+ - Add public attributes to the Transaction class and remove get_* helpers:
+
+ role, error (stores an AptDaemonError instance), error_code, error_message,
+ exit_state, cancellable, term_attached, required_medium,
+ config_file_prompt, status, status_details, progress, progress_details,
+ paused, remove_obsoleted_depends
+
+ The properties are automatically updated by the PropertyChanged signal
+ matcher.
+
+ - Rename GObject signals of the Transaction class:
+
+ - role -> role-changed
+ - status -> status-changed
+ - allow-cancel -> cancellable-changed
+ - allow-terminal -> terminal-attached-changed
+ - status -> status-changed
+ - status-details -> status-details-changed
+ - progress -> progress-changed
+ - progress-details -> progress-details-changed
+ - config-file-prompt -> config-file-conflict
+
+ - Rename method config_file_prompt_answer to resolve_config_file_conflict
+
+ - Add GObject signals to the Transaction class:
+
+ - meta-data-changed
+ - paused
+ - resumed
+ - locale-changed
+ - allow-unauthenticated-changed
+ - remove-obsoleted-depends-changed
+ - debconf-socket-changed
+
+ - The methods Transaction.set_(locale|allow_unauthenticated|data|
+ debconf_socket|remove_obsoleted_depends) reply with the transaction
+ instance if called async. This makes queing much easier.
+
+ - Remove messages attribute from the Transaction class, see above
+
+ - Remove Transaction.attach method in favour of a new sync method which uses
+ the GetAll method on the D-Bus properties interface.
+
+ - Add set_meta_data method which accepts pairs of key=value
+
+
+* PyGTK widgtes:
+
+ - On the one hand the run method of AptProgressDialog doesn't provide a way
+ to wait until the transaction is done anymore (by iterating on pending gtk
+ events), but on the other hand it now allows to show an error dialog if
+ required (show_error argument) or to close the progress window
+ automatically when the transaction is finished (close_on_finished arguement).
+
+ - Rename AptConfigFilePromptDialog to AptConfigFileConflictDialog
diff --git a/README b/README
new file mode 100644
index 0000000..4dbc096
--- /dev/null
+++ b/README
@@ -0,0 +1,7 @@
+Aptdaemon allows to perform package management tasks in a background process
+controlled by DBus. It is greatly inspired by PackageKit, which doesn't support
+essential features of apt by policy.
+
+The project homepage is at https://launchpad.net/aptdaemon
+
+You can report errors and suggestion there.
diff --git a/README.PackageKit b/README.PackageKit
new file mode 100644
index 0000000..8a4f830
--- /dev/null
+++ b/README.PackageKit
@@ -0,0 +1,76 @@
+AptDaemon optionally is capable of providing the PackageKit system D-Bus
+interface (see http://www.packagekit.org/gtk-doc/api-reference.html). The goal
+is to provide the complete PackageKit API to run client applications smoothly.
+There won't be any additions or changes to the original PackageKit API.
+
+
+Unsupported or not fully covered methods:
+
+ * org.freedesktop.PackageKit:
+
+ - GetTimeSinceAction - could make use of the apt history
+ - GetDaemonState - only reports that all is fine (used for debugging only)
+ - SetProxy (should we change the apt config?)
+
+ * org.freedesktop.PackageKit.Transaction:
+
+ - GetOldTransaction
+ - SetHints (cache_age doens't make any sense with APT, interactive and
+ background/idle not yet implemented, locale and frontend_socket working)
+
+
+Issues and shortcomings:
+
+ - Messages are not used (possible candidates could be UNTRUSTED_PACKAGES,
+ NEWER_PACKAGE_EXISTS, CONFIG_FILES_CHANGED, OTHER_UPDATES_HELD_BACK)
+ - The post update hook (/etc/apt/apt.conf.d/20packagekit) cannot call
+ StateHasChanged since caller and callee are the same process (aptd) and
+ the call is blocking. So you see a time out warning in the apt logs.
+ - Translations of package description don't work
+ - RepoListChanged signal doesn't get emitted
+
+
+Supported roles:
+
+ - Get(Packages|Depends|Requires|Details)
+ - (Download|Install|Remove|Update)Packages
+ - InstallFiles (only one file at a time is supported)
+ - GetUpdates
+ - GetUpdateDetail
+ - GetDistroUpgrades
+ - WhatProvides (no builtin handling, only plugins)
+ - RepoEnable (only enabling, not disabling)
+ - InstallSignature
+ - RepairSystem
+
+Unsupported roles:
+
+ - GetCategories: Curently groups are used, would be nice to reuse the
+ categories from software-center or the Debian ones
+ - GetRepoList: not implemented
+ - RepoSetData: not implemented
+
+Roles we won't support at all because of missing infrastructure in APT:
+
+ - AcceptEula: there isn't any equivalent mechanism in Debian/Ubuntu. Most
+ packages mis-use debconf for this.
+
+Supported filters:
+
+ - (not)installed
+ - (not)free
+ - (not)gui
+ - (not)devel
+ - (not)collections
+ - (not)supported
+ - newest
+ - (not)arch
+
+Not yet supported filters:
+
+ - (not)basename
+ - (not)application
+ - (not)source
+ - (not)downloaded (0.8.9+)
+
+Thanks to Richard Hughsie for his work on PackageKit!
diff --git a/README.tests b/README.tests
new file mode 100644
index 0000000..e08a090
--- /dev/null
+++ b/README.tests
@@ -0,0 +1,7 @@
+Tests are supported via nosetests3 from the python3-nose package.
+
+To run the tests you can either use the "python3 setup.py test" or
+the "nosetests3" command.
+
+Since Python 2 is still supported, you should also run the tests with
+"python setup.py test" or the "nosetests" command.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..430dd78
--- /dev/null
+++ b/TODO
@@ -0,0 +1,26 @@
+HIGH
+
+ * merge mvo's proxy patch
+
+NORMAL
+
+ * client, gtkwidgets.AptProgressDialog: Implement the wait argument on run
+
+ * client: Review documentation and add reply|error_handler notes
+
+ * client/core/worker: Allow to install a list of local package files
+
+ * client: Set the http proxy automattically
+
+ * core: Allow to call AddVendorKey and RemoveVendorKey directly on the
+ daemon interface instead of inside a transaction
+
+ * core/worker: Reduce number of transaction roles handled internally.
+ CommitPackages, UpgradeSystem and UpdateCache should be
+ sufficient
+
+ * core: Add packages attribute to the transaction interface which provides
+ an array of all modified packages of the transaction
+
+ * console: Add dependency calculation and confirmation
+
diff --git a/apport/aptdaemon.py b/apport/aptdaemon.py
new file mode 100644
index 0000000..07c59ab
--- /dev/null
+++ b/apport/aptdaemon.py
@@ -0,0 +1,75 @@
+"""Apport integration to provide better problem reports."""
+# Copyright (C) 2010-2011 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import os
+import re
+
+import apport
+import apport.hookutils
+import apt_pkg
+
+apt_pkg.init()
+
+
+def add_info(report):
+ """Collect and append additional information about a crash.
+
+ Note: Please consider that aptdaemon also manually creates
+ apport reports for failed transaction which don't result
+ in a crash of aptdaemon, see aptdaemon.crash
+
+ :param report: The apport report of an aptdaemon crash
+ """
+ # Attach apt configuration
+ report["AptConfig"] = apt_pkg.config.dump()
+ # Attach the sources list
+ sources_list = ""
+ etc_main = os.path.join(apt_pkg.config.find_dir("Dir::Etc"),
+ apt_pkg.config.find_file("Dir::Etc::sourcelist"))
+ try:
+ with open(etc_main) as fd_main:
+ sources_list += fd_main.read()
+ except:
+ pass
+ dir_parts = os.path.join(apt_pkg.config.find_dir("Dir::Etc"),
+ apt_pkg.config.find_dir("Dir::Etc::Sourceparts"))
+ for filename in os.listdir(dir_parts):
+ if not filename.endswith(".list"):
+ continue
+ try:
+ with open(os.path.join(dir_parts, filename)) as fd_part:
+ sources_list += fd_part.read()
+ except:
+ continue
+ # Remove passwords from the sources list
+ report["SourcesList"] = re.sub("://\w+?:\w+?@", "://USER:SECRET@",
+ sources_list)
+
+ # Add some logging data
+ apport.hookutils.attach_file_if_exists(report, "/var/log/apt/history.log"
+ "AptHistoryLog")
+ apport.hookutils.attach_file_if_exists(report, "/var/log/apt/term.log",
+ "AptTermLog")
+ apport.hookutils.attach_file_if_exists(report, "/var/log/dpkg.log",
+ "DpkgLog")
+ report["SysLog"] = apport.hookutils.recent_syslog(re.compile("AptDaemon"))
+
+# vim:ts=4:sw=4:et
diff --git a/aptd b/aptd
new file mode 100755
index 0000000..f26f335
--- /dev/null
+++ b/aptd
@@ -0,0 +1,41 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+"""
+aptd - apt daemon
+"""
+# Copyright (C) 2008 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+__state__ = "experimental"
+
+import os
+import sys
+
+
+if __name__ == "__main__":
+ # Ensure that the default encoding is set since Python's setlocale doesn't
+ # allow to change it. This can be the case if D-Bus activation is used,
+ # see LP: #1058038 and http://bugs.python.org/issue16162
+ if sys.getfilesystemencoding() == "ascii" and not "LANG" in os.environ:
+ os.environ["LANG"] = "C.UTF-8"
+ os.execv(sys.argv[0], sys.argv)
+
+ import aptdaemon.core
+
+ aptdaemon.core.main()
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/__init__.py b/aptdaemon/__init__.py
new file mode 100644
index 0000000..6a32756
--- /dev/null
+++ b/aptdaemon/__init__.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Transaction based daemon and clients for package management tasks."""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+__state__ = "development"
+__version__ = '1.1.1'
+
+__all__ = ("client", "console", "core", "debconf", "defer", "enums",
+ "errors", "gtk3widgets", "loop", "policykit1", "progress",
+ "test", "utils", "worker")
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/client.py b/aptdaemon/client.py
new file mode 100644
index 0000000..6e411f2
--- /dev/null
+++ b/aptdaemon/client.py
@@ -0,0 +1,1714 @@
+#!/usr/bin/python
+"""
+The module provides a client to the PackageKit DBus interface. It allows to
+perform basic package manipulation tasks in a cross distribution way, e.g.
+to search for packages, install packages or codecs.
+"""
+# Copyright (C) 2008 Canonical Ltd.
+# Copyright (C) 2008 Aidan Skinner <aidan@skinner.me.uk>
+# Copyright (C) 2008 Martin Pitt <martin.pitt@ubuntu.com>
+# Copyright (C) 2008 Tim Lauridsen <timlau@fedoraproject.org>
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+
+import locale
+import os.path
+import shutil
+import weakref
+import sys
+
+import dbus
+import dbus.mainloop.glib
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+from gi.repository import GObject, GLib
+
+from . import enums
+from . import debconf
+import defer
+from defer.utils import deferable
+from .errors import convert_dbus_exception, TransactionFailed
+
+__all__ = ("AptTransaction", "AptClient", "get_transaction", "get_aptdaemon")
+
+
+# the default timeout for dbus method calls
+_APTDAEMON_DBUS_TIMEOUT = 86400
+
+
+class AptTransaction(GObject.Object):
+
+ """Represents an aptdaemon transaction.
+
+ .. note:: This class cannot be inherited since it makes use of
+ a metaclass.
+
+ .. signal:: allow-unauthenticated -> allow
+
+ The signal is emitted when :attr:`allow_unauthenticated` changed.
+
+ :param allow: If unauthenticated packages are allowed to be installed.
+
+ .. signal:: cancellable-changed -> cancellable
+
+ The signal is emitted when :attr:`cancellable` changed.
+
+ :param cancellable: If the transaction can be cancelled now.
+
+ .. signal:: config-file-conflict -> cur, new
+
+ The signal is emitted when :attr:`config_file_conflict` changed.
+
+ :param cur: The path to the current configuration file.
+ :param new: The path to the new configuration file.
+
+ .. signal:: debconf-socket-changed -> path
+
+ The signal is emitted when :attr:`debconf_socket` changed.
+
+ :param path: The path to the socket which will be used to forward
+ debconf communication to the user session.
+
+ .. signal:: dependencies-changed -> installs, re-installs, removals, \
+ purges, upgrades, downgrades, kepts
+
+ The signal is emitted when :attr:`dependencies` changed.
+
+ Most likely after :meth:`simulate()` was called.
+
+ :param installs: List of package which will be installed.
+ :param reinstalls: List of package which will be re-installed.
+ :param removals: List of package which will be removed,
+ :param purges: List of package which will be removed including
+ configuration files.
+ :param upgrades: List of package which will be upgraded.
+ :param downgrades: List of package which will be downgraded to an older
+ version.
+ :param kepts: List of package which will be skipped from upgrading.
+
+ .. signal:: download-changed -> download
+
+ The signal is emitted when :attr:`download` changed.
+
+ :param download: Download size integer in Bytes.
+
+ .. signal:: error -> error_code, error_details
+
+ The signal is emitted when an error occured.
+
+ :param error_code: The error code enumeration, e.g.
+ :data:`aptdaemon.enums.ERROR_NO_CACHE`.
+ :param error_details: The error description string.
+
+ .. signal:: finished -> exit_state
+
+ The signal is emitted when the transaction is completed or has
+ failed.
+
+ :param exit_state: The exit status enumeration string.
+
+ .. signal:: http-proxy-changed -> uri
+
+ The signal is emitted when :attr:`http_proxy` changed.
+
+ :param uri: The URI of the proxy server, e.g. "http://proxy:8080".
+
+ .. signal:: locale-changed -> locale
+
+ The signal is emitted when :attr:`locale` changed.
+
+ :param locale: The language which should be used for messages,
+ eg. "de_DE".
+
+ .. signal:: meta-data-changed -> meta_data
+
+ The signal is emitted when :attr:`meta_data` changed.
+
+ :param meta_data: The latest meta data dictionary.
+
+ .. signal:: medium-required -> name, device
+
+ The signal is emitted when :attr:`required_medium` changed.
+
+ :param name: The name of the volume.
+ :param device: The path of the device in which the volume should
+ be inserted.
+
+ .. signal:: remove-obsoleted-depends-changed -> remove
+
+ The signal is emitted when :attr:`remove_obsoleted_depends` changed.
+
+ :param remove: If obsolete dependencies should also be removed.
+
+ .. signal:: role-changed -> role
+
+ The signal is emitted when :attr:`role` changed.
+
+ :param role: The new role enum, e.g.
+ :data:`~aptdaemon.enums.ROLE_UPDATE_CACHE`.
+
+ .. signal:: space-changed -> space
+
+ The signal is emitted when :attr:`space` changed.
+ Most likely after :meth:`simulate()` was called.
+
+ :param space: Required disk space integer in Bytes. Can be negative
+ if disk space will be freed.
+
+ .. signal:: packages-changed -> installs, re-installs, removals, \
+ purges, upgrades, downgrades
+
+ The signal is emitted when :attr:`packages` changed.
+
+ :param installs: List of package which will be installed.
+ :param reinstalls: List of package which will be re-installed.
+ :param removals: List of package which will be removed,
+ :param purges: List of package which will be removed including
+ configuration files.
+ :param upgrades: List of package which will be upgraded.
+ :param downgrades: List of package which will be downgraded to an older
+ version.
+
+ .. signal:: paused
+
+ The signal is emitted when the transaction was paused.
+ See :attr:`paused` and :sig:`resumed`.
+
+ .. signal:: progress-changed -> progress
+
+ The signal is emitted when :attr:`progress` changed.
+
+ :param progress: The progress integer.
+
+ .. signal:: progress-details-changed -> current_items, total_items, \
+ currenty_bytes, total_bytes, \
+ current_cps, eta
+
+ The signal is emitted when detailed information of the progress
+ is available.
+
+ :param current_items: The number of already processed items.
+ :param total_items: The number of all items.
+ :param current_bytes: The number of already downloaded byte.
+ :param total_bytes: The number of bytes which have to be downloaded
+ totally.
+ :param current_cps: The current download speed in bytes per second.
+ :param eta: The elapsed time in seconds to accomplish the task.
+
+ .. signal:: progress-download-changed -> uri, short_desc, total_size, \
+ current_size, msg
+
+ The signal is emitted when progress information about a single
+ download is available.
+
+ :param uri: The URI of the file which is downloaded.
+ :param status: The status of the downloade, e.g.
+ :data:`~aptdaemon.enums.DOWNLOAD_AUTH_FAILED`.
+ :param short_desc: A short description of the file.
+ :param total_size: The size of the file in Bytes.
+ :param current_size: How much of the file in Bytes has already be
+ downloaded.
+ :param msg: The status or error description.
+
+ .. signal:: resumed
+
+ The signal is emitted when a paused transaction was resumed.
+ See :attr:`paused` and :sig:`paused`.
+
+ .. signal:: terminal-changed -> path
+
+ The signal is emitted when :attr:`terminal` changed.
+
+ :param path: The path to the slave end of the controlling terminal
+ for the underlying dpkg call.
+
+ .. signal:: terminal-attached-changed -> attached
+
+ The signal is emitted when :attr:`term_attached` changed.
+
+ :param attached: If the controlling terminal can be used.
+
+ .. signal:: unauthenticated-changed -> unauthenticated
+
+ The signal is emitted when :attr:`unauthenticated` changed.
+
+ :param unauthenticated: List of unauthenticated packages.
+
+ .. attribute:: cancellable
+
+ If the transaction can be currently cancelled.
+
+ .. attribute:: config_file_conflict
+
+ If there is a conflict in the configuration file handling during
+ an installation this attribute contains a tuple of the path to the
+ current and the new temporary configuration file.
+
+ The :meth:`resolve_config_file_conflict()` can be used to
+ resolve the conflict and continue the processing of the
+ transaction.
+
+ .. attribute:: dependencies
+
+ List of dependencies lists in the following order: packages to
+ install, to re-install, to remove, to purge, to upgrade,
+ to downgrade and to keep.
+
+ You have to call :meth:`simulate()` to calculate the
+ dependencies before the transaction will be executed.
+
+ .. attribute:: download
+
+ The number of Bytes which have to be downloaed.
+
+ You have to call :meth:`simulate()` to calculate the
+ download size before the transaction will be executed.
+
+ .. attribute:: error
+
+ In the case of a failed transaction this attribute holds the
+ corresponding :exc:`errors.TransactionFailed` instance.
+
+ .. attribute:: error_code
+
+ In the case of a failed transaction this attribute is set to the
+ underlying error code, e.g.
+ :data:`enums.ERROR_PACKAGE_DOWNLOAD_FAILED`.
+
+ .. attribute:: error_details
+
+ In the case of a failed transaction this attribute contains a
+ detailed error message in the language of the transaction.
+
+ .. attribute:: exit
+
+ Contains the exit status enum if the transaction has been completed,
+ e.g. :data:`enums.EXIT_SUCCESS` or :data:`enums.EXIT_FAILED`.
+
+ .. attribute:: http_proxy
+
+ The URI to the http proxy server which should be used only for this
+ transaction, e.g. "http://proxy:8080". It is recommended to set
+ the system wide proxy server instead of setting this attribute
+ for every transaction.
+
+ See :meth:`set_http_proxy()`.
+
+ .. attribute:: meta_data
+
+ Dictionary of optional meta data which can be set by client
+ applications. See :meth:`set_meta_data()`.
+
+ .. attribute:: packages
+
+ List of package lists which will be explicitly changed in the
+ following order: packages to install, to re-install, to remove,
+ to purge, to upgrade, to downgrade.
+
+ .. attribute:: paused
+
+ If the transaction is currently paused, e.g. it is required to
+ insert a medium to install from.
+
+ .. attribute:: progress
+
+ An integer ranging from 0 to 101 to describe the progress of the
+ transaction.
+
+ .. note:: A value of 101 indicates that there cannot be made any
+ assumptions on the progress of the transaction.
+
+ .. attribute:: remove_obsoleted_depends
+
+ If dependencies which have been required by a removed package only
+ should be removed, too.
+
+ .. attribute:: required_medium
+
+ If a medium should be inserted to continue the fetch phase of a
+ transaction, this attribute contains a tuple of the device path of
+ of the drive which should be used and secondly of the name of the
+ medium.
+
+ The :func:`provide_medium()` method should be used to notify aptdaemon
+ about an inserted medium and to continue processing the transaction.
+
+ .. attribute:: role
+
+ The kind of action which is performed by the transaction, e.g.
+ :data:`enums.ROLE_UPGRADE_SYSTEM`.
+
+ .. attribute:: space
+
+ The required disk space in Bytes. Will be negative if space is
+ freed.
+
+ You have to call :meth:`simulate()` to calculate the
+ download size before the transaction will be executed.
+
+ .. attribute:: status
+
+ The enum of the current status, e.g.
+ :data:`enums.STATUS_DOWNLOADING`.
+
+ .. attribute:: status_details
+
+ A string describing the current status of the transaction.
+
+ .. attribute:: tid
+
+ The unique identifier of the transaction. It is also the D-Bus path
+ of the corresponding transaction object.
+
+ .. attribute:: term_attached
+
+ If the the package manager can be controlled using the controlling
+ terminal specified by :func:`set_terminal()`.
+
+ .. attribute:: unauthenticated
+
+ List of packages which are going to be installed but are not
+ downloaded from an authenticated repository.
+
+ You have to call :meth:`simulate()` to calculate the
+ dependencies before the transaction will be executed.
+ """
+
+ __gsignals__ = {"finished": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "dependencies-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT)),
+ "download-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT64,)),
+ "space-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT64,)),
+ "error": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING, GObject.TYPE_STRING)),
+ "role-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "terminal-attached-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+ "cancellable-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+ "meta-data-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,)),
+ "status-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "status-details-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "progress-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT,)),
+ "progress-details-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT,
+ GObject.TYPE_INT,
+ GObject.TYPE_INT64,
+ GObject.TYPE_INT64,
+ GObject.TYPE_INT,
+ GObject.TYPE_INT64)),
+ "progress-download-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING,
+ GObject.TYPE_STRING,
+ GObject.TYPE_INT64,
+ GObject.TYPE_INT64,
+ GObject.TYPE_STRING)),
+ "packages-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT)),
+ "unauthenticated-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,)),
+ "paused": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ ()),
+ "resumed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ ()),
+ "allow-unauthenticated-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+ "remove-obsoleted-depends-changed": (
+ GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+ "locale-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "terminal-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "debconf-socket-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "http-proxy-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+ "medium-required": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING)),
+ "config-file-conflict": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING)),
+ }
+
+ _tid_cache = weakref.WeakValueDictionary()
+
+ def __new__(cls, tid, *args, **kwargs):
+ """Cache transactions with identical tid."""
+ try:
+ return AptTransaction._tid_cache[tid]
+ except KeyError:
+ value = GObject.Object.__new__(cls, tid, *args, **kwargs)
+ AptTransaction._tid_cache[tid] = value
+ return value
+
+ def __init__(self, tid, bus=None):
+ GObject.GObject.__init__(self)
+ self.tid = tid
+ self.role = enums.ROLE_UNSET
+ self.error = None
+ self.error_code = None
+ self.error_details = None
+ self.exit = enums.EXIT_UNFINISHED
+ self.cancellable = False
+ self.term_attached = False
+ self.required_medium = None
+ self.config_file_conflict = None
+ self.status = None
+ self.status_details = ""
+ self.progress = 0
+ self.paused = False
+ self.http_proxy = None
+ self.dependencies = [[], [], [], [], [], [], []]
+ self.packages = [[], [], [], [], []]
+ self.unauthenticated = []
+ self.meta_data = {}
+ self.remove_obsoleted_depends = False
+ self.download = 0
+ self.downloads = {}
+ self.space = 0
+ self.locale = ""
+ self._method = None
+ self._args = []
+ self._debconf_helper = None
+ # Connect the signal handlers to the DBus iface
+ if not bus:
+ bus = dbus.SystemBus()
+ self._proxy = bus.get_object("org.debian.apt", tid)
+ self._iface = dbus.Interface(self._proxy, "org.debian.apt.transaction")
+ # Watch for a crashed daemon which orphaned the dbus object
+ self._owner_watcher = bus.watch_name_owner("org.debian.apt",
+ self._on_name_owner_changed)
+ # main signals
+ self._signal_matcher = \
+ self._iface.connect_to_signal("PropertyChanged",
+ self._on_property_changed)
+
+ def _on_name_owner_changed(self, connection):
+ """Fail the transaction if the daemon died."""
+ if connection == "" and self.exit == enums.EXIT_UNFINISHED:
+ self._on_property_changed("Error", (enums.ERROR_DAEMON_DIED,
+ "It seems that the daemon "
+ "died."))
+ self._on_property_changed("Cancellable", False)
+ self._on_property_changed("TerminalAttached", False)
+ self._on_property_changed("ExitState", enums.EXIT_FAILED)
+
+ def _on_property_changed(self, property_name, value):
+ """Callback for the PropertyChanged signal."""
+ if property_name == "TerminalAttached":
+ self.term_attached = value
+ self.emit("terminal-attached-changed", value)
+ elif property_name == "Cancellable":
+ self.cancellable = value
+ self.emit("cancellable-changed", value)
+ elif property_name == "DebconfSocket":
+ self.emit("debconf-socket-changed", value)
+ elif property_name == "RemoveObsoletedDepends":
+ self.emit("remove-obsoleted-depends-changed", value)
+ self.remove_obsoleted_depends = value
+ elif property_name == "AllowUnauthenticated":
+ self.emit("allow-unauthenticated-changed", value)
+ elif property_name == "Terminal":
+ self.emit("terminal-changed", value)
+ elif property_name == "Dependencies":
+ self.dependencies = value
+ self.emit("dependencies-changed", *value)
+ elif property_name == "Packages":
+ self.packages = value
+ self.emit("packages-changed", *value)
+ elif property_name == "Unauthenticated":
+ self.unauthenticated = value
+ self.emit("unauthenticated-changed", value)
+ elif property_name == "Locale":
+ self.locale = value
+ self.emit("locale-changed", value)
+ elif property_name == "Role":
+ self.role = value
+ self.emit("role-changed", value)
+ elif property_name == "Status":
+ self.status = value
+ self.emit("status-changed", value)
+ elif property_name == "StatusDetails":
+ self.status_details = value
+ self.emit("status-details-changed", value)
+ elif property_name == "ProgressDownload":
+ uri, status, desc, size, download, msg = value
+ if uri:
+ self.downloads[uri] = (status, desc, size, download, msg)
+ self.emit("progress-download-changed", *value)
+ elif property_name == "Progress":
+ self.progress = value
+ self.emit("progress-changed", value)
+ elif property_name == "ConfigFileConflict":
+ self.config_file_conflict = value
+ if value != ("", ""):
+ self.emit("config-file-conflict", *value)
+ elif property_name == "MetaData":
+ self.meta_data = value
+ self.emit("meta-data-changed", value)
+ elif property_name == "Paused":
+ self.paused = value
+ if value:
+ self.emit("paused")
+ else:
+ self.emit("resumed")
+ elif property_name == "RequiredMedium":
+ self.required_medium = value
+ if value != ("", ""):
+ self.emit("medium-required", *value)
+ elif property_name == "ProgressDetails":
+ self.emit("progress-details-changed", *value)
+ elif property_name == "Download":
+ self.download = value
+ self.emit("download-changed", value)
+ elif property_name == "Space":
+ self.space = value
+ self.emit("space-changed", value)
+ elif property_name == "HttpProxy":
+ self.http_proxy = value
+ self.emit("http-proxy-changed", value)
+ elif property_name == "Error":
+ self.error_code, self.error_details = value
+ if self.error_code != "":
+ self.error = TransactionFailed(self.error_code,
+ self.error_details)
+ self.emit("error", *value)
+ elif property_name == "ExitState":
+ if value != enums.EXIT_UNFINISHED and value != self.exit:
+ self.exit = value
+ if self._debconf_helper:
+ self._debconf_helper.stop()
+ self._disconnect_from_dbus()
+ # Finally sync all properties a last time. We cannot ensure
+ # that the ExitState signal is the last one, so some
+ # other PropertyChanged signals could be lost, see LP#747172
+ self.sync(reply_handler=self._on_final_sync_done,
+ error_handler=self._on_final_sync_done)
+
+ def _on_final_sync_done(self, data):
+ self._owner_watcher.cancel()
+ self.emit("finished", self.exit)
+
+ @deferable
+ @convert_dbus_exception
+ def sync(self, reply_handler=None, error_handler=None):
+ """Sync the properties of the transaction with the daemon.
+
+ This method is called automatically on the creation of the
+ AptTransaction instance.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+ """
+ def sync_properties(prop_dict):
+ for property_name, value in prop_dict.items():
+ self._on_property_changed(property_name, value)
+ if reply_handler:
+ reply_handler(self)
+ if reply_handler and error_handler:
+ self._proxy.GetAll("org.debian.apt.transaction",
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=sync_properties,
+ error_handler=error_handler)
+ else:
+ properties = self._proxy.GetAll(
+ "org.debian.apt.transaction",
+ dbus_interface=dbus.PROPERTIES_IFACE)
+ sync_properties(properties)
+
+ @deferable
+ @convert_dbus_exception
+ def run_after(self, transaction, reply_handler=None, error_handler=None):
+ """Chain this transaction after the given one. The transaction will
+ fail if the previous one fails.
+
+ To start processing of the chain you have to call :meth:`run()`
+ of the first transaction. The others will be queued after it
+ automatically.
+
+ :param transaction: An AptTransaction on which this one depends.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+ """
+ try:
+ return self._iface.RunAfter(transaction.tid,
+ error_handler=error_handler,
+ reply_handler=reply_handler,
+ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ except Exception as error:
+ if error_handler:
+ error_handler(error)
+ else:
+ raise
+
+ @deferable
+ @convert_dbus_exception
+ def run(self, reply_handler=None, error_handler=None):
+ """Queue the transaction for processing.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.TransactionFailed, dbus.DBusException
+ """
+ try:
+ return self._iface.Run(error_handler=error_handler,
+ reply_handler=reply_handler,
+ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ except Exception as error:
+ if error_handler:
+ error_handler(error)
+ else:
+ raise
+
+ @deferable
+ @convert_dbus_exception
+ def simulate(self, reply_handler=None, error_handler=None):
+ """Simulate the transaction to calculate the dependencies, the
+ required download size and the required disk space.
+
+ The corresponding properties of the AptTransaction will be updated.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.TransactionFailed, dbus.DBusException
+ """
+ self._iface.Simulate(reply_handler=reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def cancel(self, reply_handler=None, error_handler=None):
+ """Cancel the running transaction.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.NotAuthorizedError, dbus.DBusException
+ """
+ self._iface.Cancel(reply_handler=reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def set_http_proxy(self, proxy, reply_handler=None, error_handler=None):
+ """Use the given http proxy for downloading packages in this
+ transaction.
+
+ :param proxy: The URL of the proxy server, e.g. "http://proxy:8080"
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.NotAuthorizedError, dbus.DBusException
+ aptdaemon.errors.ForeignTransaction,
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ self._proxy.Set("org.debian.apt.transaction", "HttpProxy", proxy,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def set_remove_obsoleted_depends(self, remove_obsoleted_depends,
+ reply_handler=None, error_handler=None):
+ """Include no longer required dependencies which have been installed
+ automatically when removing packages.
+
+ :param remove_obsoleted_depends: If obsolete dependencies should be
+ also removed.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ self._proxy.Set("org.debian.apt.transaction",
+ "RemoveObsoletedDepends", remove_obsoleted_depends,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def set_allow_unauthenticated(self, allow_unauthenticated,
+ reply_handler=None, error_handler=None):
+ """Allow to install unauthenticated packages.
+
+ Unauthenticated packages are from the repository of a vendor whose
+ key hasn't been installed. By default this is not allowed.
+
+ :param allow_unauthenticated: If unauthenticated packages can be
+ installed.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ self._proxy.Set("org.debian.apt.transaction",
+ "AllowUnauthenticated", allow_unauthenticated,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def set_debconf_frontend(self, frontend, reply_handler=None,
+ error_handler=None):
+ """Setup a debconf frontend to answer questions of the maintainer
+ scripts.
+
+ Debian allows packages to interact with the user during installation,
+ configuration and removal phase via debconf. Aptdaemon forwards the
+ communication to a debconf instance running as the user of the
+ client application.
+
+ :param frontend: The name of the debconf frontend which should be
+ launched, e.g. gnome or kde. Defaults to gnome.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+
+ pk_socket = "/run/user/%d/pk-debconf-socket" % os.getuid()
+ if os.path.exists(pk_socket):
+ self._proxy.Set("org.debian.apt.transaction", "DebconfSocket",
+ pk_socket,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+ return
+
+ self._debconf_helper = debconf.DebconfProxy(frontend)
+ self._proxy.Set("org.debian.apt.transaction", "DebconfSocket",
+ self._debconf_helper.socket_path,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+ self._debconf_helper.start()
+
+ @deferable
+ @convert_dbus_exception
+ def set_meta_data(self, **kwargs):
+ """Store additional meta information of the transaction in the
+ MetaData property of the transaction.
+
+ The method accepts key=value pairs. The key has to be prefixed with
+ an underscore separated identifier of the client application.
+
+ In the following example Software-Center sets an application name
+ and icon:
+
+ >>> Transaction.set_meta_data(sc_icon="shiny", sc_app="xterm")
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ reply_handler = kwargs.pop("reply_handler", None)
+ error_handler = kwargs.pop("error_handler", None)
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ meta_data = dbus.Dictionary(kwargs, signature="sv")
+ self._proxy.Set("org.debian.apt.transaction", "MetaData", meta_data,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def set_terminal(self, ttyname, reply_handler=None, error_handler=None):
+ """Allow to set a controlling terminal for the underlying dpkg call.
+
+ See the source code of gtk3widgets.AptTerminal or console.ConsoleClient
+ as example.
+
+ >>> master, slave = pty.openpty()
+ >>> transaction.set_terminal(os.ttyname(slave))
+
+ :param terminal: The slave end of a tty.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ self._proxy.Set("org.debian.apt.transaction", "Terminal", ttyname,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ def _disconnect_from_dbus(self):
+ """Stop monitoring the progress of the transaction."""
+ if hasattr(self, "_signal_matcher"):
+ self._signal_matcher.remove()
+ del self._signal_matcher
+
+ @deferable
+ @convert_dbus_exception
+ def set_locale(self, locale_name, reply_handler=None, error_handler=None):
+ """Set the language for status and error messages.
+
+ :param locale: The locale name, e.g. de_DE@UTF-8.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ if reply_handler:
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
+ self._proxy.Set("org.debian.apt.transaction", "Locale", locale_name,
+ dbus_interface=dbus.PROPERTIES_IFACE,
+ reply_handler=_reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def provide_medium(self, medium, reply_handler=None, error_handler=None):
+ """Continue a paused transaction which waits for a medium to install
+ from.
+
+ :param medium: The name of the provided medium.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ self._iface.ProvideMedium(medium, reply_handler=reply_handler,
+ error_handler=error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def resolve_config_file_conflict(self, config, answer, reply_handler=None,
+ error_handler=None):
+ """Continue a paused transaction which waits for the resolution of a
+ configuration file conflict.
+
+ :param config: The path to the current version of the configuration
+ file.
+ :param answer: Can be either "keep" or "replace".
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: aptdaemon.errors.ForeignTransaction, dbus.DBusException
+ """
+ self._iface.ResolveConfigFileConflict(config, answer,
+ reply_handler=reply_handler,
+ error_handler=error_handler)
+
+
+class AptClient(object):
+
+ """Provides a complete client for aptdaemon."""
+
+ def __init__(self, bus=None):
+ """Return a new AptClient instance."""
+ if bus:
+ self.bus = bus
+ else:
+ self.bus = dbus.SystemBus()
+ # Catch an invalid locale
+ try:
+ self._locale = "%s.%s" % locale.getdefaultlocale()
+ except ValueError:
+ self._locale = None
+ self.terminal = None
+
+ @convert_dbus_exception
+ def get_trusted_vendor_keys(self, reply_handler=None, error_handler=None):
+ """Get the list of the installed vendor keys which are used to
+ authenticate packages.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: Fingerprints of all installed vendor keys.
+ """
+ daemon = get_aptdaemon(self.bus)
+ keys = daemon.GetTrustedVendorKeys(reply_handler=reply_handler,
+ error_handler=error_handler)
+ return keys
+
+ @deferable
+ @convert_dbus_exception
+ def upgrade_system(self, safe_mode=True, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to apply all avaibale upgrades.
+
+ :param safe_mode: If True only already installed packages will be
+ updated. Updates which require to remove installed packages or to
+ install additional packages will be skipped.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a
+ defer.Deferred. This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("UpgradeSystem", [safe_mode],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def install_packages(self, package_names, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to install the given packages from the
+ reporitories.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ :param package_names: List of names of the packages which should be
+ installed.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a
+ defer.Deferred. This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("InstallPackages", [package_names],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def add_repository(self, src_type, uri, dist, comps=None, comment="",
+ sourcesfile="", wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to enable a repository.
+
+ :param src_type: The type of the repository (deb, deb-src).
+ :param uri: The main repository URI
+ (e.g. http://archive.ubuntu.com/ubuntu)
+ :param dist: The distribution to use (e.g. stable or lenny-backports).
+ :param comps: List of components (e.g. main, restricted).
+ :param comment: A comment which should be added to the sources.list.
+ :param sourcesfile: (Optoinal) filename in sources.list.d.
+
+ :param wait: if True run the transaction immediately and return
+ its exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ # dbus can not deal with empty lists and will error
+ if not comps:
+ comps = [""]
+ return self._run_transaction("AddRepository",
+ [src_type, uri, dist, comps, comment,
+ sourcesfile],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def add_vendor_key_from_keyserver(self, keyid, keyserver, wait=False,
+ reply_handler=None, error_handler=None):
+ """Create a new transaction to download and install the key of a
+ software vendor. The key is used to authenticate packages of the
+ vendor.
+
+ :param keyid: The id of the GnuPG key (e.g. 0x0EB12F05)
+ :param keyserver: The server to get the key from (e.g.
+ keyserver.ubuntu.com)
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("AddVendorKeyFromKeyserver",
+ [keyid, keyserver],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def add_vendor_key_from_file(self, path, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to install the key file of a software
+ vendor. The key is used to authenticate packages of the vendor.
+
+ :param path: The absolute path to the key file.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("AddVendorKeyFromFile", [path],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def remove_vendor_key(self, fingerprint, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to remove the key of a software vendor
+ from the list of trusted ones.
+
+ The key is used to authenticate the origin of packages.
+
+ :param fingerprint: The fingerprint of the key.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("RemoveVendorKey", [fingerprint],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def install_file(self, path, force=False, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to install a local package file.
+
+ :param path: The absolute path to the .deb-file.
+ :param force: Force the installation of a .deb-file even if it
+ violates the quality standard defined in the packaging policy.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ # Root is not allowed to access FUSE file systems. So copy files
+ # to the local system.
+ # FIXME: the locally cached one should be removed afterwards
+ home = os.getenv("HOME", None)
+ if home and path.startswith(os.path.join(home, ".gvfs")):
+ shutil.copy(path, "/tmp")
+ path = os.path.join("/tmp", os.path.basename(path))
+ return self._run_transaction("InstallFile", [path, force],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def upgrade_packages(self, package_names, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to upgrade installed packages.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ :param package_names: The list of package which should be upgraded.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("UpgradePackages", [package_names],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def remove_packages(self, package_names, wait=False,
+ reply_handler=None, error_handler=None):
+ """Create a new transaction to remove installed packages.
+
+ :param package_names: The list of packages which should be removed.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("RemovePackages", [package_names],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def commit_packages(self, install, reinstall, remove, purge, upgrade,
+ downgrade, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to perform a complex package management
+ task which allows to install, remove, upgrade or downgrade several
+ packages at the same time.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ :param install: List of packages to install.
+ :param reinstall: List of packages to re-install.
+ :param remove: List of packages to remove.
+ :param purge: List of packages to purge.
+ :param upgrade: List of packages to upgrade.
+ :param downgrade: List of packages to downgrade. The version of the
+ package has to be appended to the name separated by a "=", e.g.
+ "xterm=272-1".
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ def check_empty_list(lst):
+ if not lst:
+ return [""]
+ else:
+ return lst
+ pkgs = [check_empty_list(lst) for lst in [install, reinstall, remove,
+ purge, upgrade, downgrade]]
+ return self._run_transaction("CommitPackages", pkgs,
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def fix_broken_depends(self, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to fix unsatisfied dependencies of
+ already installed packages.
+
+ Corresponds to the ``apt-get -f install`` call.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("FixBrokenDepends", [],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def reconfigure(self, packages, priority="default",
+ wait=False, reply_handler=None, error_handler=None):
+ """Create a new transaction to reconfigure already installed packages.
+
+ Corresponds to the ``dpkg-reconfigure`` call.
+
+ :param packages: List of package names which should be reconfigured.
+ :param priority: The minimum priority of question that will be
+ displayed.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("Reconfigure", [packages, priority], wait,
+ reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def fix_incomplete_install(self, wait=False, reply_handler=None,
+ error_handler=None):
+ """Create a new transaction to complete a previous interrupted
+ installation.
+
+ Corresponds to the ``dpkg --confgiure -a`` call.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("FixIncompleteInstall", [], wait,
+ reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def update_cache(self, sources_list=None, wait=False,
+ reply_handler=None, error_handler=None):
+ """Create a new transaction to update the package cache.
+
+ The repositories will be queried for installable packages.
+
+ :param sources_list: Path to a sources.list which contains repositories
+ that should be updated only. The other repositories will
+ be ignored in this case. Can be either the file name of a snippet
+ in /etc/apt/sources.list.d or an absolute path.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ if sources_list:
+ return self._run_transaction("UpdateCachePartially",
+ [sources_list], wait,
+ reply_handler, error_handler)
+ else:
+ return self._run_transaction("UpdateCache", [], wait,
+ reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def enable_distro_component(self, component, wait=False,
+ reply_handler=None, error_handler=None):
+ """Create a new transaction to enable the component of the
+ distribution repository.
+
+ :param component: The name of the component, e.g. main or universe.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("EnableDistroComponent", [component],
+ wait, reply_handler, error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def clean(self, wait=False, reply_handler=None, error_handler=None):
+ """Remove all downloaded files.
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("Clean", [], wait, reply_handler,
+ error_handler)
+
+ @deferable
+ @convert_dbus_exception
+ def add_license_key(self, pkg_name, json_token, server_name, wait=False,
+ reply_handler=None, error_handler=None):
+ """Install a license key to use a piece of proprietary software.
+
+ :param pkg_name: The package which requires the license
+ :param json_token: The oauth token in json format
+ :param server_name: The server name (ubuntu-procduction,
+ ubuntu-staging)
+
+ :param wait: if True run the transaction immediately and return its
+ exit state instead of the transaction itself.
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ return self._run_transaction("AddLicenseKey",
+ [pkg_name, json_token, server_name],
+ wait, reply_handler,
+ error_handler)
+
+ def _run_transaction(self, method_name, args, wait, reply_handler,
+ error_handler):
+ async_ = reply_handler and error_handler
+ try:
+ deferred = self._run_transaction_helper(method_name, args, wait,
+ async_)
+ except Exception as error:
+ if async_:
+ error_handler(error)
+ return
+ else:
+ raise
+ if async_:
+ def on_error(error):
+ """Convert the DeferredException to a normal exception."""
+ try:
+ error.raise_exception()
+ except Exception as error:
+ error_handler(error)
+ deferred.add_callbacks(reply_handler)
+ deferred.add_errback(on_error)
+ return deferred
+ else:
+ # Iterate on the main loop - we cannot use a sub loop here,
+ # since the D-Bus python bindings only work on the main loop
+ context = GLib.main_context_default()
+ while not hasattr(deferred, "result"):
+ context.iteration(True)
+ # If there has been an error in the helper raise it
+ if isinstance(deferred.result, defer.DeferredException):
+ deferred.result.raise_exception()
+ trans = deferred.result
+ if trans.error:
+ raise trans.error
+ if wait:
+ # Wait until the transaction is complete and the properties
+ # of the transaction have been updated
+ while trans.exit == enums.EXIT_UNFINISHED:
+ context.iteration(True)
+ return trans.exit
+ else:
+ return trans
+
+ @defer.inline_callbacks
+ def _run_transaction_helper(self, method_name, args, wait, async_):
+ daemon = get_aptdaemon(self.bus)
+ dbus_method = daemon.get_dbus_method(method_name)
+ if async_:
+ deferred = defer.Deferred()
+ dbus_method(reply_handler=deferred.callback,
+ error_handler=deferred.errback, *args,
+ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ tid = yield deferred
+ else:
+ tid = dbus_method(*args, timeout=_APTDAEMON_DBUS_TIMEOUT)
+ trans = AptTransaction(tid, self.bus)
+ if self._locale:
+ yield trans.set_locale(self._locale)
+ if self.terminal:
+ yield trans.set_terminal(self.terminal)
+ yield trans.sync()
+ if wait and async_:
+ deferred_wait = defer.Deferred()
+ sig = trans.connect("finished",
+ lambda trans, exit:
+ (exit != enums.EXIT_UNFINISHED and
+ deferred_wait.callback(exit)))
+ yield trans.run()
+ yield deferred_wait
+ GLib.source_remove(sig)
+ defer.return_value(trans.exit)
+ elif wait:
+ yield trans.run()
+ defer.return_value(trans)
+
+
+@deferable
+@convert_dbus_exception
+def get_transaction(tid, bus=None, reply_handler=None, error_handler=None):
+ """Get an existing transaction by its identifier.
+
+ :param tid: The identifer and D-Bus path of the transaction
+ e.g. /org/debian/apt/transaction/78904e5f9fa34098879e768032789109
+ :param bus: Optionally the D-Bus on which aptdaemon listens. Defaults
+ to the system bus.
+
+ :param reply_handler: Callback function. If specified in combination
+ with error_handler the method will be called asynchrounsouly.
+ :param error_handler: Errback function. In case of an error the given
+ callback gets the corresponding exception instance.
+ :param defer: Run the method asynchrounsly and return a defer.Deferred.
+ This options is only available as a keyword.
+
+ :raises: dbus.DBusException
+
+ :returns: An AptTransaction instance.
+ """
+ if not bus:
+ bus = dbus.SystemBus()
+ trans = AptTransaction(tid, bus)
+ if error_handler and reply_handler:
+ trans.sync(reply_handler=reply_handler, error_handler=error_handler)
+ else:
+ trans.sync()
+ return trans
+
+
+def get_size_string(bytes):
+ """Returns a human friendly string for a given byte size.
+
+ Note: The bytes are skipped from the returned unit: 1024 returns 1K
+ """
+ for unit in ["", "K", "M", "G"]:
+ if bytes < 1024.0:
+ return "%3.1f%s" % (bytes, unit)
+ bytes /= 1024.0
+ return "%3.1f%s" % (bytes, "T")
+
+
+def get_aptdaemon(bus=None):
+ """Get the daemon D-Bus interface.
+
+ :param bus: Optionally the D-Bus on which aptdaemon listens. Defaults
+ to the system bus.
+
+ :raises: dbus.DBusException
+
+ :returns: An dbus.Interface instance.
+ """
+ if not bus:
+ bus = dbus.SystemBus()
+ return dbus.Interface(bus.get_object("org.debian.apt",
+ "/org/debian/apt",
+ False),
+ "org.debian.apt")
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/config.py b/aptdaemon/config.py
new file mode 100644
index 0000000..5e1219a
--- /dev/null
+++ b/aptdaemon/config.py
@@ -0,0 +1,243 @@
+"""Handling configuration files."""
+# Copyright (C) 2010 Sebastian Heinlein <sevel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("ConfigWriter",)
+
+import logging
+import os
+
+import apt_pkg
+
+log = logging.getLogger("AptDaemon.ConfigWriter")
+
+
+class Value(object):
+
+ """Represents a value with position information.
+
+ .. attribute:: string
+ The value string.
+
+ .. attribute:: line
+ The line number of the configuration file in which the value is set.
+
+ .. attribute:: start
+ The position in the line at which the value starts.
+
+ .. attribute:: end
+ The position in the line at which the value ends.
+
+ .. attribute:: quotes
+ The outer qoutes of the value: ' or "
+ """
+
+ def __init__(self, line, start, quotes):
+ self.string = ""
+ self.start = start
+ self.end = None
+ self.line = line
+ self.quotes = quotes
+
+ def __cmp__(self, other):
+ return self.string == other
+
+ def __repr__(self):
+ return "Value: '%s' (line %s: %s to %s)" % (self.string, self.line,
+ self.start, self.end)
+
+
+class ConfigWriter(object):
+
+ """Modifies apt configuration files."""
+
+ def parse(self, lines):
+ """Parse an ISC based apt configuration.
+
+ :param lines: The list of lines of a configuration file.
+
+ :returns: Dictionary of key, values found in the parsed configuration.
+ """
+ options = {}
+ in_comment = False
+ in_value = False
+ prev_char = None
+ option = []
+ value = None
+ option_name = ""
+ value_list = []
+ in_brackets = True
+ level = 0
+ for line_no, line in enumerate(lines):
+ for char_no, char in enumerate(line):
+ if not in_comment and char == "*" and prev_char == "/":
+ in_comment = True
+ prev_char = ""
+ continue
+ elif in_comment and char == "/" and prev_char == "*":
+ # A multiline comment was closed
+ in_comment = False
+ prev_char = ""
+ option_name = option_name[:-1]
+ continue
+ elif in_comment:
+ # We ignore the content of multiline comments
+ pass
+ elif not in_value and ((char == "/" and prev_char == "/") or
+ char == "#"):
+ # In the case of a line comment continue processing
+ # the next line
+ prev_char = ""
+ option_name = option_name[:-1]
+ break
+ elif char in "'\"":
+ if in_value and value.quotes == char:
+ value.end = char_no
+ in_value = not in_value
+ elif not value:
+ value = Value(line_no, char_no, char)
+ in_value = not in_value
+ else:
+ value.string += char
+ elif in_value:
+ value.string += char
+ elif option_name and char == ":" and prev_char == ":":
+ option.append(option_name[:-1])
+ option_name = ""
+ elif char.isalpha() or char in "/-:._+":
+ option_name += char.lower()
+ elif char == ";":
+ if in_brackets:
+ value_list.append(value)
+ value = None
+ continue
+ if value_list:
+ log.debug("Found %s \"%s\"", "::".join(option),
+ value_list)
+ options["::".join(option)] = value_list
+ value_list = []
+ elif value:
+ log.debug("Found %s \"%s\"", "::".join(option), value)
+ options["::".join(option)] = value
+ else:
+ log.debug("Skipping empty key %s", "::".join(option))
+ value = None
+ if level > 0:
+ option.pop()
+ else:
+ option = []
+ elif char == "}":
+ level -= 1
+ in_brackets = False
+ elif char == "{":
+ level += 1
+ if option_name:
+ option.append(option_name)
+ option_name = ""
+ in_brackets = True
+ elif char in "\t\n ":
+ if option_name:
+ option.append(option_name)
+ option_name = ""
+ in_brackets = False
+ else:
+ raise ValueError("Unknown char '%s' in line: '%s'" %
+ (char, line))
+ prev_char = char
+ return options
+
+ def set_value(self, option, value, defaultfile):
+ """Change the value of an option in the configuration.
+
+ :param option: The name of the option, e.g.
+ 'apt::periodic::AutoCleanInterval'.
+ :param value: The value of the option. Will be converted to string.
+ :param defaultfile: The filename of the ``/etc/apt/apt.conf.d``
+ configuration snippet in which the option should be set.
+ If the value is overriden by a later configuration file snippet
+ it will be disabled in the corresponding configuration file.
+ """
+ # FIXME: Support value lists
+ # Convert the value to string
+ if value is True:
+ value = "true"
+ elif value is False:
+ value = "false"
+ else:
+ value = str(value)
+ # Check all configuration file snippets
+ etc_parts = os.path.join(apt_pkg.config.find_dir("Dir::Etc"),
+ apt_pkg.config.find_dir("Dir::Etc::Parts"))
+ for filename in os.listdir(etc_parts):
+ if filename < defaultfile:
+ continue
+ with open(os.path.join(etc_parts, filename)) as fd:
+ lines = fd.readlines()
+ config = self.parse(lines)
+ try:
+ val = config[option.lower()]
+ except KeyError:
+ if filename == defaultfile:
+ lines.append("%s '%s';\n" % (option, value))
+ else:
+ continue
+ else:
+ # Check if the value needs to be changed at all
+ if ((value == "true" and
+ val.string.lower() in ["yes", "with", "on",
+ "enable"]) or
+ (value == "false" and
+ val.string.lower() in ["no", "without", "off",
+ "disable"]) or
+ (str(value) == val.string)):
+ continue
+ if filename == defaultfile:
+ line = lines[val.line]
+ new_line = line[:val.start + 1]
+ new_line += value
+ new_line += line[val.end:]
+ lines[val.line] = new_line
+ else:
+ # Comment out existing values instead in non default
+ # configuration files
+ # FIXME Quite dangerous for brackets
+ lines[val.line] = "// %s" % lines[val.line]
+ with open(os.path.join(etc_parts, filename), "w") as fd:
+ log.debug("Writting %s", filename)
+ fd.writelines(lines)
+ if not os.path.exists(os.path.join(etc_parts, defaultfile)):
+ with open(os.path.join(etc_parts, defaultfile), "w") as fd:
+ log.debug("Writting %s", filename)
+ line = "%s '%s';\n" % (option, value)
+ fd.write(line)
+
+
+def main():
+ apt_pkg.init_config()
+ cw = ConfigWriter()
+ for filename in sorted(os.listdir("/etc/apt/apt.conf.d/")):
+ lines = open("/etc/apt/apt.conf.d/%s" % filename).readlines()
+ cw.parse(lines)
+ print((cw.set_value("huhu::abc", "lumpi", "10glatzor")))
+
+if __name__ == "__main__":
+ main()
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/console.py b/aptdaemon/console.py
new file mode 100644
index 0000000..e4a9e71
--- /dev/null
+++ b/aptdaemon/console.py
@@ -0,0 +1,691 @@
+"""
+This module provides a command line client for the aptdaemon
+"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <sevel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("ConsoleClient", "main")
+
+import array
+import fcntl
+from gettext import gettext as _
+from gettext import ngettext
+import locale
+from optparse import OptionParser
+import os
+import pty
+import re
+import termios
+import time
+import tty
+import signal
+import sys
+
+from aptsources.sourceslist import SourceEntry
+from gi.repository import GLib
+import dbus.mainloop.glib
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+import aptdaemon
+from . import client
+from . import enums
+from . import errors
+
+ANSI_BOLD = chr(27) + "[1m"
+ANSI_RESET = chr(27) + "[0m"
+
+PY3K = sys.version_info.major > 2
+
+
+class ConsoleClient:
+ """
+ Command line interface client to aptdaemon
+ """
+ def __init__(self, show_terminal=True, allow_unauthenticated=False,
+ details=False):
+ self._client = client.AptClient()
+ self.master_fd, self.slave_fd = pty.openpty()
+ self._signals = []
+ signal.signal(signal.SIGINT, self._on_cancel_signal)
+ signal.signal(signal.SIGQUIT, self._on_cancel_signal)
+ signal.signal(signal.SIGWINCH, self._on_terminal_resize)
+ self._terminal_width = self._get_terminal_width()
+ self._watchers = []
+ self._old_tty_mode = None
+ self._show_status = True
+ self._status = ""
+ self._percent = 0
+ self._show_terminal = show_terminal
+ self._details = details
+ self._allow_unauthenticated = allow_unauthenticated
+ self._show_progress = True
+ self._status_details = ""
+ self._progress_details = ""
+ # Used for a spinning line to indicate a still working transaction
+ self._spin_elements = "|/-\\"
+ self._spin_cur = -1
+ self._spin_stamp = time.time()
+ self._transaction = None
+ self._loop = GLib.MainLoop()
+
+ def add_repository(self, line="", sourcesfile=""):
+ """Add repository to the sources list."""
+ entry = SourceEntry(line)
+ self._client.add_repository(entry.type, entry.uri, entry.dist,
+ entry.comps, entry.comment,
+ sourcesfile,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def add_vendor_key_from_file(self, path):
+ """Install repository key file."""
+ self._client.add_vendor_key_from_file(
+ path,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def add_vendor_key_from_keyserver(self, keyid, keyserver):
+ """Install repository key file."""
+ self._client.add_vendor_key_from_keyserver(
+ keyid, keyserver,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def remove_vendor_key(self, fingerprint):
+ """Remove repository key."""
+ self._client.remove_vendor_key(fingerprint,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def install_file(self, path):
+ """Install package file."""
+ self._client.install_file(path, reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def list_trusted_vendor_keys(self):
+ """List the keys of the trusted vendors."""
+ def on_done(keys):
+ for key in keys:
+ print(key)
+ self._loop.quit()
+ self._client.get_trusted_vendor_keys(reply_handler=on_done,
+ error_handler=self._on_exception)
+
+ def commit_packages(self, install, reinstall, remove, purge, upgrade,
+ downgrade):
+ """Commit changes"""
+ self._client.commit_packages(install, reinstall, remove, purge,
+ upgrade, downgrade,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def fix_incomplete_install(self):
+ """Fix incomplete installs"""
+ self._client.fix_incomplete_install(
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def fix_broken_depends(self):
+ """Repair broken dependencies."""
+ self._client.fix_broken_depends(reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def update_cache(self):
+ """Update cache"""
+ self._client.update_cache(reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def upgrade_system(self, safe_mode):
+ """Upgrade system"""
+ self._client.upgrade_system(safe_mode,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def reconfigure(self, packages, priority):
+ """Reconfigure packages."""
+ self._client.reconfigure(packages, priority,
+ reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def clean(self):
+ """Clean archives."""
+ self._client.clean(reply_handler=self._run_transaction,
+ error_handler=self._on_exception)
+
+ def run(self):
+ """Start the console client application."""
+ try:
+ self._loop.run()
+ except KeyboardInterrupt:
+ pass
+
+ def _set_transaction(self, transaction):
+ """Monitor the given transaction"""
+ for handler in self._signals:
+ GLib.source_remove(handler)
+ self._transaction = transaction
+ self._signals = []
+ self._signals.append(transaction.connect("terminal-attached-changed",
+ self._on_terminal_attached))
+ self._signals.append(transaction.connect("status-changed",
+ self._on_status))
+ self._signals.append(transaction.connect("status-details-changed",
+ self._on_status_details))
+ self._signals.append(transaction.connect("progress-changed",
+ self._on_progress))
+ self._signals.append(transaction.connect("progress-details-changed",
+ self._on_progress_details))
+ self._signals.append(transaction.connect("finished", self._on_exit))
+ if self._show_terminal:
+ transaction.set_terminal(os.ttyname(self.slave_fd))
+ transaction.set_allow_unauthenticated(self._allow_unauthenticated)
+
+ def _on_exit(self, trans, enum):
+ """Callback for the exit state of the transaction"""
+ # Make sure to dettach the terminal
+ self._detach()
+ if self._show_progress:
+ output = "[+] 100%% %s %-*.*s%s\n" % (
+ ANSI_BOLD,
+ self._terminal_width - 9,
+ self._terminal_width - 9,
+ enums.get_exit_string_from_enum(enum),
+ ANSI_RESET)
+ sys.stderr.write(output)
+
+ if enum == enums.EXIT_FAILED:
+ msg = "%s: %s\n%s\n\n%s" % (
+ _("ERROR"),
+ enums.get_error_string_from_enum(trans.error_code),
+ enums.get_error_description_from_enum(trans.error_code),
+ trans.error_details)
+ print(msg)
+ self._loop.quit()
+
+ def _on_terminal_attached(self, transaction, attached):
+ """Callback for the terminal-attachabed-changed signal of the
+ transaction.
+ """
+ if self._show_terminal and attached and not self._watchers:
+ self._clear_progress()
+ self._show_progress = False
+ self._attach()
+ elif not attached:
+ self._show_progress = True
+ self._detach()
+
+ def _on_status(self, transaction, status):
+ """Callback for the Status signal of the transaction"""
+ self._status = enums.get_status_string_from_enum(status)
+ self._update_progress()
+
+ def _on_status_details(self, transaction, text):
+ """Callback for the StatusDetails signal of the transaction."""
+ self._status_details = text
+ self._update_progress()
+
+ def _on_progress_details(self, transaction, items_done, items_total,
+ bytes_done, bytes_total, speed, eta):
+ """Callback for the ProgressDetails signal of the transaction."""
+ if bytes_total and speed:
+ self._progress_details = (
+ _("Downloaded %(cur)sB of %(total)sB at %(rate)sB/s") %
+ {'cur': client.get_size_string(bytes_done),
+ 'total': client.get_size_string(bytes_total),
+ 'rate': client.get_size_string(speed)})
+ elif bytes_total:
+ self._progress_details = (
+ _("Downloaded %(cur)sB of %(total)sB") %
+ {'cur': client.get_size_string(bytes_done),
+ 'total': client.get_size_string(bytes_total)})
+ else:
+ self._progress_details = ""
+ self._update_progress()
+
+ def _on_progress(self, transaction, percent):
+ """Callback for the Progress signal of the transaction"""
+ self._percent = percent
+ self._update_progress()
+
+ def _update_progress(self):
+ """Update the progress bar."""
+ if not self._show_progress:
+ return
+ text = ANSI_BOLD + self._status + ANSI_RESET
+ if self._status_details:
+ text += " " + self._status_details
+ if self._progress_details:
+ text += " (%s)" % self._progress_details
+ text_width = self._terminal_width - 9
+ # Spin the progress line (maximum 5 times a second)
+ if self._spin_stamp + 0.2 < time.time():
+ self._spin_cur = (self._spin_cur + 1) % len(self._spin_elements)
+ self._spin_stamp = time.time()
+ spinner = self._spin_elements[self._spin_cur]
+ # Show progress information if available
+ if self._percent > 100:
+ percent = "---"
+ else:
+ percent = self._percent
+ sys.stderr.write("[%s] " % spinner +
+ "%3.3s%% " % percent +
+ "%-*.*s" % (text_width, text_width, text) + "\r")
+
+ def _update_custom_progress(self, msg, percent=None, spin=True):
+ """Update the progress bar with a custom status message."""
+ text = ANSI_BOLD + msg + ANSI_RESET
+ text_width = self._terminal_width - 9
+ # Spin the progress line (maximum 5 times a second)
+ if spin:
+ self._spin_cur = (self._spin_cur + 1) % len(self._spin_elements)
+ self._spin_stamp = time.time()
+ spinner = self._spin_elements[self._spin_cur]
+ else:
+ spinner = "+"
+ # Show progress information if available
+ if percent is None:
+ percent = "---"
+ sys.stderr.write("[%s] " % spinner +
+ "%3.3s%% " % percent +
+ "%-*.*s" % (text_width, text_width, text) + "\r")
+ return True
+
+ def _stop_custom_progress(self):
+ """Stop the spinner which shows non trans status messages."""
+ if self._progress_id is not None:
+ GLib.source_remove(self._progress_id)
+
+ def _clear_progress(self):
+ """Clear progress information on stderr."""
+ sys.stderr.write("%-*.*s\r" % (self._terminal_width,
+ self._terminal_width,
+ " "))
+
+ def _on_cancel_signal(self, signum, frame):
+ """Callback for a cancel signal."""
+ if (self._transaction and
+ self._transaction.status != enums.STATUS_SETTING_UP):
+ self._transaction.cancel()
+ else:
+ self._loop.quit()
+
+ def _on_terminal_resize(self, signum, frame):
+ """Callback for a changed terminal size."""
+ self._terminal_width = self._get_terminal_width()
+ self._update_progress()
+
+ def _detach(self):
+ """Dettach the controlling terminal to aptdaemon."""
+ for wid in self._watchers:
+ GLib.source_remove(wid)
+ if self._old_tty_mode:
+ tty.tcsetattr(pty.STDIN_FILENO, tty.TCSAFLUSH,
+ self._old_tty_mode)
+
+ def _attach(self):
+ """Attach the controlling terminal to aptdaemon.
+ Based on pty.spwan()
+ """
+ try:
+ self._old_tty_mode = tty.tcgetattr(pty.STDIN_FILENO)
+ tty.setraw(pty.STDIN_FILENO)
+ except tty.error: # This is the same as termios.error
+ self._old_tty_mode = None
+ flags = GLib.IO_IN | GLib.IO_ERR | GLib.IO_HUP
+ self._watchers.append(
+ GLib.io_add_watch(pty.STDIN_FILENO,
+ GLib.PRIORITY_HIGH_IDLE, flags,
+ self._copy_io, self.master_fd))
+ self._watchers.append(
+ GLib.io_add_watch(self.master_fd, GLib.PRIORITY_HIGH_IDLE,
+ flags, self._copy_io, pty.STDOUT_FILENO))
+
+ def _copy_io(self, source, condition, target):
+ """Callback to copy data between terminals."""
+ if condition == GLib.IO_IN:
+ data = os.read(source, 1024)
+ if target:
+ os.write(target, data)
+ return True
+ os.close(source)
+ return False
+
+ def _get_terminal_width(self):
+ """Return the witdh in characters of the current terminal."""
+ try:
+ return array.array("h", fcntl.ioctl(sys.stderr, termios.TIOCGWINSZ,
+ "\0" * 8))[1]
+ except IOError:
+ # Fallback to the "default" size
+ return 80
+
+ def _on_exception(self, error):
+ """Error callback."""
+ self._detach()
+ try:
+ raise error
+ except errors.PolicyKitError:
+ msg = "%s %s\n\n%s" % (_("ERROR:"),
+ _("You are not allowed to perform "
+ "this action."),
+ error.get_dbus_message())
+ except dbus.DBusException:
+ msg = "%s %s - %s" % (_("ERROR:"), error.get_dbus_name(),
+ error.get_dbus_message())
+ except:
+ msg = str(error)
+ self._loop.quit()
+ sys.exit(msg)
+
+ def _run_transaction(self, trans):
+ """Callback which runs a requested transaction."""
+ self._set_transaction(trans)
+ self._stop_custom_progress()
+ if self._transaction.role in [enums.ROLE_UPDATE_CACHE,
+ enums.ROLE_ADD_VENDOR_KEY_FILE,
+ enums.ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER,
+ enums.ROLE_REMOVE_VENDOR_KEY,
+ enums.ROLE_FIX_INCOMPLETE_INSTALL]:
+ # TRANSLATORS: status message
+ self._progress_id = GLib.timeout_add(250,
+ self._update_custom_progress,
+ _("Queuing"))
+ self._transaction.run(
+ error_handler=self._on_exception,
+ reply_handler=lambda: self._stop_custom_progress())
+ else:
+ # TRANSLATORS: status message
+ self._progress_id = GLib.timeout_add(250,
+ self._update_custom_progress,
+ _("Resolving dependencies"))
+ self._transaction.simulate(reply_handler=self._show_changes,
+ error_handler=self._on_exception)
+
+ def _show_changes(self):
+ def show_packages(pkgs):
+ """Format the pkgs in a nice way."""
+ line = " "
+ pkgs.sort()
+ for pkg in pkgs:
+ try:
+ name, version = pkg.split("=", 1)[0:2]
+ except ValueError:
+ name = pkg
+ version = None
+ if self._details and version:
+ output = "%s=%s" % (name, version)
+ else:
+ output = name
+ if (len(line) + 1 + len(output) > self._terminal_width and
+ line != " "):
+ print(line)
+ line = " "
+ line += " %s" % output
+ if line != " ":
+ print(line)
+ self._stop_custom_progress()
+ self._clear_progress()
+ (installs, reinstalls, removals, purges, upgrades,
+ downgrades) = self._transaction.packages
+ (dep_installs, dep_reinstalls, dep_removals, dep_purges, dep_upgrades,
+ dep_downgrades, dep_kepts) = self._transaction.dependencies
+ installs.extend(dep_installs)
+ upgrades.extend(dep_upgrades)
+ removals.extend(purges)
+ removals.extend(dep_removals)
+ removals.extend(dep_purges)
+ reinstalls.extend(dep_reinstalls)
+ downgrades.extend(dep_downgrades)
+ kepts = dep_kepts
+ if installs:
+ # TRANSLATORS: %s is the number of packages
+ print((ngettext("The following NEW package will be installed "
+ "(%(count)s):",
+ "The following NEW packages will be installed "
+ "(%(count)s):",
+ len(installs)) % {"count": len(installs)}))
+ show_packages(installs)
+ if upgrades:
+ # TRANSLATORS: %s is the number of packages
+ print((ngettext("The following package will be upgraded "
+ "(%(count)s):",
+ "The following packages will be upgraded "
+ "(%(count)s):",
+ len(upgrades)) % {"count": len(upgrades)}))
+ show_packages(upgrades)
+ if removals:
+ # TRANSLATORS: %s is the number of packages
+ print((ngettext("The following package will be REMOVED "
+ "(%(count)s):",
+ "The following packages will be REMOVED "
+ "(%(count)s):",
+ len(removals)) % {"count": len(removals)}))
+ # FIXME: mark purges
+ show_packages(removals)
+ if downgrades:
+ # TRANSLATORS: %s is the number of packages
+ print((ngettext("The following package will be DOWNGRADED "
+ "(%(count)s):",
+ "The following packages will be DOWNGRADED "
+ "(%(count)s):",
+ len(downgrades)) % {"count": len(downgrades)}))
+ show_packages(downgrades)
+ if reinstalls:
+ # TRANSLATORS: %s is the number of packages
+ print((ngettext("The following package will be reinstalled "
+ "(%(count)s):",
+ "The following packages will be reinstalled "
+ "(%(count)s):",
+ len(reinstalls)) % {"count": len(reinstalls)}))
+ show_packages(reinstalls)
+ if kepts:
+ print((ngettext("The following package has been kept back "
+ "(%(count)s):",
+ "The following packages have been kept back "
+ "(%(count)s):",
+ len(kepts)) % {"count": len(kepts)}))
+ show_packages(kepts)
+
+ if self._transaction.download:
+ print(_("Need to get %sB of archives.") %
+ client.get_size_string(self._transaction.download))
+ if self._transaction.space > 0:
+ print(_("After this operation, %sB of additional disk space "
+ "will be used.") %
+ client.get_size_string(self._transaction.space))
+ elif self._transaction.space < 0:
+ print(_("After this operation, %sB of additional disk space "
+ "will be freed.") %
+ client.get_size_string(self._transaction.space))
+ if (self._transaction.space or self._transaction.download or
+ installs or upgrades or downgrades or removals or kepts or
+ reinstalls):
+ try:
+ if PY3K:
+ cont = input(_("Do you want to continue [Y/n]?"))
+ else:
+ cont = raw_input(_("Do you want to continue [Y/n]?"))
+ except EOFError:
+ cont = "n"
+ # FIXME: Listen to changed dependencies!
+ if (not re.match(locale.nl_langinfo(locale.YESEXPR), cont) and
+ cont != ""):
+ msg = enums.get_exit_string_from_enum(enums.EXIT_CANCELLED)
+ self._update_custom_progress(msg, None, False)
+ self._loop.quit()
+ sys.exit(1)
+ # TRANSLATORS: status message
+ self._progress_id = GLib.timeout_add(250,
+ self._update_custom_progress,
+ _("Queuing"))
+ self._transaction.run(
+ error_handler=self._on_exception,
+ reply_handler=lambda: self._stop_custom_progress())
+
+
+def main():
+ """Run a command line client for aptdaemon"""
+ epilog = _("To operate on more than one package put the package "
+ "names in quotation marks:\naptdcon --install "
+ "\"foo bar\"")
+ parser = OptionParser(version=aptdaemon.__version__, epilog=epilog)
+ parser.add_option("-c", "--refresh", default="",
+ action="store_true", dest="refresh",
+ help=_("Refresh the cache"))
+ parser.add_option("", "--fix-depends", default="",
+ action="store_true", dest="fix_depends",
+ help=_("Try to resolve broken dependencies. "
+ "Potentially dangerous operation since it could "
+ "try to remove many packages."))
+ parser.add_option("", "--fix-install", default="",
+ action="store_true", dest="fix_install",
+ help=_("Try to finish a previous incompleted "
+ "installation"))
+ parser.add_option("-i", "--install", default="",
+ action="store", type="string", dest="install",
+ help=_("Install the given packages"))
+ parser.add_option("", "--reinstall", default="",
+ action="store", type="string", dest="reinstall",
+ help=_("Reinstall the given packages"))
+ parser.add_option("-r", "--remove", default="",
+ action="store", type="string", dest="remove",
+ help=_("Remove the given packages"))
+ parser.add_option("-p", "--purge", default="",
+ action="store", type="string", dest="purge",
+ help=_("Remove the given packages including "
+ "configuration files"))
+ parser.add_option("-u", "--upgrade", default="",
+ action="store", type="string", dest="upgrade",
+ help=_("Install the given packages"))
+ parser.add_option("", "--downgrade", default="",
+ action="store", type="string", dest="downgrade",
+ help=_("Downgrade the given packages"))
+ parser.add_option("", "--upgrade-system",
+ action="store_true", dest="safe_upgrade",
+ help=_("Deprecated: Please use "
+ "--safe-upgrade"))
+ parser.add_option("", "--safe-upgrade",
+ action="store_true", dest="safe_upgrade",
+ help=_("Upgrade the system in a safe way"))
+ parser.add_option("", "--full-upgrade",
+ action="store_true", dest="full_upgrade",
+ help=_("Upgrade the system, possibly installing and "
+ "removing packages"))
+ parser.add_option("", "--add-vendor-key", default="",
+ action="store", type="string", dest="add_vendor_key",
+ help=_("Add the vendor to the trusted ones"))
+ parser.add_option("", "--add-vendor-key-from-keyserver", default="",
+ action="store", type="string",
+ help=_("Add the vendor keyid (also needs "
+ "--keyserver)"))
+ parser.add_option("", "--keyserver", default="",
+ action="store", type="string",
+ help=_("Use the given keyserver for looking up "
+ "keys"))
+ parser.add_option("", "--add-repository", default="",
+ action="store", type="string", dest="add_repository",
+ help=_("Add new repository from the given "
+ "deb-line"))
+ parser.add_option("", "--sources-file", action="store", default="",
+ type="string", dest="sources_file",
+ help=_("Specify an alternative sources.list.d file to "
+ "which repositories should be added."))
+ parser.add_option("", "--list-trusted-vendors", default="",
+ action="store_true", dest="list_trusted_vendor_keys",
+ help=_("List trusted vendor keys"))
+ parser.add_option("", "--remove-vendor-key", default="",
+ action="store", type="string", dest="remove_vendor_key",
+ help=_("Remove the trusted key of the given "
+ "fingerprint"))
+ parser.add_option("", "--clean",
+ action="store_true", dest="clean",
+ help=_("Remove downloaded package files"))
+ parser.add_option("", "--reconfigure", default="",
+ action="store", type="string", dest="reconfigure",
+ help=_("Reconfigure installed packages. Optionally the "
+ "minimum priority of questions can be "
+ "specified"))
+ parser.add_option("", "--priority", default="default",
+ action="store", type="string", dest="priority",
+ help=_("The minimum debconf priority of question to "
+ "be displayed"))
+ parser.add_option("", "--hide-terminal",
+ action="store_true", dest="hide_terminal",
+ help=_("Do not attach to the apt terminal"))
+ parser.add_option("", "--allow-unauthenticated",
+ action="store_true", dest="allow_unauthenticated",
+ default=False,
+ help=_("Allow packages from unauthenticated "
+ "sources"))
+ parser.add_option("-d", "--show-details",
+ action="store_true", dest="details",
+ help=_("Show additional information about the packages. "
+ "Currently only the version number"))
+ (options, args) = parser.parse_args()
+ con = ConsoleClient(show_terminal=not options.hide_terminal,
+ allow_unauthenticated=options.allow_unauthenticated,
+ details=options.details)
+ # TRANSLATORS: status message
+ con._progress_id = GLib.timeout_add(250, con._update_custom_progress,
+ _("Waiting for authentication"))
+ if options.safe_upgrade:
+ con.upgrade_system(True)
+ elif options.full_upgrade:
+ con.upgrade_system(False)
+ elif options.refresh:
+ con.update_cache()
+ elif options.reconfigure:
+ con.reconfigure(options.reconfigure.split(), options.priority)
+ elif options.clean:
+ con.clean()
+ elif options.fix_install:
+ con.fix_incomplete_install()
+ elif options.fix_depends:
+ con.fix_broken_depends()
+ elif options.install and options.install.endswith(".deb"):
+ con.install_file(options.install)
+ elif (options.install or options.reinstall or options.remove or
+ options.purge or options.upgrade or options.downgrade):
+ con.commit_packages(options.install.split(),
+ options.reinstall.split(),
+ options.remove.split(),
+ options.purge.split(),
+ options.upgrade.split(),
+ options.downgrade.split())
+ elif options.add_repository:
+ con.add_repository(options.add_repository, options.sources_file)
+ elif options.add_vendor_key:
+ # FIXME: Should detect if from stdin or file
+ con.add_vendor_key_from_file(options.add_vendor_key)
+ elif options.add_vendor_key_from_keyserver and options.keyserver:
+ con.add_vendor_key_from_keyserver(
+ options.add_vendor_key_from_keyserver,
+ options.keyserver)
+ elif options.remove_vendor_key:
+ con.remove_vendor_key(options.remove_vendor_key)
+ elif options.list_trusted_vendor_keys:
+ con.list_trusted_vendor_keys()
+ else:
+ parser.print_help()
+ sys.exit(1)
+ con.run()
+
+if __name__ == "__main__":
+ main()
diff --git a/aptdaemon/core.py b/aptdaemon/core.py
new file mode 100644
index 0000000..ac05247
--- /dev/null
+++ b/aptdaemon/core.py
@@ -0,0 +1,2204 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Core components of aptdaemon.
+
+This module provides the following core classes of the aptdaemon:
+AptDaemon - complete daemon for managing software via DBus interface
+Transaction - represents a software management operation
+TransactionQueue - queue for aptdaemon transactions
+
+The main function allows to run the daemon as a command.
+"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("Transaction", "TransactionQueue", "AptDaemon",
+ "APTDAEMON_TRANSACTION_DBUS_INTERFACE", "APTDAEMON_DBUS_INTERFACE"
+ "APTDAEMON_DBUS_PATH", "APTDAEMON_DBUS_SERVICE",
+ "APTDAEMON_IDLE_CHECK_INTERVAL", "APTDAEMON_IDLE_TIMEOUT",
+ "TRANSACTION_IDLE_TIMEOUT", "TRANSACTION_DEL_TIMEOUT")
+
+import collections
+from xml.etree import ElementTree
+import gettext
+from hashlib import md5
+import locale
+import logging
+import logging.handlers
+from optparse import OptionParser
+import os
+import re
+import signal
+import sys
+import time
+import uuid
+
+from gi.repository import GObject, GLib
+import dbus.exceptions
+import dbus.service
+import dbus.mainloop.glib
+
+from .config import ConfigWriter
+from . import errors
+from . import enums
+from defer import inline_callbacks, return_value, Deferred
+from defer.utils import dbus_deferred_method
+from . import policykit1
+from .utils import split_package_id, set_euid_egid
+from .worker import DummyWorker
+from .worker.aptworker import (AptWorker,
+ trans_only_installs_pkgs_from_high_trust_repos)
+from .loop import mainloop
+from .logger import ColoredFormatter
+
+# Setup i18n
+_ = lambda msg: gettext.dgettext("aptdaemon", msg)
+if sys.version >= '3':
+ _gettext_method = "gettext"
+ _ngettext_method = "ngettext"
+else:
+ _gettext_method = "ugettext"
+ _ngettext_method = "ungettext"
+
+APTDAEMON_DBUS_INTERFACE = 'org.debian.apt'
+APTDAEMON_DBUS_PATH = '/org/debian/apt'
+APTDAEMON_DBUS_SERVICE = 'org.debian.apt'
+
+APTDAEMON_TRANSACTION_DBUS_INTERFACE = 'org.debian.apt.transaction'
+
+APTDAEMON_IDLE_CHECK_INTERVAL = 60
+APTDAEMON_IDLE_TIMEOUT = 10 * 60
+
+# Maximum allowed time between the creation of a transaction and its queuing
+TRANSACTION_IDLE_TIMEOUT = 300
+# Keep the transaction for the given time alive on the bus after it has
+# finished
+TRANSACTION_DEL_TIMEOUT = 30
+
+# regexp for the pkgname and optional arch, for details see
+# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
+REGEX_VALID_PACKAGENAME = "^[a-z0-9][a-z0-9\-+.]+(:[a-z0-9]+)?$"
+# regexp for the version number, for details see:
+# http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
+REGEX_VALID_VERSION = "^[0-9][0-9.+\-A-Za-z:~]*$"
+# regexp for the archive (Suite) as found in the Release file
+REGEX_VALID_RELEASE = "^[a-zA-Z0-9_\-\.]+$"
+
+# Setup the DBus main loop
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+# Required for daemon mode
+os.putenv("PATH",
+ "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
+
+# Setup logging to syslog and the console
+log = logging.getLogger("AptDaemon")
+try:
+ _syslog_handler = logging.handlers.SysLogHandler(
+ address="/dev/log",
+ facility=logging.handlers.SysLogHandler.LOG_DAEMON)
+ _syslog_handler.setLevel(logging.INFO)
+ _syslog_formatter = logging.Formatter("%(name)s: %(levelname)s: "
+ "%(message)s")
+ _syslog_handler.setFormatter(_syslog_formatter)
+except:
+ pass
+else:
+ log.addHandler(_syslog_handler)
+_console_handler = logging.StreamHandler()
+_console_formatter = ColoredFormatter("%(asctime)s %(name)s [%(levelname)s]: "
+ "%(message)s",
+ "%T")
+_console_handler.setFormatter(_console_formatter)
+log.addHandler(_console_handler)
+# FIXME: Use LoggerAdapter (requires Python 2.6)
+log_trans = logging.getLogger("AptDaemon.Trans")
+
+# Required for translations from APT
+try:
+ locale.setlocale(locale.LC_ALL, "")
+except locale.Error:
+ log.warning("Failed to unset LC_ALL. Translations are not available.")
+
+
+def _excepthook(exc_type, exc_obj, exc_tb, apport_excepthook):
+ """Handle exceptions of aptdaemon and avoid tiggering apport crash
+ reports for valid DBusExceptions that are sent to the client.
+ """
+ # apport registers it's own excepthook as sys.excepthook. So we have to
+ # send exceptions that we don't want to be tracked to Python's
+ # internal excepthook directly
+ if issubclass(exc_type, errors.AptDaemonError):
+ sys.__excepthook__(exc_type, exc_obj, exc_tb)
+ else:
+ apport_excepthook(exc_type, exc_obj, exc_tb)
+
+if sys.excepthook.__name__ == "apport_excepthook":
+ apport_excepthook = sys.excepthook
+ sys.excepthook = lambda etype, eobj, etb: _excepthook(etype, eobj, etb,
+ apport_excepthook)
+
+
+class DBusObject(dbus.service.Object):
+
+ """Enhanced D-Bus object class which supports properties."""
+
+ WRITABLE_PROPERTIES = ()
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=dbus.PROPERTIES_IFACE,
+ signature="sa{sv}as")
+ def PropertiesChanged(self, interface, changed_properties,
+ invalidated_properties):
+ """The signal gets emitted if a property of the object's
+ interfaces changed.
+
+ :param property: The name of the interface.
+ :param changed_properties: A dictrionary of changed
+ property/value pairs
+ :param invalidated_properties: An array of property names which
+ changed but the value isn't conveyed.
+
+ :type interface: s
+ :type changed_properties: a{sv}
+ :type invalidated_properties: as
+ """
+ log.debug("Emitting PropertiesChanged: %s, %s, %s" %
+ (interface, changed_properties, invalidated_properties))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(dbus.INTROSPECTABLE_IFACE,
+ in_signature='', out_signature='s',
+ path_keyword='object_path',
+ connection_keyword='connection')
+ def Introspect(self, object_path, connection):
+ # Inject the properties into the introspection xml data
+ data = dbus.service.Object.Introspect(self, object_path, connection)
+ xml = ElementTree.fromstring(data)
+ for iface in xml.findall("interface"):
+ props = self._get_properties(iface.attrib["name"])
+ for key, value in props.items():
+ attrib = {"name": key}
+ if key in self.WRITABLE_PROPERTIES:
+ attrib["access"] = "readwrite"
+ else:
+ attrib["access"] = "read"
+ if isinstance(value, dbus.String):
+ attrib["type"] = "s"
+ elif isinstance(value, dbus.UInt32):
+ attrib["type"] = "u"
+ elif isinstance(value, dbus.Int32):
+ attrib["type"] = "i"
+ elif isinstance(value, dbus.UInt64):
+ attrib["type"] = "t"
+ elif isinstance(value, dbus.Int64):
+ attrib["type"] = "x"
+ elif isinstance(value, dbus.Boolean):
+ attrib["type"] = "b"
+ elif isinstance(value, dbus.Struct):
+ attrib["type"] = "(%s)" % value.signature
+ elif isinstance(value, dbus.Dictionary):
+ attrib["type"] = "a{%s}" % value.signature
+ elif isinstance(value, dbus.Array):
+ attrib["type"] = "a%s" % value.signature
+ else:
+ raise Exception("Type %s of property %s isn't "
+ "convertable" % (type(value), key))
+ iface.append(ElementTree.Element("property", attrib))
+ new_data = ElementTree.tostring(xml, encoding="UTF-8")
+ return new_data
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(dbus.PROPERTIES_IFACE,
+ in_signature="ssv", out_signature="",
+ sender_keyword="sender")
+ def Set(self, iface, name, value, sender):
+ """Set a property.
+
+ Only the user who intiaited the transaction is
+ allowed to modify it.
+
+ :param iface: The interface which provides the property.
+ :param name: The name of the property which should be modified.
+ :param value: The new value of the property.
+
+ :type iface: s
+ :type name: s
+ :type value: v
+ """
+ log.debug("Set() was called: %s, %s" % (name, value))
+ return self._set_property(iface, name, value, sender)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(dbus.PROPERTIES_IFACE,
+ in_signature="s", out_signature="a{sv}")
+ def GetAll(self, iface):
+ """Get all available properties of the given interface."""
+ log.debug("GetAll() was called: %s" % iface)
+ return self._get_properties(iface)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(dbus.PROPERTIES_IFACE,
+ in_signature="ss", out_signature="v")
+ def Get(self, iface, property):
+ """Return the value of the given property provided by the given
+ interface.
+ """
+ log.debug("Get() was called: %s, %s" % (iface, property))
+ return self._get_properties(iface)[property]
+
+ def _set_property(self, iface, name, value, sender):
+ """Helper to set a property on the properties D-Bus interface."""
+ raise dbus.exceptions.DBusException("Unknown or read only "
+ "property: %s" % name)
+
+ def _get_properties(self, iface):
+ """Helper to get the properties of a D-Bus interface."""
+ return {}
+
+
+class Transaction(DBusObject):
+
+ """Represents a transaction on the D-Bus.
+
+ A transaction represents a single package management task, e.g.
+ installation or removal of packages. This class allows to expose
+ information and to controll the transaction via DBus using PolicyKit
+ for managing privileges.
+ """
+
+ ROLE_ACTION_MAP = {
+ enums.ROLE_PK_QUERY: None,
+ enums.ROLE_INSTALL_PACKAGES: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_REMOVE_PACKAGES: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_INSTALL_FILE: (
+ policykit1.PK_ACTION_INSTALL_FILE),
+ enums.ROLE_UPGRADE_PACKAGES: (
+ policykit1.PK_ACTION_UPGRADE_PACKAGES),
+ enums.ROLE_UPGRADE_SYSTEM: (
+ policykit1.PK_ACTION_UPGRADE_PACKAGES),
+ enums.ROLE_UPDATE_CACHE: (
+ policykit1.PK_ACTION_UPDATE_CACHE),
+ enums.ROLE_COMMIT_PACKAGES: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_ADD_VENDOR_KEY_FILE: (
+ policykit1.PK_ACTION_CHANGE_REPOSITORY),
+ enums.ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER: (
+ policykit1.PK_ACTION_CHANGE_REPOSITORY),
+ enums.ROLE_REMOVE_VENDOR_KEY: (
+ policykit1.PK_ACTION_CHANGE_REPOSITORY),
+ enums.ROLE_FIX_INCOMPLETE_INSTALL: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_FIX_BROKEN_DEPENDS: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_ADD_REPOSITORY: (
+ policykit1.PK_ACTION_CHANGE_REPOSITORY),
+ enums.ROLE_RECONFIGURE: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+ enums.ROLE_CLEAN: (
+ policykit1.PK_ACTION_CLEAN),
+ enums.ROLE_ENABLE_DISTRO_COMP: (
+ policykit1.PK_ACTION_CHANGE_REPOSITORY),
+ enums.ROLE_ADD_LICENSE_KEY: (
+ policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES)}
+
+ WRITABLE_PROPERTIES = ("HttpProxy", "Terminal", "AllowUnauthenticated",
+ "DebconfSocket", "MetaData", "Locale",
+ "RemoveObsoleteDepends")
+
+ def __init__(self, tid, role, queue, pid, uid, gid, cmdline, sender,
+ connect=True, bus=None, packages=None, kwargs=None):
+ """Initialize a new Transaction instance.
+
+ Keyword arguments:
+ tid -- The unique identifier
+ role -- The role enum of the transaction
+ queue -- TransactionQueue instance of the daemon
+ pid -- the id of the process which created the transaction
+ uid -- the uid of the user who created the transaction
+ cmdline -- the cmdline of the calling process
+ sender -- the DBus name of the sender who created the transaction
+ connect -- if the Transaction should connect to DBus (default is True)
+ bus -- the DBus connection which should be used
+ (defaults to system bus)
+ """
+ if tid is None:
+ tid = uuid.uuid4().hex
+ self.tid = "/org/debian/apt/transaction/%s" % tid
+ if connect is True:
+ self.bus = bus
+ if bus is None:
+ self.bus = dbus.SystemBus()
+ bus_name = dbus.service.BusName(APTDAEMON_DBUS_SERVICE, self.bus)
+ dbus_path = self.tid
+ else:
+ bus = None
+ bus_name = None
+ dbus_path = None
+ DBusObject.__init__(self, bus_name, dbus_path)
+ if not packages:
+ packages = ([], [], [], [], [], [])
+ if not kwargs:
+ kwargs = {}
+ self.queue = queue
+ self.uid = uid
+ self.gid = gid
+ self.locale = dbus.String("")
+ self.allow_unauthenticated = dbus.Boolean(False)
+ self.remove_obsoleted_depends = dbus.Boolean(False)
+ self.cmdline = cmdline
+ self.pid = pid
+ self.http_proxy = dbus.String("")
+ self.terminal = dbus.String("")
+ pk_socket = "/run/user/%d/pk-debconf-socket" % self.uid
+ if os.path.exists(pk_socket):
+ self.debconf = dbus.String(pk_socket)
+ else:
+ self.debconf = dbus.String("")
+ self.kwargs = kwargs
+ self._translation = None
+ # The transaction which should be executed after this one
+ self.after = None
+ self._role = dbus.String(role)
+ self._progress = dbus.Int32(0)
+ # items_done, total_items, bytes_done, total_bytes, speed, time
+ self._progress_details = dbus.Struct((0, 0, 0, 0, 0.0, 0),
+ signature="iixxdx")
+ self._progress_download = dbus.Struct(("", "", "", 0, 0, ""),
+ signature="sssxxs")
+ self._progress_package = dbus.Struct(("", ""), signature="ss")
+ self._exit = dbus.String(enums.EXIT_UNFINISHED)
+ self._status = dbus.String(enums.STATUS_SETTING_UP)
+ self._status_details = dbus.String("")
+ self._error = None
+ self._error_property = dbus.Struct(("", ""), signature="ss")
+ self._cancellable = dbus.Boolean(True)
+ self._term_attached = dbus.Boolean(False)
+ self._required_medium = dbus.Struct(("", ""), signature="ss")
+ self._config_file_conflict = dbus.Struct(("", ""), signature="ss")
+ self._config_file_conflict_resolution = ""
+ self.cancelled = dbus.Boolean(False)
+ self.paused = dbus.Boolean(False)
+ self._meta_data = dbus.Dictionary(signature="sv")
+ self._download = dbus.Int64(0)
+ self._space = dbus.Int64(0)
+ self._depends = dbus.Struct([dbus.Array([], signature='s')
+ for i in range(7)],
+ signature="asasasasasasas")
+ self._packages = dbus.Struct([dbus.Array(pkgs, signature="s")
+ for pkgs in packages],
+ signature="asasasasasas")
+ self._unauthenticated = dbus.Array([], signature=dbus.Signature('s'))
+ self._high_trust_packages = dbus.Array([],
+ signature=dbus.Signature('s'))
+ # Add a timeout which removes the transaction from the bus if it
+ # hasn't been setup and run for the TRANSACTION_IDLE_TIMEOUT period
+ self._idle_watch = GLib.timeout_add_seconds(
+ TRANSACTION_IDLE_TIMEOUT, self._remove_from_connection_no_raise)
+ # Handle a disconnect of the client application
+ self.sender_alive = True
+ if bus:
+ self._sender_watch = bus.watch_name_owner(
+ sender, self._sender_owner_changed)
+ else:
+ self._sender_watch = None
+ self.sender = sender
+ self.output = ""
+ self.simulated = None
+ self._simulated_cb = None
+
+ def _sender_owner_changed(self, connection):
+ """Callback if the owner of the original sender changed, e.g.
+ disconnected."""
+ if not connection:
+ self.sender_alive = False
+
+ def _remove_from_connection_no_raise(self):
+ """Version of remove_from_connection that does not raise if the
+ object isn't exported.
+ """
+ log_trans.debug("Removing transaction")
+ try:
+ self.remove_from_connection()
+ except LookupError as error:
+ log_trans.debug("remove_from_connection() raised LookupError: "
+ "'%s'" % error)
+ # Forget a not yet queued transaction
+ try:
+ self.queue.limbo.pop(self.tid)
+ except KeyError:
+ pass
+ return False
+
+ def _convert_struct(self, lst, signature):
+ """Convert a list to a DBus struct with the given signature. Currently
+ integer, long, unsigned long, double, string and boolean are
+ supported (ixtdsb).
+ """
+ struct = []
+ for num, item in enumerate(lst):
+ try:
+ if signature[num] == "i":
+ struct.append(dbus.Int32(item))
+ elif signature[num] == "x":
+ struct.append(dbus.Int64(item))
+ elif signature[num] == "t":
+ struct.append(dbus.UInt64(item))
+ elif signature[num] == "d":
+ struct.append(dbus.Double(item))
+ elif signature[num] == "b":
+ struct.append(dbus.Boolean(item))
+ elif signature[num] == "s":
+ struct.append(get_dbus_string(item))
+ else:
+ raise Exception("Value %s with unknown signature %s" %
+ (item, signature[num]))
+ except Exception as error:
+ raise error.__class__("Failed to convert item %s of %s with "
+ "signature %s: %s" % (num, lst,
+ signature,
+ str(error)))
+ return dbus.Struct(struct, signature=dbus.Signature(signature))
+
+ def _set_meta_data(self, data):
+ # Perform some checks
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+ if not isinstance(data, dbus.Dictionary):
+ raise errors.InvalidMetaDataError("The data value has to be a "
+ "dictionary: %s" % data)
+ if not data.signature.startswith("s"):
+ raise errors.InvalidMetaDataError("Only strings are accepted "
+ "as keys.")
+ for key, value in data.items():
+ if key in self._meta_data:
+ raise errors.InvalidMetaDataError("The key %s already "
+ "exists. It is not allowed "
+ "to overwrite existing "
+ "data." % key)
+ if not len(key.split("_")) > 1:
+ raise errors.InvalidMetaDataError("The key %s has to be of "
+ "the format "
+ "IDENTIFIER-KEYNAME")
+ if not isinstance(value, dbus.String):
+ raise errors.InvalidMetaDataError("The value has to be a "
+ "string: %s" % value)
+ # Merge new data into existing one:
+ self._meta_data.update(data)
+ self.PropertyChanged("MetaData", self._meta_data)
+
+ def _get_meta_data(self):
+ return self._meta_data
+
+ meta_data = property(_get_meta_data, _set_meta_data,
+ doc="Allows client applications to store meta data "
+ "for the transaction in a dictionary.")
+
+ def _set_role(self, enum):
+ if self._role != enums.ROLE_UNSET:
+ raise errors.TransactionRoleAlreadySet()
+ self._role = dbus.String(enum)
+ self.PropertyChanged("Role", self._role)
+
+ def _get_role(self):
+ return self._role
+
+ role = property(_get_role, _set_role, doc="Operation type of transaction.")
+
+ def _set_progress_details(self, details):
+ # items_done, total_items, bytes_done, total_bytes, speed, time
+ self._progress_details = self._convert_struct(details, "iixxdx")
+ self.PropertyChanged("ProgressDetails", self._progress_details)
+
+ def _get_progress_details(self):
+ return self._progress_details
+
+ progress_details = property(_get_progress_details, _set_progress_details,
+ doc="Tuple containing detailed progress "
+ "information: items done, total items, "
+ "bytes done, total bytes, speed and "
+ "remaining time")
+
+ def _set_error(self, excep):
+ self._error = excep
+ msg = self.gettext(excep.details) % excep.details_args
+ self._error_property = self._convert_struct((excep.code, msg), "ss")
+ self.PropertyChanged("Error", self._error_property)
+
+ def _get_error(self):
+ return self._error
+
+ error = property(_get_error, _set_error, doc="Raised exception.")
+
+ def _set_exit(self, enum):
+ self.status = enums.STATUS_FINISHED
+ self._exit = dbus.String(enum)
+ self.PropertyChanged("ExitState", self._exit)
+ self.Finished(self._exit)
+ if self._sender_watch:
+ self._sender_watch.cancel()
+ # Remove the transaction from the Bus after it is complete. A short
+ # timeout helps lazy clients
+ GLib.timeout_add_seconds(TRANSACTION_DEL_TIMEOUT,
+ self._remove_from_connection_no_raise)
+
+ def _get_exit(self):
+ return self._exit
+
+ exit = property(_get_exit, _set_exit,
+ doc="The exit state of the transaction.")
+
+ def _get_download(self):
+ return self._download
+
+ def _set_download(self, size):
+ self._download = dbus.Int64(size)
+ self.PropertyChanged("Download", self._download)
+
+ download = property(_get_download, _set_download,
+ doc="The download size of the transaction.")
+
+ def _get_space(self):
+ return self._space
+
+ def _set_space(self, size):
+ self._space = dbus.Int64(size)
+ self.PropertyChanged("Space", self._space)
+
+ space = property(_get_space, _set_space,
+ doc="The required disk space of the transaction.")
+
+ def _set_packages(self, packages):
+ self._packages = dbus.Struct([dbus.Array(pkgs, signature="s")
+ for pkgs in packages],
+ signature="as")
+ self.PropertyChanged("Packages", self._packages)
+
+ def _get_packages(self):
+ return self._packages
+
+ packages = property(_get_packages, _set_packages,
+ doc="Packages which will be explictly installed, "
+ "reinstalled, removed, purged, upgraded or "
+ "downgraded.")
+
+ def _get_unauthenticated(self):
+ return self._unauthenticated
+
+ def _set_unauthenticated(self, unauthenticated):
+ self._unauthenticated = dbus.Array(unauthenticated, signature="s")
+ self.PropertyChanged("Unauthenticated", self._unauthenticated)
+
+ unauthenticated = property(_get_unauthenticated, _set_unauthenticated,
+ doc="Unauthenticated packages in this "
+ "transaction")
+
+ # package that can have a different auth schema, useful for e.g.
+ # lightweight packages like unity-webapps or packages comming from
+ # a high trust repository (e.g. a internal company repo)
+ def _get_high_trust_packages(self):
+ return self._high_trust_packages
+
+ def _set_high_trust_packages(self, whitelisted_packages):
+ self._high_trust_packages = dbus.Array(whitelisted_packages,
+ signature="s")
+ self.PropertyChanged("HighTrustWhitelistedPackages",
+ self._high_trust_packages)
+
+ high_trust_packages = property(_get_high_trust_packages,
+ _set_high_trust_packages,
+ doc="High trust packages in this "
+ "transaction")
+
+ def _get_depends(self):
+ return self._depends
+
+ def _set_depends(self, depends):
+ self._depends = dbus.Struct([dbus.Array(deps, signature="s")
+ for deps in depends],
+ signature="as")
+ self.PropertyChanged("Dependencies", self._depends)
+
+ depends = property(_get_depends, _set_depends,
+ doc="The additional dependencies: installs, removals, "
+ "upgrades and downgrades.")
+
+ def _get_status(self):
+ return self._status
+
+ def _set_status(self, enum):
+ self._status = dbus.String(enum)
+ self.PropertyChanged("Status", self._status)
+
+ status = property(_get_status, _set_status,
+ doc="The status of the transaction.")
+
+ def _get_status_details(self):
+ return self._status_details
+
+ def _set_status_details(self, text):
+ self._status_details = get_dbus_string(text)
+ self.PropertyChanged("StatusDetails", self._status_details)
+
+ status_details = property(_get_status_details, _set_status_details,
+ doc="The status message from apt.")
+
+ def _get_progress(self):
+ return self._progress
+
+ def _set_progress(self, percent):
+ self._progress = dbus.Int32(percent)
+ self.PropertyChanged("Progress", self._progress)
+
+ progress = property(_get_progress, _set_progress,
+ "The progress of the transaction in percent.")
+
+ def _get_progress_package(self):
+ return self._progress_package
+
+ def _set_progress_package(self, progress_package):
+ self._progress_package = self._convert_struct(progress_package, "ss")
+
+ progress_package = property(_get_progress_package,
+ _set_progress_package,
+ doc="The last progress update of a currently"
+ "processed package. A tuple of package "
+ "name and status enum.")
+
+ def _get_progress_download(self):
+ return self._progress_download
+
+ def _set_progress_download(self, progress_download):
+ self._progress_download = self._convert_struct(progress_download,
+ "sssxxs")
+ self.PropertyChanged("ProgressDownload", self._progress_download)
+
+ progress_download = property(_get_progress_download,
+ _set_progress_download,
+ doc="The last progress update of a currently"
+ "running download. A tuple of URI, "
+ "status, short description, full size, "
+ "partially downloaded size and a status "
+ "message.")
+
+ def _get_cancellable(self):
+ return self._cancellable
+
+ def _set_cancellable(self, cancellable):
+ self._cancellable = dbus.Boolean(cancellable)
+ self.PropertyChanged("Cancellable", self._cancellable)
+
+ cancellable = property(_get_cancellable, _set_cancellable,
+ doc="If it's currently allowed to cancel the "
+ "transaction.")
+
+ def _get_term_attached(self):
+ return self._term_attached
+
+ def _set_term_attached(self, attached):
+ self._term_attached = dbus.Boolean(attached)
+ self.PropertyChanged("TerminalAttached", self._term_attached)
+
+ term_attached = property(_get_term_attached, _set_term_attached,
+ doc="If the controlling terminal is currently "
+ "attached to the dpkg call of the "
+ "transaction.")
+
+ def _get_required_medium(self):
+ return self._required_medium
+
+ def _set_required_medium(self, medium):
+ self._required_medium = self._convert_struct(medium, "ss")
+ self.PropertyChanged("RequiredMedium", self._required_medium)
+ self.MediumRequired(*self._required_medium)
+
+ required_medium = property(_get_required_medium, _set_required_medium,
+ doc="Tuple containing the label and the drive "
+ "of a required CD/DVD to install packages "
+ "from.")
+
+ def _get_config_file_conflict(self):
+ return self._config_file_conflict
+
+ def _set_config_file_conflict(self, prompt):
+ if prompt is None:
+ self._config_file_conflict = dbus.Struct(("", ""), signature="ss")
+ return
+ self._config_file_conflict = self._convert_struct(prompt, "ss")
+ self.PropertyChanged("ConfigFileConflict", self._config_file_conflict)
+ self.ConfigFileConflict(*self._config_file_conflict)
+
+ config_file_conflict = property(_get_config_file_conflict,
+ _set_config_file_conflict,
+ doc="Tuple containing the old and the new "
+ "path of the configuration file")
+
+ # Signals
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ signature="sv")
+ def PropertyChanged(self, property, value):
+ """The signal gets emitted if a property of the transaction changed.
+
+ :param property: The name of the property.
+ :param value: The new value of the property.
+
+ :type property: s
+ :type value: v
+ """
+ log_trans.debug("Emitting PropertyChanged: %s, %s" % (property, value))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ signature="s")
+ def Finished(self, exit_state):
+ """The signal gets emitted if the transaction has been finished.
+
+ :param exit_state: The exit state of the transaction, e.g.
+ ``exit-failed``.
+ :type exit_state: s
+ """
+ log_trans.debug("Emitting Finished: %s" %
+ enums.get_exit_string_from_enum(exit_state))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ signature="ss")
+ def MediumRequired(self, medium, drive):
+ """Set and emit the required medium change.
+
+ This method/signal should be used to inform the user to
+ insert the installation CD/DVD:
+
+ Keyword arguments:
+ medium -- the CD/DVD label
+ drive -- mount point of the drive
+ """
+ log_trans.debug("Emitting MediumRequired: %s, %s" % (medium, drive))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ signature="ss")
+ def ConfigFileConflict(self, old, new):
+ """Set and emit the ConfigFileConflict signal.
+
+ This method/signal should be used to inform the user to
+ answer a config file prompt.
+
+ Keyword arguments:
+ old -- current version of the configuration prompt
+ new -- new version of the configuration prompt
+ """
+ log_trans.debug("Emitting ConfigFileConflict: %s, %s" % (old, new))
+
+ # Methods
+
+ def _set_locale(self, locale_str):
+ """Set the language and encoding.
+
+ Keyword arguments:
+ locale -- specifies language, territory and encoding according
+ to RFC 1766, e.g. "de_DE.UTF-8"
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+ if "/" in str(locale_str):
+ raise ValueError("Security exception: Absolute path for locale")
+ try:
+ # ensure locale string is str() and not dbus.String()
+ (lang, encoding) = locale._parse_localename(str(locale_str))
+ except ValueError:
+ raise
+ else:
+ if lang is None:
+ lang = "C"
+ self.locale = dbus.String(lang)
+ else:
+ self.locale = dbus.String("%s.%s" % (lang, encoding))
+ self._translation = gettext.translation("aptdaemon",
+ fallback=True,
+ languages=[lang])
+ self.PropertyChanged("locale", self.locale)
+
+ @inline_callbacks
+ def _set_http_proxy(self, url, sender):
+ """Set an http network proxy.
+
+ Keyword arguments:
+ url -- the URL of the proxy server, e.g. http://proxy:8080
+ """
+ if url != "" and (not url.startswith("http://") or ":" not in url):
+ raise errors.InvalidProxyError(url)
+ action = policykit1.PK_ACTION_SET_PROXY
+ yield policykit1.check_authorization_by_name(sender, action,
+ bus=self.bus)
+ self.http_proxy = dbus.String(url)
+ self.PropertyChanged("HttpProxy", self.http_proxy)
+
+ def _set_remove_obsoleted_depends(self, remove_obsoleted_depends):
+ """Set the handling of the removal of automatically installed
+ dependencies which are now obsoleted.
+
+ Keyword arguments:
+ remove_obsoleted_depends -- If True also remove automatically installed
+ dependencies of to removed packages
+ """
+ self.remove_obsoleted_depends = dbus.Boolean(remove_obsoleted_depends)
+ self.PropertyChanged("RemoveObsoletedDepends",
+ self.remove_obsoleted_depends)
+
+ def _set_allow_unauthenticated(self, allow_unauthenticated):
+ """Set the handling of unauthenticated packages
+
+ Keyword arguments:
+ allow_unauthenticated -- True to allow packages that come from a
+ repository without a valid authentication signature
+ """
+ self.allow_unauthenticated = dbus.Boolean(allow_unauthenticated)
+ self.PropertyChanged("AllowUnauthenticated",
+ self.allow_unauthenticated)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="s", out_signature="",
+ sender_keyword="sender")
+ def RunAfter(self, tid, sender):
+ """Queue the transaction for processing after the given transaction.
+
+ The transaction will also fail if the previous one failed. Several
+ transactions can be chained up.
+
+ :param tid: The id of the transaction which should be executed
+ before.
+
+ :type tid: s
+ """
+ log_trans.info("Queuing transaction %s", self.tid)
+ try:
+ trans_before = self.queue.limbo[tid]
+ except KeyError:
+ raise Exception("The given transaction doesn't exist or is "
+ "already queued!")
+ if trans_before.after:
+ raise Exception("There is already an after transaction!")
+ trans_before.after = self
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="", out_signature="",
+ sender_keyword="sender")
+ def Run(self, sender):
+ """Check the authentication, simulate and queue the transaction for
+ processing."""
+ log_trans.info("Queuing transaction %s", self.tid)
+ return self._run(sender)
+
+ @inline_callbacks
+ def _run(self, sender):
+ yield self._check_foreign_user(sender)
+ yield self._check_simulated()
+ yield self._check_auth()
+ self.queue.put(self.tid)
+ self.status = enums.STATUS_WAITING
+ next_trans = self.after
+ while next_trans:
+ yield self._check_simulated()
+ yield next_trans._check_auth()
+ self.queue.put(next_trans.tid)
+ next_trans.status = enums.STATUS_WAITING
+ next_trans = next_trans.after
+
+ @inline_callbacks
+ def _check_simulated(self):
+ # Simulate the new transaction if this has not been done before:
+ # FIXME: Compare the simulated timestamp with the time stamp of
+ # the status and re-simulate the transaction
+ if self.simulated is None:
+ # If there isn't any transaction on the queue we send an early
+ # progress information. Otherwise it juse seems that aptdaemon
+ # hangs since it doesn't send any progress information after the
+ # the transaction has been started
+ if not self.queue.worker.trans:
+ self.progress = 9
+ yield self._simulate_real()
+ else:
+ return
+
+ @inline_callbacks
+ def _check_auth(self):
+ """Check silently if one of the high level privileges has been granted
+ before to reduce clicks to install packages from third party
+ epositories: AddRepository -> UpdateCache -> InstallPackages
+ """
+ self.status = enums.STATUS_AUTHENTICATING
+ action = self.ROLE_ACTION_MAP[self.role]
+ if action is None:
+ return
+ # Special case if InstallPackages only touches stuff from the
+ # high trust whitelist
+ if (self.role in (enums.ROLE_INSTALL_PACKAGES,
+ enums.ROLE_COMMIT_PACKAGES) and
+ trans_only_installs_pkgs_from_high_trust_repos(self)):
+ action = policykit1.PK_ACTION_INSTALL_PACKAGES_FROM_HIGH_TRUST_REPO
+ # Special case if CommitPackages only upgrades
+ if (self.role == enums.ROLE_COMMIT_PACKAGES and
+ not self.packages[enums.PKGS_INSTALL] and
+ not self.packages[enums.PKGS_REINSTALL] and
+ not self.packages[enums.PKGS_REMOVE] and
+ not self.packages[enums.PKGS_PURGE] and
+ not self.packages[enums.PKGS_DOWNGRADE]):
+ action = policykit1.PK_ACTION_UPGRADE_PACKAGES
+ try:
+ authorized = yield self._check_alternative_auth()
+ if not authorized:
+ yield policykit1.check_authorization_by_name(self.sender,
+ action,
+ bus=self.bus)
+ except errors.NotAuthorizedError as error:
+ self.error = errors.TransactionFailed(enums.ERROR_NOT_AUTHORIZED,
+ str(error))
+ self.exit = enums.EXIT_FAILED
+ raise(error)
+ except errors.AuthorizationFailed as error:
+ self.error = errors.TransactionFailed(enums.ERROR_AUTH_FAILED,
+ str(error))
+ self.exit = enums.EXIT_FAILED
+ raise(error)
+
+ @inline_callbacks
+ def _check_alternative_auth(self):
+ """Check non-interactively if one of the high level privileges
+ has been granted.
+ """
+ if self.role not in [enums.ROLE_ADD_REPOSITORY,
+ enums.ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER,
+ enums.ROLE_UPDATE_CACHE,
+ enums.ROLE_INSTALL_PACKAGES,
+ enums.ROLE_ADD_LICENSE_KEY]:
+ return_value(False)
+ flags = policykit1.CHECK_AUTH_NONE
+ for action in [policykit1.PK_ACTION_INSTALL_PACKAGES_FROM_NEW_REPO,
+ policykit1.PK_ACTION_INSTALL_PURCHASED_PACKAGES]:
+ try:
+ yield policykit1.check_authorization_by_name(self.sender,
+ action,
+ bus=self.bus,
+ flags=flags)
+ except errors.NotAuthorizedError:
+ continue
+ else:
+ return_value(True)
+ return_value(False)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="", out_signature="",
+ sender_keyword="sender")
+ def Cancel(self, sender):
+ """Cancel the transaction."""
+ log_trans.info("Cancelling transaction %s", self.tid)
+ return self._cancel(sender)
+
+ @inline_callbacks
+ def _cancel(self, sender):
+ try:
+ yield self._check_foreign_user(sender)
+ except errors.ForeignTransaction:
+ action = policykit1.PK_ACTION_CANCEL_FOREIGN
+ yield policykit1.check_authorization_by_name(sender, action,
+ bus=self.bus)
+ try:
+ self.queue.remove(self)
+ log_trans.debug("Removed transaction from queue")
+ except ValueError:
+ pass
+ else:
+ self.status = enums.STATUS_CANCELLING
+ self.exit = enums.EXIT_CANCELLED
+ return
+ if self.tid in self.queue.limbo:
+ self.exit = enums.EXIT_CANCELLED
+ return
+ elif self.cancellable:
+ log_trans.debug("Setting cancel event")
+ self.cancelled = True
+ self.status = enums.STATUS_CANCELLING
+ self.paused = False
+ return
+ raise errors.AptDaemonError("Could not cancel transaction")
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="", out_signature="",
+ sender_keyword="sender")
+ def Simulate(self, sender):
+ """Simulate a transaction to update its dependencies, download size
+ and required disk space.
+
+ Call this method if you want to show changes before queuing the
+ transaction.
+ """
+ log_trans.info("Simulate was called")
+ return self._simulate(sender)
+
+ @inline_callbacks
+ def _simulate(self, sender):
+ if self._simulated_cb:
+ raise errors.TransactionAlreadySimulating()
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+ yield self._check_foreign_user(sender)
+ yield self._simulate_real()
+
+ @inline_callbacks
+ def _simulate_real(self):
+ if self._simulated_cb:
+ raise errors.TransactionAlreadySimulating()
+ if self.role == enums.ROLE_INSTALL_FILE:
+ yield self._check_auth()
+ self.queue.worker.simulate(self)
+ deferred = Deferred()
+ if self._idle_watch is not None:
+ GLib.source_remove(self._idle_watch)
+ self._idle_watch = None
+ self._simulated_cb = self.queue.worker.connect(
+ "transaction-simulated",
+ self._on_transaction_simulated,
+ deferred)
+ yield deferred
+
+ def _on_transaction_simulated(self, worker, trans, deferred):
+ if trans is not self:
+ return
+ self.queue.worker.disconnect(self._simulated_cb)
+ self._simualted_cb = None
+ if trans.error:
+ deferred.errback(trans.error)
+ else:
+ deferred.callback()
+
+ def _set_terminal(self, ttyname):
+ """Set the controlling terminal.
+
+ The worker will be attached to the specified slave end of a pty
+ master/slave pair. This allows to interact with the
+
+ Can only be changed before the transaction is started.
+
+ Keyword arguments:
+ ttyname -- file path to the slave file descriptor
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+ with set_euid_egid(self.uid, self.gid):
+ if os.path.dirname(ttyname) != "/dev/pts":
+ raise errors.AptDaemonError("%s isn't a tty" % ttyname)
+
+ slave_fd = None
+ try:
+ slave_fd = os.open(ttyname, os.O_RDWR | os.O_NOCTTY)
+ except Exception:
+ raise errors.AptDaemonError("Could not open %s" % ttyname)
+ else:
+ if os.fstat(slave_fd).st_uid != self.uid:
+ raise errors.AptDaemonError("Pty device '%s' has to be owned by"
+ "the owner of the transaction "
+ "(uid %s) " % (ttyname, self.uid))
+ if os.isatty(slave_fd):
+ self.terminal = dbus.String(ttyname)
+ self.PropertyChanged("Terminal", self.terminal)
+ else:
+ raise errors.AptDaemonError("%s isn't a tty" % ttyname)
+ finally:
+ if slave_fd is not None:
+ os.close(slave_fd)
+
+ def _set_debconf(self, debconf_socket):
+ """Set the socket of the debconf proxy.
+
+ The worker process forwards all debconf commands through this
+ socket by using the passthrough frontend. On the client side
+ debconf-communicate should be connected to the socket.
+
+ Can only be changed before the transaction is started.
+
+ Keyword arguments:
+ debconf_socket: absolute path to the socket
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+ with set_euid_egid(self.uid, self.gid):
+ try:
+ stat = os.stat(debconf_socket)
+ except Exception:
+ raise errors.AptDaemonError("socket status could not be read: "
+ "%s" % debconf_socket)
+ else:
+ if stat.st_uid != self.uid:
+ raise errors.AptDaemonError("socket '%s' has to be owned by the "
+ "owner of the "
+ "transaction" % debconf_socket)
+ self.debconf = dbus.String(debconf_socket)
+ self.PropertyChanged("DebconfSocket", self.debconf)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="s", out_signature="",
+ sender_keyword="sender")
+ def ProvideMedium(self, medium, sender):
+ """Continue paused transaction with the inserted medium.
+
+ If a media change is required to install packages from CD/DVD
+ the transaction will be paused and could be resumed with this
+ method.
+
+ :param medium: The label of the CD/DVD.
+ :type medium: s
+ """
+ log_trans.info("Medium %s was provided", medium)
+ return self._provide_medium(medium, sender)
+
+ @inline_callbacks
+ def _provide_medium(self, medium, sender):
+ yield self._check_foreign_user(sender)
+ if not self.required_medium:
+ raise errors.AptDaemonError("There isn't any required medium.")
+ if not self.required_medium[0] == medium:
+ raise errors.AptDaemonError("The medium '%s' isn't "
+ "requested." % medium)
+ self.paused = False
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+ in_signature="ss", out_signature="",
+ sender_keyword="sender")
+ def ResolveConfigFileConflict(self, config, answer, sender):
+ """Resolve a configuration file conflict and continue the transaction.
+
+ If a config file prompt is detected the transaction will be
+ paused and could be resumed with this method.
+
+ :param config: The path to the original config file.
+ :param answer: The answer to the configuration file question, can be
+ "keep" or "replace"
+
+ :type config: s
+ :type answer: s
+ """
+ log_trans.info("Resolved conflict of %s with %s", config, answer)
+ return self._resolve_config_file_conflict(config, answer, sender)
+
+ @inline_callbacks
+ def _resolve_config_file_conflict(self, config, answer, sender):
+ yield self._check_foreign_user(sender)
+ if not self.config_file_conflict:
+ raise errors.AptDaemonError("There isn't any config file prompt "
+ "required")
+ if answer not in ["keep", "replace"]:
+ # FIXME: should we re-send the config file prompt
+ # message or assume the client is buggy and
+ # just use a safe default (like keep)?
+ raise errors.AptDaemonError("Invalid value: %s" % answer)
+ if not self.config_file_conflict[0] == config:
+ raise errors.AptDaemonError("Invalid config file: %s" % config)
+ self.config_file_conflict_resolution = answer
+ self.paused = False
+
+ @inline_callbacks
+ def _set_property(self, iface, name, value, sender):
+ """Helper to set a name on the properties D-Bus interface."""
+ yield self._check_foreign_user(sender)
+ if iface == APTDAEMON_TRANSACTION_DBUS_INTERFACE:
+ if name == "MetaData":
+ self._set_meta_data(value)
+ elif name == "Terminal":
+ self._set_terminal(value)
+ elif name == "DebconfSocket":
+ self._set_debconf(value)
+ elif name == "Locale":
+ self._set_locale(value)
+ elif name == "RemoveObsoletedDepends":
+ self._set_remove_obsoleted_depends(value)
+ elif name == "AllowUnauthenticated":
+ self._set_allow_unauthenticated(value)
+ elif name == "HttpProxy":
+ self._set_http_proxy(value, sender)
+ else:
+ raise dbus.exceptions.DBusException("Unknown or read only "
+ "property: %s" % name)
+ else:
+ raise dbus.exceptions.DBusException("Unknown interface: %s" %
+ iface)
+
+ def _get_properties(self, iface):
+ """Helper to get the properties of a D-Bus interface."""
+ if iface == APTDAEMON_TRANSACTION_DBUS_INTERFACE:
+ return {"Role": self.role,
+ "Progress": self.progress,
+ "ProgressDetails": self.progress_details,
+ "ProgressDownload": self.progress_download,
+ "Status": self.status,
+ "StatusDetails": self.status_details,
+ "Cancellable": self.cancellable,
+ "TerminalAttached": self.term_attached,
+ "RequiredMedium": self.required_medium,
+ "ConfigFileConflict": self.config_file_conflict,
+ "ExitState": self.exit,
+ "Error": self._error_property,
+ "Locale": self.locale,
+ "Terminal": self.terminal,
+ "DebconfSocket": self.debconf,
+ "Paused": dbus.Boolean(self.paused),
+ "AllowUnauthenticated": self.allow_unauthenticated,
+ "RemoveObsoletedDepends": self.remove_obsoleted_depends,
+ "HttpProxy": self.http_proxy,
+ "Packages": self.packages,
+ "MetaData": self.meta_data,
+ "Dependencies": self.depends,
+ "Download": self.download,
+ "Space": self.space,
+ "Unauthenticated": self.unauthenticated,
+ }
+ else:
+ return {}
+
+ @inline_callbacks
+ def _check_foreign_user(self, dbus_name):
+ """Check if the transaction is owned by the given caller."""
+ uid = yield policykit1.get_uid_from_dbus_name(dbus_name, self.bus)
+ if self.uid != uid:
+ raise errors.ForeignTransaction()
+
+ def _set_kwargs(self, kwargs):
+ """Set the kwargs which will be send to the AptWorker."""
+ self.kwargs = kwargs
+
+ def _get_translations(self):
+ """Get a usable translations object, no matter what."""
+ if self._translation:
+ return self._translation
+ else:
+ domain = "aptdaemon"
+ return gettext.translation(domain, gettext.bindtextdomain(domain),
+ gettext.bind_textdomain_codeset(domain),
+ fallback=True)
+
+ def gettext(self, msg):
+ """Translate the given message to the language of the transaction.
+ Fallback to the system default.
+ """
+ # Avoid showing the header of the mo file for an empty string
+ if not msg:
+ return ""
+ translation = self._get_translations()
+ return getattr(translation, _gettext_method)(msg)
+
+ def ngettext(self, singular, plural, count):
+ """Translate the given plural message to the language of the
+ transaction. Fallback to the system default.
+ """
+ translation = self._get_translations()
+ return getattr(translation, _ngettext_method)(singular, plural, count)
+
+
+class TransactionQueue(GObject.GObject):
+
+ """Queue for transactions."""
+
+ __gsignals__ = {"queue-changed": (GObject.SignalFlags.RUN_FIRST,
+ None,
+ ())}
+
+ def __init__(self, worker):
+ """Intialize a new TransactionQueue instance."""
+ GObject.GObject.__init__(self)
+ self._queue = collections.deque()
+ self._proc_count = 0
+ self.worker = worker
+ # Used to keep track of not yet queued transactions
+ self.limbo = {}
+ self.worker.connect("transaction-done", self._on_transaction_done)
+
+ def __len__(self):
+ return len(self._queue)
+
+ def _emit_queue_changed(self):
+ """Emit the queued-changed signal."""
+ log.debug("emitting queue changed")
+ self.emit("queue-changed")
+
+ def put(self, tid):
+ """Add an item to the queue."""
+ trans = self.limbo.pop(tid)
+ if trans._idle_watch is not None:
+ GLib.source_remove(trans._idle_watch)
+ if self.worker.trans:
+ trans.status = enums.STATUS_WAITING
+ self._queue.append(trans)
+ else:
+ self.worker.run(trans)
+ self._emit_queue_changed()
+
+ def _on_transaction_done(self, worker, trans):
+ """Mark the last item as done and request a new item."""
+ # FIXME: Check if the transaction failed because of a broken system or
+ # if dpkg journal is dirty. If so allready queued transactions
+ # except the repair transactions should be removed from the queue
+ if trans.exit in [enums.EXIT_FAILED, enums.EXIT_CANCELLED]:
+ if trans.exit == enums.EXIT_FAILED:
+ exit = enums.EXIT_PREVIOUS_FAILED
+ else:
+ exit = enums.EXIT_CANCELLED
+ _trans = trans.after
+ while _trans:
+ self.remove(_trans)
+ _trans.exit = exit
+ msg = enums.get_role_error_from_enum(trans.role)
+ _trans.status_details = msg
+ _trans = _trans.after
+ try:
+ next_trans = self._queue.popleft()
+ except IndexError:
+ log.debug("There isn't any queued transaction")
+ else:
+ self.worker.run(next_trans)
+ self._emit_queue_changed()
+
+ def remove(self, transaction):
+ """Remove the specified item from the queue."""
+ self._queue.remove(transaction)
+ self._emit_queue_changed()
+
+ def clear(self):
+ """Remove all items from the queue."""
+ for transaction in self._queue:
+ transaction._remove_from_connection_no_raise()
+ self._queue.clear()
+
+ @property
+ def items(self):
+ """Return a list containing all queued items."""
+ return list(self._queue)
+
+
+class AptDaemon(DBusObject):
+
+ """Provides a system daemon to process package management tasks.
+
+ The daemon is transaction based. Each package management tasks runs
+ in a separate transaction. The transactions can be created,
+ monitored and managed via the D-Bus interface.
+ """
+
+ def __init__(self, options, connect=True, bus=None):
+ """Initialize a new AptDaemon instance.
+
+ Keyword arguments:
+ options -- command line options of the type optparse.Values
+ connect -- if the daemon should connect to the D-Bus (default is True)
+ bus -- the D-Bus to connect to (defaults to the system bus)
+ """
+ log.info("Initializing daemon")
+ # glib does not support SIGQUIT
+ # GLib.unix_signal_add_full(
+ # GLib.PRIORITY_HIGH, signal.SIGQUIT, self._sigquit, None)
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM,
+ self._sigquit, None)
+ # Decrease the priority of the daemon to avoid blocking UI
+ os.nice(5)
+ self.options = options
+ self.packagekit = None
+ if connect is True:
+ if bus is None:
+ bus = dbus.SystemBus()
+ self.bus = bus
+ bus_path = APTDAEMON_DBUS_PATH
+ # Check if another object has already registered the name on
+ # the bus. Quit the other daemon if replace would be set
+ try:
+ bus_name = dbus.service.BusName(APTDAEMON_DBUS_SERVICE,
+ bus,
+ do_not_queue=True)
+ except dbus.exceptions.NameExistsException:
+ if self.options.replace is False:
+ log.critical("Another daemon is already running")
+ sys.exit(1)
+ log.warning("Replacing already running daemon")
+ the_other_guy = bus.get_object(APTDAEMON_DBUS_SERVICE,
+ APTDAEMON_DBUS_PATH)
+ the_other_guy.Quit(dbus_interface=APTDAEMON_DBUS_INTERFACE,
+ timeout=300)
+ time.sleep(1)
+ bus_name = dbus.service.BusName(APTDAEMON_DBUS_SERVICE,
+ bus,
+ do_not_queue=True)
+ else:
+ bus_name = None
+ bus_path = None
+ DBusObject.__init__(self, bus_name, bus_path)
+ if options.dummy:
+ self.worker = DummyWorker()
+ else:
+ load_plugins = not options.disable_plugins
+ try:
+ from .worker.pkworker import AptPackageKitWorker
+ self.worker = AptPackageKitWorker(options.chroot,
+ load_plugins)
+ except:
+ self.worker = AptWorker(options.chroot, load_plugins)
+ self.queue = TransactionQueue(self.worker)
+ self.queue.connect("queue-changed", self._on_queue_changed)
+ # keep state of the last information about reboot required
+ self._reboot_required = self.worker.is_reboot_required()
+ log.debug("Daemon was initialized")
+
+ def _on_queue_changed(self, queue):
+ """Callback for a changed transaction queue."""
+ # check for reboot required
+ if self.worker.is_reboot_required() != self._reboot_required:
+ self._reboot_required = self.worker.is_reboot_required()
+ self.PropertyChanged("RebootRequired", self._reboot_required)
+ # check for the queue
+ if self.queue.worker.trans:
+ current = self.queue.worker.trans.tid
+ else:
+ current = ""
+ queued = [trans.tid for trans in self.queue.items]
+ self.ActiveTransactionsChanged(current, queued)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_DBUS_INTERFACE,
+ signature="sv")
+ def PropertyChanged(self, property, value):
+ """The signal gets emitted if a property of the transaction changed.
+
+ :param property: The name of the property.
+ :param value: The new value of the property.
+
+ :type property: s
+ :type value: v
+ """
+ log.debug("Emitting PropertyChanged: %s, %s" % (property, value))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.signal(dbus_interface=APTDAEMON_DBUS_INTERFACE,
+ signature="sas")
+ def ActiveTransactionsChanged(self, current, queued):
+ """The currently processed or the queued transactions changed.
+
+ :param current: The path of the currently running transaction or
+ an empty string.
+ :param queued: List of the ids of the queued transactions.
+
+ :type current: s
+ :type queued: as
+ """
+ log.debug("Emitting ActiveTransactionsChanged signal: %s, %s",
+ current, queued)
+
+ def run(self):
+ """Start the daemon and listen for calls."""
+ if self.options.disable_timeout is False:
+ log.debug("Using inactivity check")
+ GLib.timeout_add_seconds(APTDAEMON_IDLE_CHECK_INTERVAL,
+ self._check_for_inactivity)
+ log.debug("Waiting for calls")
+ try:
+ mainloop.run()
+ except KeyboardInterrupt:
+ self.Quit(None)
+
+ @inline_callbacks
+ def _create_trans(self, role, sender, packages=None, kwargs=None):
+ """Helper method which returns the tid of a new transaction."""
+ pid, uid, gid, cmdline = (
+ yield policykit1.get_proc_info_from_dbus_name(sender, self.bus))
+ tid = uuid.uuid4().hex
+ trans = Transaction(
+ tid, role, self.queue, pid, uid, gid, cmdline, sender,
+ packages=packages, kwargs=kwargs, bus=self.bus)
+ self.queue.limbo[trans.tid] = trans
+ return_value(trans.tid)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="s",
+ sender_keyword="sender")
+ def FixIncompleteInstall(self, sender):
+ """Try to complete cancelled installations. This is equivalent to a
+ call of ``dpkg --configure -a``.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("FixIncompleteInstall() called")
+ return self._create_trans(enums.ROLE_FIX_INCOMPLETE_INSTALL, sender)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="s",
+ sender_keyword="sender")
+ def FixBrokenDepends(self, sender):
+ """Try to resolve unsatisfied dependencies of installed packages.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("FixBrokenDepends() called")
+ return self._create_trans(enums.ROLE_FIX_BROKEN_DEPENDS, sender)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="s",
+ sender_keyword="sender")
+ def UpdateCache(self, sender):
+ """Download the latest information about available packages from the
+ repositories and rebuild the package cache.
+
+ Requires the ``org.debian.apt.update-cache``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("UpdateCache() was called")
+ kwargs = {"sources_list": None}
+ return self._create_trans(enums.ROLE_UPDATE_CACHE, sender,
+ kwargs=kwargs)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="s", out_signature="s",
+ sender_keyword="sender")
+ def UpdateCachePartially(self, sources_list, sender):
+ """Update the cache from the repositories defined in the given
+ sources.list only.
+
+ Requires the ``org.debian.apt.update-cache``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param sources_list: The absolute path to a sources.list, e.g.
+ :file:`/etc/apt/sources.list.d/ppa-aptdaemon.list` or the name
+ of the snippet in :file:`/etc/apt/sources.list.d/`, e.g.
+ :file:`ppa-aptdaemon.list`.
+ :type sources_list: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("UpdateCachePartially() was called")
+ kwargs = {"sources_list": sources_list}
+ return self._create_trans(enums.ROLE_UPDATE_CACHE, sender,
+ kwargs=kwargs)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="as", out_signature="s",
+ sender_keyword="sender")
+ def RemovePackages(self, package_names, sender):
+ """Remove the given packages from the system. The configuration files
+ will be kept by default. Use :func:`CommitPackages()` to also purge the
+ configuration files.
+
+ Requires the ``org.debian.apt.install-or-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param package_names: packages to be removed
+ :type package_names: as
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("RemovePackages() was called: '%s'", package_names)
+ self._check_package_names(package_names)
+ return self._create_trans(enums.ROLE_REMOVE_PACKAGES, sender,
+ packages=([], [], package_names, [], [], []))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="b", out_signature="s",
+ sender_keyword="sender")
+ def UpgradeSystem(self, safe_mode, sender):
+ """Apply all available upgrades and try to resolve conflicts.
+
+ Requires the ``org.debian.apt.upgrade-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param safe_mode: If True only already installed packages will be
+ updated. Updates which require to remove installed packages or to
+ install additional packages will be skipped.
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("UpgradeSystem() was called with safe mode: "
+ "%s" % safe_mode)
+ return self._create_trans(enums.ROLE_UPGRADE_SYSTEM, sender,
+ kwargs={"safe_mode": safe_mode})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="asasasasasas", out_signature="s",
+ sender_keyword="sender")
+ def CommitPackages(self, install, reinstall, remove, purge, upgrade,
+ downgrade, sender):
+ """Perform several package changes at the same time.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param install: Packages to be installed.
+ :param reinstall: Packages to be re-installed
+ :param remove: Packages to be removed
+ :param purge: Package to be removed including theirs configuration
+ files.
+ :param upgrade: Packages to be upgraded.
+ :param downgrade: Packages to be downgraded. You
+ have to append the target version to the package name separated
+ by "="
+
+ :type install: as
+ :type reinstall: as
+ :type remove: as
+ :type purge: as
+ :type upgrade: as
+ :type downgrade: as
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ # FIXME: take sha1 or md5 cash into accout to allow selecting a version
+ # or an origin different from the candidate
+ log.info("CommitPackages() was called: %s, %s, %s, %s, %s, %s",
+ install, reinstall, remove, purge, upgrade, downgrade)
+
+ def check_empty_list(lst):
+ if lst == [""]:
+ return []
+ else:
+ return lst
+ packages_lst = [check_empty_list(lst) for lst in [install, reinstall,
+ remove, purge,
+ upgrade,
+ downgrade]]
+ for packages in packages_lst:
+ self._check_package_names(packages)
+ return self._create_trans(enums.ROLE_COMMIT_PACKAGES, sender,
+ packages=packages_lst)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="as", out_signature="s",
+ sender_keyword="sender")
+ def InstallPackages(self, package_names, sender):
+ """Fetch and install the given packages from the repositories.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param package_names: Packages to be upgraded
+ :type package_names: as
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("InstallPackages() was called: %s" % package_names)
+ self._check_package_names(package_names)
+ return self._create_trans(enums.ROLE_INSTALL_PACKAGES, sender,
+ packages=(package_names, [], [], [], [], []))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="as", out_signature="s",
+ sender_keyword="sender")
+ def UpgradePackages(self, package_names, sender):
+ """Upgrade the given packages to their latest version.
+
+ The version number and target release of the packages can be specified
+ using the traditional apt-get syntax, e.g. "xterm=281.1" to force
+ installing the version 281.1 of xterm or "xterm/experimental" to
+ force installing xterm from the experimental release.
+
+ Requires the ``org.debian.apt.upgrade-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param package_names: Packages to be upgraded
+ :type package_names: as
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("UpgradePackages() was called: %s" % package_names)
+ self._check_package_names(package_names)
+ return self._create_trans(enums.ROLE_UPGRADE_PACKAGES, sender,
+ packages=([], [], [], [], package_names, []))
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="ss", out_signature="s",
+ sender_keyword="sender")
+ def AddVendorKeyFromKeyserver(self, keyid, keyserver, sender):
+ """Download and install the key of a software vendor. The key is
+ used to authenticate packages of the vendor.
+
+ Requires the ``org.debian.apt.change-repositories``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param keyid: The id of the GnuPG key (e.g. 0x0EB12F05)
+ :param keyserver: The server to get the key from (e.g.
+ keyserver.ubuntu.com)
+
+ :type keyid: s
+ :type keyserver: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("InstallVendorKeyFromKeyserver() was called: %s %s",
+ keyid, keyserver)
+ return self._create_trans(enums.ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER,
+ sender, kwargs={"keyid": keyid,
+ "keyserver": keyserver})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="s", out_signature="s",
+ sender_keyword="sender")
+ def AddVendorKeyFromFile(self, path, sender):
+ """Install the key file of a software vendor. The key is
+ used to authenticate packages of the vendor.
+
+ Requires the ``org.debian.apt.change-repositories``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param path: The absolute path to the key file.
+ :type path: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("InstallVendorKeyFile() was called: %s" % path)
+ return self._create_trans(enums.ROLE_ADD_VENDOR_KEY_FILE,
+ sender, kwargs={"path": path})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="s", out_signature="s",
+ sender_keyword="sender")
+ def RemoveVendorKey(self, fingerprint, sender):
+ """Remove the given key of a software vendor. The key is used to
+ authenticate packages of the vendor.
+
+ Requires the ``org.debian.apt.change-repositories``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param fingerprint: The fingerprint of the key.
+ :type fingerprint: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("RemoveVendorKey() was called: %s" % fingerprint)
+ return self._create_trans(enums.ROLE_REMOVE_VENDOR_KEY,
+ sender, kwargs={"fingerprint": fingerprint})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="sb", out_signature="s",
+ sender_keyword="sender")
+ def InstallFile(self, path, force, sender):
+ """Install the given local package file.
+
+ Requires the ``org.debian.apt.install-file``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param path: The absolute path to the package file.
+ :param force: If the installation of a package which violates the
+ Debian/Ubuntu policy should be forced.
+
+ :type path: s
+ :type force: b
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("InstallFile() was called: %s" % path)
+ # FIXME: Perform some checks
+ # FIXME: Should we already extract the package name here?
+ return self._create_trans(enums.ROLE_INSTALL_FILE,
+ sender, kwargs={"path": path,
+ "force": force})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="s",
+ sender_keyword="sender")
+ def Clean(self, sender):
+ """Remove downloaded package files.
+
+ Requires the ``org.debian.apt.clean``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("Clean() was called")
+ return self._create_trans(enums.ROLE_CLEAN, sender)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="ass", out_signature="s",
+ sender_keyword="sender")
+ def Reconfigure(self, packages, priority, sender):
+ """Reconfigure already installed packages.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param packages: List of package names which should be reconfigure.
+ :param priority: The minimum debconf priority of question to be
+ displayed. Can be of value "low", "medium", "high", "critical",
+ "default".
+
+ :type packages: as
+ :type priority: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("Reconfigure() was called: %s" % " ".join(packages))
+ return self._create_trans(enums.ROLE_RECONFIGURE, sender,
+ packages=[[], packages, [], [], [], []],
+ kwargs={"priority": priority})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="sssasss", out_signature="s",
+ sender_keyword="sender")
+ def AddRepository(self, src_type, uri, dist, comps, comment, sourcesfile,
+ sender):
+ """Add given repository to the sources list.
+
+ Requires the ``org.debian.apt.change-repositories``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param src_type: The type of the repository (deb, deb-src).
+ :param uri: The main repository URI
+ (e.g. http://archive.ubuntu.com/ubuntu)
+ :param dist: The distribution to use (e.g. stable or lenny-backports).
+ :param comps: List of components (e.g. main, restricted).
+ :param comment: A comment which should be added to the sources.list.
+ :param sourcesfile: (Optoinal) filename in sources.list.d.
+
+ :type src_type: s
+ :type uri: s
+ :type dist: s
+ :type comps: as
+ :type comment: s
+ :type sourcesfile: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("AddRepository() was called: type='%s' uri='%s' "
+ "dist='%s' comps='%s' comment='%s' sourcesfile='%s'",
+ src_type, uri, dist, comps, comment, sourcesfile)
+ return self._create_trans(enums.ROLE_ADD_REPOSITORY, sender,
+ kwargs={"src_type": src_type, "uri": uri,
+ "dist": dist, "comps": comps,
+ "comment": comment,
+ "sourcesfile": sourcesfile})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="s", out_signature="s",
+ sender_keyword="sender")
+ def EnableDistroComponent(self, component, sender):
+ """Enable the component in the distribution repositories. This will
+ not affect third-party repositories.
+
+ The repositories of a distribution are often separated into
+ different components because of policy reasons. E.g. Debian uses main
+ for DFSG-free software and non-free for re-distributable but not free
+ in the sense of the Debian Free Software Guidelines.
+
+ Requires the ``org.debian.apt.change-repositories``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param component: The component, e,g, main or non-free.
+ :type component: s
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("EnableComponent() was called: component='%s' ", component)
+ return self._create_trans(enums.ROLE_ENABLE_DISTRO_COMP, sender,
+ kwargs={"component": component})
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="as",
+ sender_keyword="sender")
+ def GetTrustedVendorKeys(self, sender):
+ """Get the list of the installed vendor keys which are used to
+ authenticate packages.
+
+ Requires the ``org.debian.apt.get-trusted-vendor-keys``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :returns: Fingerprints of all installed keys.
+ """
+ log.info("GetTrustedVendorKeys() was called")
+ return self._get_trusted_vendor_keys(sender)
+
+ @inline_callbacks
+ def _get_trusted_vendor_keys(self, sender):
+ action = policykit1.PK_ACTION_GET_TRUSTED_VENDOR_KEYS
+ yield policykit1.check_authorization_by_name(sender, action,
+ bus=self.bus)
+ fingerprints = self.worker.get_trusted_vendor_keys()
+ return_value(fingerprints)
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="sas")
+ def GetActiveTransactions(self):
+ """Return the currently running transaction and the list of queued
+ transactions.
+ """
+ log.debug("GetActiveTransactions() was called")
+ queued = [trans.tid for trans in self.queue.items]
+ if self.queue.worker.trans:
+ current = self.queue.worker.trans.tid
+ else:
+ current = ""
+ return current, queued
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus.service.method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="", out_signature="",
+ sender_keyword="caller_name")
+ def Quit(self, caller_name):
+ """Request a shutdown of the daemon."""
+ log.info("Quitting was requested")
+ log.debug("Quitting main loop...")
+ mainloop.quit()
+ log.debug("Exit")
+
+ # pylint: disable-msg=C0103,C0322
+ @dbus_deferred_method(APTDAEMON_DBUS_INTERFACE,
+ in_signature="sss", out_signature="s",
+ sender_keyword="sender")
+ def AddLicenseKey(self, pkg_name, json_token, server_name, sender):
+ """Install a license key to use a piece of proprietary software.
+
+ Requires the ``org.debian.apt.install-or-remove-packages``
+ :ref:`PolicyKit privilege <policykit>`.
+
+ :param pkg_name: The name of the package which requires the license
+ :type pkg_name: s
+ :param json_token: The oauth token to use with the server in
+ json format
+ :type pkg_name: s
+ :param server_name: The name of the server to use (ubuntu-production,
+ ubuntu-staging)
+ :type pkg_name: s
+
+ :returns: The D-Bus path of the new transaction object which
+ performs this action.
+ """
+ log.info("AddLicenseKey() was called")
+ return self._create_trans(enums.ROLE_ADD_LICENSE_KEY, sender,
+ kwargs={'pkg_name': pkg_name,
+ 'json_token': json_token,
+ 'server_name': server_name})
+
+ @inline_callbacks
+ def _set_property(self, iface, name, value, sender):
+ """Helper to set a property on the properties D-Bus interface."""
+ action = policykit1.PK_ACTION_CHANGE_CONFIG
+ yield policykit1.check_authorization_by_name(sender, action,
+ bus=self.bus)
+ if iface == APTDAEMON_DBUS_INTERFACE:
+ if name == "PopConParticipation":
+ self.worker.set_config(name, dbus.Boolean(value))
+ elif name == "AutoUpdateInterval":
+ self.worker.set_config(name, dbus.Int32(value), "10periodic")
+ elif name == "AutoDownload":
+ self.worker.set_config(name, dbus.Boolean(value), "10periodic")
+ elif name == "AutoCleanInterval":
+ self.worker.set_config(name, dbus.Int32(value), "10periodic")
+ elif name == "UnattendedUpgrade":
+ self.worker.set_config(name, dbus.Boolean(value), "10periodic")
+ else:
+ raise dbus.exceptions.DBusException("Unknown or read only "
+ "property: %s" % name)
+ else:
+ raise dbus.exceptions.DBusException("Unknown interface: %s" %
+ iface)
+
+ def _check_package_names(self, pkg_names):
+ """Check if the package names are valid. Otherwise raise an
+ exception.
+ """
+ for fullname in pkg_names:
+ name, version, release = split_package_id(fullname)
+ name, sep, auto_flag = name.partition("#")
+ if not auto_flag in ("", "auto"):
+ raise errors.AptDaemonError("%s isn't a valid flag" %
+ auto_flag)
+ if not re.match(REGEX_VALID_PACKAGENAME, name):
+ raise errors.AptDaemonError("%s isn't a valid package name" %
+ name)
+ if (version is not None and
+ not re.match(REGEX_VALID_VERSION, version)):
+ raise errors.AptDaemonError("%s isn't a valid version" %
+ version)
+ if (release is not None and
+ not re.match(REGEX_VALID_RELEASE, release)):
+ raise errors.AptDaemonError("%s isn't a valid release" %
+ release)
+
+ def _get_properties(self, iface):
+ """Helper get the properties of a D-Bus interface."""
+ if iface == APTDAEMON_DBUS_INTERFACE:
+ return {
+ "AutoUpdateInterval": dbus.Int32(
+ self.worker.get_config("AutoUpdateInterval")),
+ "AutoDownload": dbus.Boolean(
+ self.worker.get_config("AutoDownload")),
+ "AutoCleanInterval": dbus.Int32(
+ self.worker.get_config("AutoCleanInterval")),
+ "UnattendedUpgrade": dbus.Int32(
+ self.worker.get_config("UnattendedUpgrade")),
+ "PopConParticipation": dbus.Boolean(
+ self.worker.get_config("PopConParticipation")),
+ "RebootRequired": dbus.Boolean(
+ self.worker.is_reboot_required())}
+ else:
+ return {}
+
+ def _sigquit(self, data):
+ """Internal callback for the quit signal."""
+ self.Quit(None)
+
+ def _check_for_inactivity(self):
+ """Shutdown the daemon if it has been inactive for time specified
+ in APTDAEMON_IDLE_TIMEOUT.
+ """
+ log.debug("Checking for inactivity")
+ timestamp = self.queue.worker.last_action_timestamp
+ if (not self.queue.worker.trans and
+ not GLib.main_context_default().pending() and
+ time.time() - timestamp > APTDAEMON_IDLE_TIMEOUT and
+ not self.queue):
+ log.info("Quitting due to inactivity")
+ self.Quit(None)
+ return False
+ return True
+
+
+def get_dbus_string(text, encoding="UTF-8"):
+ """Convert the given string or unicode object to a dbus.String."""
+ try:
+ return dbus.String(text)
+ except UnicodeDecodeError:
+ return dbus.String(text.decode(encoding, "ignore"))
+
+
+def main():
+ """Allow to run the daemon from the command line."""
+ parser = OptionParser()
+ parser.add_option("-t", "--disable-timeout",
+ default=False,
+ action="store_true", dest="disable_timeout",
+ help=_("Do not shutdown the daemon because of "
+ "inactivity"))
+ parser.add_option("", "--disable-plugins",
+ default=False,
+ action="store_true", dest="disable_plugins",
+ help=_("Do not load any plugins"))
+ parser.add_option("-d", "--debug",
+ default=False,
+ action="store_true", dest="debug",
+ help=_("Show internal processing "
+ "information"))
+ parser.add_option("-r", "--replace",
+ default=False,
+ action="store_true", dest="replace",
+ help=_("Quit and replace an already running "
+ "daemon"))
+ parser.add_option("", "--session-bus",
+ default=False,
+ action="store_true", dest="session_bus",
+ help=_("Listen on the DBus session bus (Only required "
+ "for testing"))
+ parser.add_option("", "--chroot", default=None,
+ action="store", type="string", dest="chroot",
+ help=_("Perform operations in the given "
+ "chroot"))
+ parser.add_option("-p", "--profile",
+ default=False,
+ action="store", type="string", dest="profile",
+ help=_("Store profile stats in the specified "
+ "file"))
+ parser.add_option("--dummy",
+ default=False,
+ action="store_true", dest="dummy",
+ help=_("Do not make any changes to the system (Only "
+ "of use to developers)"))
+ options, args = parser.parse_args()
+ if options.debug is True:
+ log.setLevel(logging.DEBUG)
+ else:
+ log.setLevel(logging.INFO)
+ _console_handler.setLevel(logging.INFO)
+ if options.session_bus:
+ bus = dbus.SessionBus()
+ else:
+ bus = None
+ daemon = AptDaemon(options, bus=bus)
+ if options.profile:
+ import profile
+ profiler = profile.Profile()
+ profiler.runcall(daemon.run)
+ profiler.dump_stats(options.profile)
+ profiler.print_stats()
+ else:
+ daemon.run()
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/crash.py b/aptdaemon/crash.py
new file mode 100644
index 0000000..570b684
--- /dev/null
+++ b/aptdaemon/crash.py
@@ -0,0 +1,79 @@
+"""Apport integration to provide better problem reports."""
+# Copyright (C) 2010 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("create_report")
+
+import os
+
+import apport
+import apport.fileutils
+import apt_pkg
+
+from . import enums
+
+
+def create_report(error, traceback, trans=None):
+ """Create an apport problem report for a given crash.
+
+ :param error: The summary of the error.
+ :param traceback: The traceback of the exception.
+ :param trans: The optional transaction in which the crash occured.
+ """
+ if not apport.packaging.enabled() or os.getcwd() != "/":
+ return
+
+ uid = 0
+ report = apport.Report("Crash")
+ report["Title"] = error
+ package = "aptdaemon"
+ try:
+ package_version = apport.packaging.get_version(package)
+ except ValueError as e:
+ if 'does not exist' in e.message:
+ package_version = 'unknown'
+ report['Package'] = '%s %s' % (package, package_version)
+ report["SourcePackage"] = "aptdaemon"
+ report["Traceback"] = traceback
+ report["ExecutablePath"] = "/usr/sbin/aptd"
+ report.add_os_info()
+
+ # Attach information about the transaction
+ if trans:
+ report["Annotation"] = enums.get_role_error_from_enum(trans.role)
+ report["TransactionRole"] = trans.role
+ report["TransactionPackages"] = str([list(l) for l in trans.packages])
+ report["TransactionDepends"] = str([list(l) for l in trans.depends])
+ report["TransactionKwargs"] = str(trans.kwargs)
+ report["TransactionLocale"] = trans.locale
+ report["TransactionOutput"] = trans.output
+ report["TransactionErrorCode"] = trans._error_property[0]
+ report["TransactionErrorDetails"] = trans._error_property[1]
+ uid = os.path.basename(trans.tid)
+
+ # Write report
+ with apport.fileutils.make_report_file(report, uid) as f:
+ report.write(f)
+
+if __name__ == "__main__":
+ apt_pkg.init_config()
+ create_report('test', 'testtrace')
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/debconf.py b/aptdaemon/debconf.py
new file mode 100644
index 0000000..75a28ef
--- /dev/null
+++ b/aptdaemon/debconf.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Integration of debconf on the client side
+
+Provides the DebconfProxy class which allows to run the debconf frontend
+as normal user by connecting to the root running debconf through the
+socket of the passthrough frontend.
+"""
+# Copyright (C) 2009 Sebastian Heinlein <devel@glatzor.de>
+# Copyright (C) 2009 Michael Vogt <michael.vogt@ubuntu.com>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__all__ = ("DebconfProxy",)
+
+import copy
+import logging
+import os
+import os.path
+import socket
+import subprocess
+import tempfile
+import sys
+
+from gi.repository import GLib
+
+log = logging.getLogger("AptClient.DebconfProxy")
+
+
+class DebconfProxy(object):
+
+ """The DebconfProxy class allows to run the debconf frontend
+ as normal user by connecting to the root debconf through the socket of the
+ passthrough frontend.
+ """
+
+ def __init__(self, frontend="gnome", socket_path=None):
+ """Initialize a new DebconfProxy instance.
+
+ Keyword arguments:
+ frontend -- the to be used debconf frontend (defaults to gnome)
+ socket_path -- the path to the socket of the passthrough frontend.
+ Will be created if not specified
+ """
+ self.socket_path = socket_path
+ self.temp_dir = None
+ if socket_path is None:
+ self.temp_dir = tempfile.mkdtemp(prefix="aptdaemon-")
+ self.socket_path = os.path.join(self.temp_dir, "debconf.socket")
+ log.debug("debconf socket: %s" % self.socket_path)
+ self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+ self.socket.bind(self.socket_path)
+ self.frontend = frontend
+ self._listener_id = None
+ self._active_conn = None
+ self._watch_ids = []
+
+ def _get_debconf_env(self):
+ """Returns a dictonary of the environment variables required by
+ the debconf frontend.
+ """
+ env = copy.copy(os.environ)
+ env["DEBCONF_DB_REPLACE"] = "configdb"
+ env["DEBCONF_DB_OVERRIDE"] = "Pipe{infd:none outfd:none}"
+ env["DEBIAN_FRONTEND"] = self.frontend
+ if log.level == logging.DEBUG:
+ env["DEBCONF_DEBUG"] = "."
+ return env
+
+ def start(self):
+ """Start listening on the socket."""
+ logging.debug("debconf.start()")
+ self.socket.listen(1)
+ self._listener_id = GLib.io_add_watch(
+ self.socket, GLib.PRIORITY_DEFAULT_IDLE,
+ GLib.IO_IN, self._accept_connection)
+
+ def stop(self):
+ """Stop listening on the socket."""
+ logging.debug("debconf.stop()")
+ self.socket.close()
+ if self._listener_id is not None:
+ GLib.source_remove(self._listener_id)
+ self._listener_id = None
+ if self.temp_dir:
+ try:
+ os.remove(self.socket_path)
+ os.rmdir(self.temp_dir)
+ except OSError:
+ pass
+
+ def _accept_connection(self, socket, condition):
+ if self._active_conn:
+ log.debug("Delaying connection")
+ return True
+ conn, addr = socket.accept()
+ self._active_conn = conn
+ mask = GLib.IO_IN | GLib.IO_ERR | GLib.IO_HUP | GLib.IO_NVAL
+ self.helper = subprocess.Popen(["debconf-communicate"],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ env=self._get_debconf_env())
+ GLib.io_add_watch(conn, GLib.PRIORITY_HIGH_IDLE,
+ mask, self._copy_conn, self.helper.stdin)
+ GLib.io_add_watch(self.helper.stdout, GLib.PRIORITY_HIGH_IDLE,
+ mask, self._copy_stdout, conn)
+ return True
+
+ def _copy_stdout(self, source, condition, conn):
+ """Callback to copy data from the stdout of debconf-communicate to
+ the passthrough frontend."""
+ logging.debug("_copy_stdout")
+ try:
+ debconf_data = source.readline()
+ if debconf_data:
+ log.debug("From debconf: %s", debconf_data)
+ conn.send(debconf_data)
+ return True
+ except (socket.error, IOError) as error:
+ log.debug(error)
+ # error, stop listening
+ log.debug("Stop reading from stdout")
+ self.helper.stdout.close()
+ self._active_conn.close()
+ self._active_conn = None
+ return False
+
+ def _copy_conn(self, source, condition, stdin):
+ """Callback to copy data from the passthrough frontend to stdin of
+ debconf-communicate."""
+ logging.debug("_copy_conn")
+ try:
+ socket_data = source.recv(1024)
+ if socket_data:
+ log.debug("From socket: %s", socket_data)
+ stdin.write(socket_data)
+ stdin.flush()
+ return True
+ except (socket.error, IOError) as error:
+ log.debug(error)
+ # error, stop listening
+ log.debug("Stop reading from conn")
+ self.helper.stdin.close()
+ return False
+
+
+def _test():
+ """Run the DebconfProxy from the command line for testing purposes.
+
+ You have to execute the following commands before in a separate terminal:
+ $ echo "fset debconf/frontend seen false" | debconf-communicate
+ $ export DEBCONF_PIPE=/tmp/debconf.socket
+ $ dpkg-reconfigure debconf -f passthrough
+ """
+ logging.basicConfig(level=logging.DEBUG)
+ socket_path = "/tmp/debconf.socket"
+ if os.path.exists(socket_path):
+ os.remove(socket_path)
+ proxy = DebconfProxy("gnome", socket_path)
+ proxy.start()
+ loop = GLib.MainLoop()
+ loop.run()
+
+if __name__ == "__main__":
+ _test()
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/enums.py b/aptdaemon/enums.py
new file mode 100644
index 0000000..3642199
--- /dev/null
+++ b/aptdaemon/enums.py
@@ -0,0 +1,718 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""enums - Enumerates for apt daemon dbus messages"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("PKGS_INSTALL", "PKGS_REINSTALL", "PKGS_REMOVE", "PKGS_PURGE",
+ "PKGS_UPGRADE", "PKGS_DOWNGRADE", "PKGS_KEEP",
+ "EXIT_SUCCESS", "EXIT_CANCELLED", "EXIT_FAILED", "EXIT_UNFINISHED",
+ "ERROR_PACKAGE_DOWNLOAD_FAILED", "ERROR_REPO_DOWNLOAD_FAILED",
+ "ERROR_DEP_RESOLUTION_FAILED",
+ "ERROR_KEY_NOT_INSTALLED", "ERROR_KEY_NOT_REMOVED", "ERROR_NO_LOCK",
+ "ERROR_NO_CACHE", "ERROR_NO_PACKAGE", "ERROR_PACKAGE_UPTODATE",
+ "ERROR_PACKAGE_NOT_INSTALLED", "ERROR_PACKAGE_ALREADY_INSTALLED",
+ "ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE", "ERROR_DAEMON_DIED",
+ "ERROR_PACKAGE_MANAGER_FAILED", "ERROR_CACHE_BROKEN",
+ "ERROR_PACKAGE_UNAUTHENTICATED", "ERROR_INCOMPLETE_INSTALL",
+ "ERROR_UNREADABLE_PACKAGE_FILE", "ERROR_INVALID_PACKAGE_FILE",
+ "ERROR_SYSTEM_ALREADY_UPTODATE", "ERROR_NOT_SUPPORTED",
+ "ERROR_LICENSE_KEY_INSTALL_FAILED",
+ "ERROR_LICENSE_KEY_DOWNLOAD_FAILED",
+ "ERROR_AUTH_FAILED", "ERROR_NOT_AUTHORIZED",
+ "ERROR_UNKNOWN",
+ "STATUS_SETTING_UP", "STATUS_WAITING", "STATUS_WAITING_MEDIUM",
+ "STATUS_WAITING_CONFIG_FILE_PROMPT", "STATUS_WAITING_LOCK",
+ "STATUS_RUNNING", "STATUS_LOADING_CACHE", "STATUS_DOWNLOADING",
+ "STATUS_COMMITTING", "STATUS_CLEANING_UP", "STATUS_RESOLVING_DEP",
+ "STATUS_FINISHED", "STATUS_CANCELLING", "STATUS_QUERY",
+ "STATUS_DOWNLOADING_REPO", "STATUS_AUTHENTICATING",
+ "ROLE_UNSET", "ROLE_INSTALL_PACKAGES", "ROLE_INSTALL_FILE",
+ "ROLE_UPGRADE_PACKAGES", "ROLE_UPGRADE_SYSTEM", "ROLE_UPDATE_CACHE",
+ "ROLE_REMOVE_PACKAGES", "ROLE_COMMIT_PACKAGES",
+ "ROLE_ADD_VENDOR_KEY_FILE", "ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER",
+ "ROLE_REMOVE_VENDOR_KEY", "ROLE_FIX_INCOMPLETE_INSTALL",
+ "ROLE_FIX_BROKEN_DEPENDS", "ROLE_ADD_REPOSITORY",
+ "ROLE_ENABLE_DISTRO_COMP", "ROLE_CLEAN", "ROLE_RECONFIGURE",
+ "ROLE_PK_QUERY", "ROLE_ADD_LICENSE_KEY",
+ "DOWNLOAD_DONE", "DOWNLOAD_AUTH_ERROR", "DOWNLOAD_ERROR",
+ "DOWNLOAD_FETCHING", "DOWNLOAD_IDLE", "DOWNLOAD_NETWORK_ERROR",
+ "PKG_INSTALLING", "PKG_CONFIGURING", "PKG_REMOVING",
+ "PKG_PURGING", "PKG_UPGRADING", "PKG_RUNNING_TRIGGER",
+ "PKG_DISAPPEARING", "PKG_PREPARING_REMOVE", "PKG_PREPARING_INSTALL",
+ "PKG_PREPARING_PURGE", "PKG_PREPARING_PURGE", "PKG_INSTALLED",
+ "PKG_REMOVED", "PKG_PURGED", "PKG_UNPACKING", "PKG_UNKNOWN",
+ "get_status_icon_name_from_enum", "get_role_icon_name_from_enum",
+ "get_status_animation_name_from_enum",
+ "get_package_status_from_enum",
+ "get_role_localised_past_from_enum", "get_exit_string_from_enum",
+ "get_role_localised_present_from_enum", "get_role_error_from_enum",
+ "get_error_description_from_enum", "get_error_string_from_enum",
+ "get_status_string_from_enum", "get_download_status_from_enum")
+
+import gettext
+
+
+def _(msg):
+ return gettext.dgettext("aptdaemon", msg)
+
+# PACKAGE GROUP INDEXES
+#: Index of the list of to be installed packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_INSTALL = 0
+#: Index of the list of to be re-installed packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_REINSTALL = 1
+#: Index of the list of to be removed packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_REMOVE = 2
+#: Index of the list of to be purged packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_PURGE = 3
+#: Index of the list of to be upgraded packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_UPGRADE = 4
+#: Index of the list of to be downgraded packages in the :attr:`dependencies`
+#: and :attr:`packages` property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_DOWNGRADE = 5
+#: Index of the list of to be keept packages in the :attr:`dependencies`
+#: property of :class:`~aptdaemon.client.AptTransaction`.
+PKGS_KEEP = 6
+
+# FINISH STATES
+#: The transaction was successful.
+EXIT_SUCCESS = "exit-success"
+#: The transaction has been cancelled by the user.
+EXIT_CANCELLED = "exit-cancelled"
+#: The transaction has failed.
+EXIT_FAILED = "exit-failed"
+#: The transaction failed since a previous one in a chain failed.
+EXIT_PREVIOUS_FAILED = "exit-previous-failed"
+#: The transaction is still being queued or processed.
+EXIT_UNFINISHED = "exit-unfinished"
+
+# ERROR CODES
+#: Failed to download package files which should be installed.
+ERROR_PACKAGE_DOWNLOAD_FAILED = "error-package-download-failed"
+#: Failed to download package information (index files) from the repositories
+ERROR_REPO_DOWNLOAD_FAILED = "error-repo-download-failed"
+#: Failed to satisfy the dependencies or conflicts of packages.
+ERROR_DEP_RESOLUTION_FAILED = "error-dep-resolution-failed"
+#: The requested vendor key is not installed.
+ERROR_KEY_NOT_INSTALLED = "error-key-not-installed"
+#: The requested vendor could not be removed.
+ERROR_KEY_NOT_REMOVED = "error-key-not-removed"
+#: The package management system could not be locked. Eventually another
+#: package manager is running.
+ERROR_NO_LOCK = "error-no-lock"
+#: The package cache could not be opened. This indicates a serious problem
+#: on the system.
+ERROR_NO_CACHE = "error-no-cache"
+#: The requested package is not available.
+ERROR_NO_PACKAGE = "error-no-package"
+#: The package could not be upgraded since it is already up-to-date.
+ERROR_PACKAGE_UPTODATE = "error-package-uptodate"
+#: The package which was requested to install is already installed.
+ERROR_PACKAGE_ALREADY_INSTALLED = "error-package-already-installed"
+#: The package could not be removed since it is not installed.
+ERROR_PACKAGE_NOT_INSTALLED = "error-package-not-installed"
+#: It is not allowed to remove an essential system package.
+ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE = "error-not-remove-essential"
+#: The aptdaemon crashed or could not be connected to on the D-Bus.
+ERROR_DAEMON_DIED = "error-daemon-died"
+#: On of the maintainer scripts during the dpkg call failed.
+ERROR_PACKAGE_MANAGER_FAILED = "error-package-manager-failed"
+#: There are packages with broken dependencies installed on the system.
+#: This has to fixed before performing another transaction.
+ERROR_CACHE_BROKEN = "error-cache-broken"
+#: It is not allowed to install an unauthenticated packages. Packages are
+#: authenticated by installing the vendor key.
+ERROR_PACKAGE_UNAUTHENTICATED = "error-package-unauthenticated"
+#: A previous installation has been aborted and is now incomplete.
+#: Should be fixed by `dpkg --configure -a` or the :func:`FixIncomplete()`
+#: transaction.
+ERROR_INCOMPLETE_INSTALL = "error-incomplete-install"
+#: Failed to open and read the package file
+ERROR_UNREADABLE_PACKAGE_FILE = "error-unreadable-package-file"
+#: The package file violates the Debian/Ubuntu policy
+ERROR_INVALID_PACKAGE_FILE = "error-invalid-package-file"
+#: The requested feature is not supported yet (mainly used by PackageKit
+ERROR_NOT_SUPPORTED = "error-not-supported"
+#: The license key download failed
+ERROR_LICENSE_KEY_DOWNLOAD_FAILED = "error-license-key-download-failed"
+#: The license key is invalid
+ERROR_LICENSE_KEY_INSTALL_FAILED = "error-license-key-install-failed"
+#: The system is already up-to-date and don't needs any upgrades
+ERROR_SYSTEM_ALREADY_UPTODATE = "error-system-already-uptodate"
+#: The user isn't allowed to perform the action at all
+ERROR_NOT_AUTHORIZED = "error-not-authorized"
+#: The user could not be authorized (e.g. wrong password)
+ERROR_AUTH_FAILED = "error-auth-failed"
+#: An unknown error occured. In most cases these are programming ones.
+ERROR_UNKNOWN = "error-unknown"
+
+# TRANSACTION STATES
+#: The transaction was created, but hasn't been queued.
+STATUS_SETTING_UP = "status-setting-up"
+#: The transaction performs a query
+STATUS_QUERY = "status-query"
+#: The transaction is waiting in the queue.
+STATUS_WAITING = "status-waiting"
+#: The transaction is paused and waits until a required medium is inserted.
+#: See :func:`ProvideMedium()`.
+STATUS_WAITING_MEDIUM = "status-waiting-medium"
+#: The transaction is paused and waits for the user to resolve a configuration
+#: file conflict. See :func:`ResolveConfigFileConflict()`.
+STATUS_WAITING_CONFIG_FILE_PROMPT = "status-waiting-config-file-prompt"
+#: Wait until the package management system can be locked. Most likely
+#: another package manager is running currently.
+STATUS_WAITING_LOCK = "status-waiting-lock"
+#: The processing of the transaction has started.
+STATUS_RUNNING = "status-running"
+#: The package cache is opened.
+STATUS_LOADING_CACHE = "status-loading-cache"
+#: The information about available packages is downloaded
+STATUS_DOWNLOADING_REPO = "status-downloading-repo"
+#: The required package files to install are getting downloaded.
+STATUS_DOWNLOADING = "status-downloading"
+#: The actual installation/removal takes place.
+STATUS_COMMITTING = "status-committing"
+#: The package management system is cleaned up.
+STATUS_CLEANING_UP = "status-cleaning-up"
+#: The dependecies and conflicts are now getting resolved.
+STATUS_RESOLVING_DEP = "status-resolving-dep"
+#: The transaction has been completed.
+STATUS_FINISHED = "status-finished"
+#: The transaction has been cancelled.
+STATUS_CANCELLING = "status-cancelling"
+#: The transaction waits for authentication
+STATUS_AUTHENTICATING = "status-authenticating"
+
+# PACKAGE STATES
+#: The package gets unpacked
+PKG_UNPACKING = "pkg-unpacking"
+#: The installation of the package gets prepared
+PKG_PREPARING_INSTALL = "pkg-preparing-install"
+#: The package is installed
+PKG_INSTALLED = "pkg-installed"
+#: The package gets installed
+PKG_INSTALLING = "pkg-installing"
+#: The configuration of the package gets prepared
+PKG_PREPARING_CONFIGURE = "pkg-preparing-configure"
+#: The package gets configured
+PKG_CONFIGURING = "pkg-configuring"
+#: The removal of the package gets prepared
+PKG_PREPARING_REMOVE = "pkg-preparing-removal"
+#: The package gets removed
+PKG_REMOVING = "pkg-removing"
+#: The package is removed
+PKG_REMOVED = "pkg-removed"
+#: The purging of the package gets prepared
+PKG_PREPARING_PURGE = "pkg-preparing-purge"
+#: The package gets purged
+PKG_PURGING = "pkg-purging"
+#: The package was completely removed
+PKG_PURGED = "pkg-purged"
+#: The post installation trigger of the package is processed
+PKG_RUNNING_TRIGGER = "pkg-running-trigger"
+#: The package disappered - very rare
+PKG_DISAPPEARING = "pkg-disappearing"
+#: The package gets upgraded
+PKG_UPGRADING = "pkg-upgrading"
+#: Failed to get a current status of the package
+PKG_UNKNOWN = "pkg-unknown"
+
+# TRANSACTION ROLES
+#: The role of the transaction has not been specified yet.
+ROLE_UNSET = "role-unset"
+#: The transaction performs a query compatible to the PackageKit interface
+ROLE_PK_QUERY = "role-pk-query"
+#: The transaction will install one or more packages.
+ROLE_INSTALL_PACKAGES = "role-install-packages"
+#: The transaction will install a local package file.
+ROLE_INSTALL_FILE = "role-install-file"
+#: The transaction will upgrade one or more packages.
+ROLE_UPGRADE_PACKAGES = "role-upgrade-packages"
+#: The transaction will perform a system upgrade.
+ROLE_UPGRADE_SYSTEM = "role-upgrade-system"
+#: The transaction will update the package cache.
+ROLE_UPDATE_CACHE = "role-update-cache"
+#: The transaction will remove one or more packages.
+ROLE_REMOVE_PACKAGES = "role-remove-packages"
+#: The transaction will perform a combined install, remove, upgrade or
+#: downgrade action.
+ROLE_COMMIT_PACKAGES = "role-commit-packages"
+#: The transaction will add a local vendor key file to authenticate packages.
+ROLE_ADD_VENDOR_KEY_FILE = "role-add-vendor-key-file"
+#: The transaction will download vendor key to authenticate packages from
+#: a keyserver.
+ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER = "role-add-vendor-key-from-keyserver"
+#: The transaction will remove a vendor key which was used to authenticate
+#: packages.
+ROLE_REMOVE_VENDOR_KEY = "role-remove-vendor-key"
+#: The transaction will try to finish a previous aborted installation.
+ROLE_FIX_INCOMPLETE_INSTALL = "role-fix-incomplete-install"
+#: The transaction will to resolve broken dependencies of already installed
+#: packages.
+ROLE_FIX_BROKEN_DEPENDS = "role-fix-broken-depends"
+#: The transaction will enable a repository to download software from.
+ROLE_ADD_REPOSITORY = "role-add-repository"
+#: The transaction will enable a component in the distro repositories,
+#: e.g main or universe
+ROLE_ENABLE_DISTRO_COMP = "role-enable-distro-comp"
+#: The transaction will reconfigure the given already installed packages
+ROLE_RECONFIGURE = "role-reconfigure"
+#: The transaction will remove all downloaded package files.
+ROLE_CLEAN = "role-clean"
+#: The transaction will add a license key to the system
+ROLE_ADD_LICENSE_KEY = "role-add-license-key"
+
+# DOWNLOAD STATES
+#: The download has been completed.
+DOWNLOAD_DONE = "download-done"
+#: The file could not be downloaded since the authentication for the repository
+#: failed.
+DOWNLOAD_AUTH_ERROR = "download-auth-error"
+#: There file could not be downloaded, e.g. because it is not available (404).
+DOWNLOAD_ERROR = "download-error"
+#: The file is currently being downloaded.
+DOWNLOAD_FETCHING = "download-fetching"
+#: The download is currently idling.
+DOWNLOAD_IDLE = "download-idle"
+#: The download failed since there seem to be a networking problem.
+DOWNLOAD_NETWORK_ERROR = "download-network-error"
+
+_ICONS_STATUS = {
+ STATUS_CANCELLING: 'aptdaemon-cleanup',
+ STATUS_CLEANING_UP: 'aptdaemon-cleanup',
+ STATUS_RESOLVING_DEP: 'aptdaemon-resolve',
+ STATUS_COMMITTING: 'aptdaemon-working',
+ STATUS_DOWNLOADING: 'aptdaemon-download',
+ STATUS_DOWNLOADING_REPO: 'aptdaemon-download',
+ STATUS_FINISHED: 'aptdaemon-cleanup',
+ STATUS_LOADING_CACHE: 'aptdaemon-update-cache',
+ STATUS_RUNNING: 'aptdaemon-working',
+ STATUS_SETTING_UP: 'aptdaemon-working',
+ STATUS_WAITING: 'aptdaemon-wait',
+ STATUS_WAITING_LOCK: 'aptdaemon-wait',
+ STATUS_WAITING_MEDIUM: 'aptdaemon-wait',
+ STATUS_WAITING_CONFIG_FILE_PROMPT: 'aptdaemon-wait'}
+
+_ICONS_ROLE = {
+ ROLE_INSTALL_FILE: 'aptdaemon-add',
+ ROLE_INSTALL_PACKAGES: 'aptdaemon-add',
+ ROLE_UPDATE_CACHE: 'aptdaemon-update-cache',
+ ROLE_REMOVE_PACKAGES: 'aptdaemon-delete',
+ ROLE_UPGRADE_PACKAGES: 'aptdaemon-upgrade',
+ ROLE_UPGRADE_SYSTEM: 'system-software-update'}
+
+_ANIMATIONS_STATUS = {
+ STATUS_CANCELLING: 'aptdaemon-action-cleaning-up',
+ STATUS_CLEANING_UP: 'aptdaemon-action-cleaning-up',
+ STATUS_RESOLVING_DEP: 'aptdaemon-action-resolving',
+ STATUS_DOWNLOADING: 'aptdaemon-action-downloading',
+ STATUS_DOWNLOADING_REPO: 'aptdaemon-action-downloading',
+ STATUS_LOADING_CACHE: 'aptdaemon-action-updating-cache',
+ STATUS_WAITING: 'aptdaemon-action-waiting',
+ STATUS_WAITING_LOCK: 'aptdaemon-action-waiting',
+ STATUS_WAITING_MEDIUM: 'aptdaemon-action-waiting',
+ STATUS_WAITING_CONFIG_FILE_PROMPT: 'aptdaemon-action-waiting'}
+
+_PAST_ROLE = {
+ ROLE_INSTALL_FILE: _("Installed file"),
+ ROLE_INSTALL_PACKAGES: _("Installed packages"),
+ ROLE_ADD_VENDOR_KEY_FILE: _("Added key from file"),
+ ROLE_UPDATE_CACHE: _("Updated cache"),
+ ROLE_PK_QUERY: _("Search done"),
+ ROLE_REMOVE_VENDOR_KEY: _("Removed trusted key"),
+ ROLE_REMOVE_PACKAGES: _("Removed packages"),
+ ROLE_UPGRADE_PACKAGES: _("Updated packages"),
+ ROLE_UPGRADE_SYSTEM: _("Upgraded system"),
+ ROLE_COMMIT_PACKAGES: _("Applied changes"),
+ ROLE_FIX_INCOMPLETE_INSTALL: _("Repaired incomplete installation"),
+ ROLE_FIX_BROKEN_DEPENDS: _("Repaired broken dependencies"),
+ ROLE_ADD_REPOSITORY: _("Added software source"),
+ ROLE_ENABLE_DISTRO_COMP: _("Enabled component of the distribution"),
+ ROLE_CLEAN: _("Removed downloaded package files"),
+ ROLE_RECONFIGURE: _("Reconfigured installed packages"),
+ ROLE_UNSET: ""}
+
+_STRING_EXIT = {
+ EXIT_SUCCESS: _("Successful"),
+ EXIT_CANCELLED: _("Canceled"),
+ EXIT_FAILED: _("Failed")}
+
+_PRESENT_ROLE = {
+ ROLE_INSTALL_FILE: _("Installing file"),
+ ROLE_INSTALL_PACKAGES: _("Installing packages"),
+ ROLE_ADD_VENDOR_KEY_FILE: _("Adding key from file"),
+ ROLE_UPDATE_CACHE: _("Updating cache"),
+ ROLE_REMOVE_VENDOR_KEY: _("Removing trusted key"),
+ ROLE_REMOVE_PACKAGES: _("Removing packages"),
+ ROLE_UPGRADE_PACKAGES: _("Updating packages"),
+ ROLE_UPGRADE_SYSTEM: _("Upgrading system"),
+ ROLE_COMMIT_PACKAGES: _("Applying changes"),
+ ROLE_FIX_INCOMPLETE_INSTALL: _("Repairing incomplete installation"),
+ ROLE_FIX_BROKEN_DEPENDS: _("Repairing installed software"),
+ ROLE_ADD_REPOSITORY: _("Adding software source"),
+ ROLE_ENABLE_DISTRO_COMP: _("Enabling component of the distribution"),
+ ROLE_CLEAN: _("Removing downloaded package files"),
+ ROLE_RECONFIGURE: _("Reconfiguring installed packages"),
+ ROLE_PK_QUERY: _("Searching"),
+ ROLE_UNSET: ""}
+
+_ERROR_ROLE = {
+ ROLE_INSTALL_FILE: _("Installation of the package file failed"),
+ ROLE_INSTALL_PACKAGES: _("Installation of software failed"),
+ ROLE_ADD_VENDOR_KEY_FILE: _("Adding the key to the list of trusted "
+ "software vendors failed"),
+ ROLE_UPDATE_CACHE: _("Refreshing the software list failed"),
+ ROLE_REMOVE_VENDOR_KEY: _("Removing the vendor from the list of trusted "
+ "ones failed"),
+ ROLE_REMOVE_PACKAGES: _("Removing software failed"),
+ ROLE_UPGRADE_PACKAGES: _("Updating software failed"),
+ ROLE_UPGRADE_SYSTEM: _("Upgrading the system failed"),
+ ROLE_COMMIT_PACKAGES: _("Applying software changes failed"),
+ ROLE_FIX_INCOMPLETE_INSTALL: _("Repairing incomplete installation "
+ "failed"),
+ ROLE_FIX_BROKEN_DEPENDS: _("Repairing broken dependencies failed"),
+ ROLE_ADD_REPOSITORY: _("Adding software source failed"),
+ ROLE_ENABLE_DISTRO_COMP: _("Enabling component of the distribution "
+ "failed"),
+ ROLE_CLEAN: _("Removing downloaded package files failed"),
+ ROLE_RECONFIGURE: _("Removing downloaded package files failed"),
+ ROLE_PK_QUERY: _("Search failed"),
+ ROLE_ADD_LICENSE_KEY: _("Adding license key"),
+ ROLE_UNSET: ""}
+
+_DESCS_ERROR = {
+ ERROR_PACKAGE_DOWNLOAD_FAILED: _("Check your Internet connection."),
+ ERROR_REPO_DOWNLOAD_FAILED: _("Check your Internet connection."),
+ ERROR_CACHE_BROKEN: _("Check if you are using third party "
+ "repositories. If so disable them, since "
+ "they are a common source of problems.\n"
+ "Furthermore run the following command in a "
+ "Terminal: apt-get install -f"),
+ ERROR_KEY_NOT_INSTALLED: _("The selected file may not be a GPG key file "
+ "or it might be corrupt."),
+ ERROR_KEY_NOT_REMOVED: _("The selected key couldn't be removed. "
+ "Check that you provided a valid fingerprint."),
+ ERROR_NO_LOCK: _("Check if you are currently running another "
+ "software management tool, e.g. Synaptic or aptitude. "
+ "Only one tool is allowed to make changes at a time."),
+ ERROR_NO_CACHE: _("This is a serious problem. Try again later. If this "
+ "problem appears again, please report an error to the "
+ "developers."),
+ ERROR_NO_PACKAGE: _("Check the spelling of the package name, and "
+ "that the appropriate repository is enabled."),
+ ERROR_PACKAGE_UPTODATE: _("There isn't any need for an update."),
+ ERROR_PACKAGE_ALREADY_INSTALLED: _("There isn't any need for an "
+ "installation"),
+ ERROR_PACKAGE_NOT_INSTALLED: _("There isn't any need for a removal."),
+ ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE: _("You requested to remove a "
+ "package which is an essential "
+ "part of your system."),
+ ERROR_DAEMON_DIED: _("The connection to the daemon was lost. Most likely "
+ "the background daemon crashed."),
+ ERROR_PACKAGE_MANAGER_FAILED: _("The installation or removal of a "
+ "software package failed."),
+ ERROR_NOT_SUPPORTED: _("The requested feature is not supported."),
+ ERROR_UNKNOWN: _("There seems to be a programming error in aptdaemon, "
+ "the software that allows you to install/remove "
+ "software and to perform other package management "
+ "related tasks."),
+ ERROR_DEP_RESOLUTION_FAILED: _("This error could be caused by required "
+ "additional software packages which are "
+ "missing or not installable. Furthermore "
+ "there could be a conflict between "
+ "software packages which are not allowed "
+ "to be installed at the same time."),
+ ERROR_PACKAGE_UNAUTHENTICATED: _("This requires installing packages "
+ "from unauthenticated sources."),
+ ERROR_INCOMPLETE_INSTALL: _("The installation could have failed because "
+ "of an error in the corresponding software "
+ "package or it was cancelled in an unfriendly "
+ "way. "
+ "You have to repair this before you can "
+ "install or remove any further software."),
+ ERROR_UNREADABLE_PACKAGE_FILE: _("Please copy the file to your local "
+ "computer and check the file "
+ "permissions."),
+ ERROR_INVALID_PACKAGE_FILE: _("The installation of a package which "
+ "violates the quality standards isn't "
+ "allowed. This could cause serious "
+ "problems on your computer. Please contact "
+ "the person or organisation who provided "
+ "this package file and include the details "
+ "beneath."),
+ ERROR_LICENSE_KEY_INSTALL_FAILED: _("The downloaded license key which is "
+ "required to run this piece of "
+ "software is not valid or could not "
+ "be installed correctly.\n"
+ "See the details for more "
+ "information."),
+ ERROR_SYSTEM_ALREADY_UPTODATE: _("All available upgrades have already "
+ "been installed."),
+ ERROR_LICENSE_KEY_DOWNLOAD_FAILED: _("The license key which allows you to "
+ "use this piece of software could "
+ "not be downloaded. Please check "
+ "your network connection."),
+ ERROR_NOT_AUTHORIZED: _("You don't have the required privileges to "
+ "perform this action."),
+ ERROR_AUTH_FAILED: _("You either provided a wrong password or "
+ "cancelled the authorization.\n"
+ "Furthermore there could also be a technical reason "
+ "for this error if you haven't seen a password "
+ "dialog: your desktop environment doesn't provide a "
+ "PolicyKit session agent.")}
+
+_STRINGS_ERROR = {
+ ERROR_PACKAGE_DOWNLOAD_FAILED: _("Failed to download package files"),
+ ERROR_REPO_DOWNLOAD_FAILED: _("Failed to download repository "
+ "information"),
+ ERROR_DEP_RESOLUTION_FAILED: _("Package dependencies cannot be resolved"),
+ ERROR_CACHE_BROKEN: _("The package system is broken"),
+ ERROR_KEY_NOT_INSTALLED: _("Key was not installed"),
+ ERROR_KEY_NOT_REMOVED: _("Key was not removed"),
+ ERROR_NO_LOCK: _("Failed to lock the package manager"),
+ ERROR_NO_CACHE: _("Failed to load the package list"),
+ ERROR_NO_PACKAGE: _("Package does not exist"),
+ ERROR_PACKAGE_UPTODATE: _("Package is already up to date"),
+ ERROR_PACKAGE_ALREADY_INSTALLED: _("Package is already installed"),
+ ERROR_PACKAGE_NOT_INSTALLED: _("Package isn't installed"),
+ ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE: _("Failed to remove essential "
+ "system package"),
+ ERROR_DAEMON_DIED: _("Task cannot be monitored or controlled"),
+ ERROR_PACKAGE_MANAGER_FAILED: _("Package operation failed"),
+ ERROR_PACKAGE_UNAUTHENTICATED: _("Requires installation of untrusted "
+ "packages"),
+ ERROR_INCOMPLETE_INSTALL: _("Previous installation hasn't been completed"),
+ ERROR_INVALID_PACKAGE_FILE: _("The package is of bad quality"),
+ ERROR_UNREADABLE_PACKAGE_FILE: _("Package file could not be opened"),
+ ERROR_NOT_SUPPORTED: _("Not supported feature"),
+ ERROR_LICENSE_KEY_DOWNLOAD_FAILED: _("Failed to download the license key"),
+ ERROR_LICENSE_KEY_INSTALL_FAILED: _("Failed to install the license key"),
+ ERROR_SYSTEM_ALREADY_UPTODATE: _("The system is already up to date"),
+ ERROR_AUTH_FAILED: _("You could not be authorized"),
+ ERROR_NOT_AUTHORIZED: _("You are not allowed to perform this action"),
+ ERROR_UNKNOWN: _("An unhandlable error occured")}
+
+_STRINGS_STATUS = {
+ STATUS_SETTING_UP: _("Waiting for service to start"),
+ STATUS_QUERY: _("Searching"),
+ STATUS_WAITING: _("Waiting"),
+ STATUS_WAITING_MEDIUM: _("Waiting for required medium"),
+ STATUS_WAITING_LOCK: _("Waiting for other software managers to quit"),
+ STATUS_WAITING_CONFIG_FILE_PROMPT: _("Waiting for configuration file "
+ "prompt"),
+ STATUS_RUNNING: _("Running task"),
+ STATUS_DOWNLOADING: _("Downloading"),
+ STATUS_DOWNLOADING_REPO: _("Querying software sources"),
+ STATUS_CLEANING_UP: _("Cleaning up"),
+ STATUS_RESOLVING_DEP: _("Resolving dependencies"),
+ STATUS_COMMITTING: _("Applying changes"),
+ STATUS_FINISHED: _("Finished"),
+ STATUS_CANCELLING: _("Cancelling"),
+ STATUS_LOADING_CACHE: _("Loading software list"),
+ STATUS_AUTHENTICATING: _("Waiting for authentication")}
+
+STRINGS_PKG_STATUS = {
+ # TRANSLATORS: %s is the name of a package
+ PKG_INSTALLING: _("Installing %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_CONFIGURING: _("Configuring %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_REMOVING: _("Removing %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PURGING: _("Completely removing %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PURGING: _("Noting disappearance of %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_RUNNING_TRIGGER: _("Running post-installation trigger %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_UPGRADING: _("Upgrading %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_UNPACKING: _("Unpacking %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PREPARING_INSTALL: _("Preparing installation of %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PREPARING_CONFIGURE: _("Preparing configuration of %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PREPARING_REMOVE: _("Preparing removal of %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PREPARING_PURGE: _("Preparing complete removal of %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_INSTALLED: _("Installed %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_PURGED: _("Completely removed %s"),
+ # TRANSLATORS: %s is the name of a package
+ PKG_REMOVED: _("Removed %s")}
+
+STRINGS_DOWNLOAD = {
+ DOWNLOAD_DONE: _("Done"),
+ DOWNLOAD_AUTH_ERROR: _("Authentication failed"),
+ DOWNLOAD_ERROR: _("Failed"),
+ DOWNLOAD_FETCHING: _("Fetching"),
+ DOWNLOAD_IDLE: _("Idle"),
+ DOWNLOAD_NETWORK_ERROR: _("Network isn't available")}
+
+
+def get_status_icon_name_from_enum(enum):
+ """Get the icon name for a transaction status.
+
+ :param enum: The transaction status enum, e.g. :data:`STATUS_WAITING`.
+ :returns: The icon name string.
+ """
+ try:
+ return _ICONS_STATUS[enum]
+ except KeyError:
+ return "aptdaemon-working"
+
+
+def get_role_icon_name_from_enum(enum):
+ """Get an icon to represent the role of a transaction.
+
+ :param enum: The transaction role enum, e.g. :data:`ROLE_UPDATE_CACHE`.
+ :returns: The icon name string.
+ """
+ try:
+ return _ICONS_ROLE[enum]
+ except KeyError:
+ return "aptdaemon-working"
+
+
+def get_status_animation_name_from_enum(enum):
+ """Get an animation to represent a transaction status.
+
+ :param enum: The transaction status enum, e.g. :data:`STATUS_WAITING`.
+ :returns: The animation name string.
+ """
+ try:
+ return _ANIMATIONS_STATUS[enum]
+ except KeyError:
+ return None
+
+
+def get_role_localised_past_from_enum(enum):
+ """Get the description of a completed transaction action.
+
+ :param enum: The transaction role enum, e.g. :data:`ROLE_UPDATE_CACHE`.
+ :returns: The description string.
+ """
+ try:
+ return _PAST_ROLE[enum]
+ except KeyError:
+ return None
+
+
+def get_exit_string_from_enum(enum):
+ """Get the description of a transaction exit status.
+
+ :param enum: The transaction exit status enum, e.g. :data:`EXIT_FAILED`.
+ :returns: The description string.
+ """
+ try:
+ return _STRING_EXIT[enum]
+ except:
+ return None
+
+
+def get_role_localised_present_from_enum(enum):
+ """Get the description of a present transaction action.
+
+ :param enum: The transaction role enum, e.g. :data:`ROLE_UPDATE_CACHE`.
+ :returns: The description string.
+ """
+ try:
+ return _PRESENT_ROLE[enum]
+ except KeyError:
+ return None
+
+
+def get_role_error_from_enum(enum):
+ """Get the description of a failed transaction action.
+
+ :param enum: The transaction role enum, e.g. :data:`ROLE_UPDATE_CACHE`.
+ :returns: The description string.
+ """
+ try:
+ return _ERROR_ROLE[enum]
+ except KeyError:
+ return None
+
+
+def get_error_description_from_enum(enum):
+ """Get a long description of an error.
+
+ :param enum: The transaction error enum, e.g. :data:`ERROR_NO_LOCK`.
+ :returns: The description string.
+ """
+ try:
+ return _DESCS_ERROR[enum]
+ except KeyError:
+ return None
+
+
+def get_error_string_from_enum(enum):
+ """Get a short description of an error.
+
+ :param enum: The transaction error enum, e.g. :data:`ERROR_NO_LOCK`.
+ :returns: The description string.
+ """
+ try:
+ return _STRINGS_ERROR[enum]
+ except KeyError:
+ return None
+
+
+def get_status_string_from_enum(enum):
+ """Get the description of a transaction status.
+
+ :param enum: The transaction status enum, e.g. :data:`STATUS_WAITING`.
+ :returns: The description string.
+ """
+ try:
+ return _STRINGS_STATUS[enum]
+ except KeyError:
+ return None
+
+
+def get_package_status_from_enum(enum):
+ """Get the description of a package status.
+
+ :param enum: The download status enum, e.g. :data:`PKG_INSTALLING`.
+ :returns: The description string.
+ """
+ try:
+ return STRINGS_PKG_STATUS[enum]
+ except KeyError:
+ return _("Processing %s")
+
+
+def get_download_status_from_enum(enum):
+ """Get the description of a download status.
+
+ :param enum: The download status enum, e.g. :data:`DOWNLOAD_DONE`.
+ :returns: The description string.
+ """
+ try:
+ return STRINGS_DOWNLOAD[enum]
+ except KeyError:
+ return None
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/errors.py b/aptdaemon/errors.py
new file mode 100644
index 0000000..cd98d6e
--- /dev/null
+++ b/aptdaemon/errors.py
@@ -0,0 +1,235 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Exception classes"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("AptDaemonError", "ForeignTransaction", "InvalidMetaDataError",
+ "InvalidProxyError", "RepositoryInvalidError",
+ "TransactionAlreadyRunning", "TransactionCancelled",
+ "TransactionAlreadySimulating",
+ "TransactionFailed", "TransactionRoleAlreadySet",
+ "NotAuthorizedError", "convert_dbus_exception",
+ "get_native_exception")
+
+import inspect
+from functools import wraps
+import sys
+
+import dbus
+
+import aptdaemon.enums
+
+PY3K = sys.version_info.major > 2
+
+
+class AptDaemonError(dbus.DBusException):
+
+ """Internal error of the aptdaemon"""
+
+ _dbus_error_name = "org.debian.apt"
+
+ def __init__(self, message=""):
+ message = _convert_unicode(message)
+ dbus.DBusException.__init__(self, message)
+ self._message = message
+
+ def get_dbus_message(self):
+ """Overwrite the DBusException method, since it calls
+ Exception.__str__() internally which doesn't support unicode or
+ or non-ascii encodings."""
+ if PY3K:
+ return dbus.DBusException.get_dbus_message(self)
+ else:
+ return self._message.encode("UTF-8")
+
+
+class TransactionRoleAlreadySet(AptDaemonError):
+
+ """Error if a transaction has already been configured."""
+
+ _dbus_error_name = "org.debian.apt.TransactionRoleAlreadySet"
+
+
+class TransactionAlreadyRunning(AptDaemonError):
+
+ """Error if a transaction has already been configured."""
+
+ _dbus_error_name = "org.debian.apt.TransactionAlreadyRunning"
+
+
+class TransactionAlreadySimulating(AptDaemonError):
+
+ """Error if a transaction should be simulated but a simulation is
+ already processed.
+ """
+
+ _dbus_error_name = "org.debian.apt.TransactionAlreadySimulating"
+
+
+class ForeignTransaction(AptDaemonError):
+
+ """Error if a transaction was initialized by a different user."""
+
+ _dbus_error_name = "org.debian.apt.TransactionAlreadyRunning"
+
+
+class TransactionFailed(AptDaemonError):
+
+ """Internal error if a transaction could not be processed successfully."""
+
+ _dbus_error_name = "org.debian.apt.TransactionFailed"
+
+ def __init__(self, code, details="", *args):
+ if not args:
+ # Avoid string replacements if not used
+ details = details.replace("%", "%%")
+ args = tuple([_convert_unicode(arg) for arg in args])
+ details = _convert_unicode(details)
+ self.code = code
+ self.details = details
+ self.details_args = args
+ AptDaemonError.__init__(self, "%s: %s" % (code, details % args))
+
+ def __unicode__(self):
+ return "Transaction failed: %s\n%s" % \
+ (aptdaemon.enums.get_error_string_from_enum(self.code),
+ self.details)
+
+ def __str__(self):
+ if PY3K:
+ return self.__unicode__()
+ else:
+ return self.__unicode__().encode("utf-8")
+
+
+class InvalidMetaDataError(AptDaemonError):
+
+ """Invalid meta data given"""
+
+ _dbus_error_name = "org.debian.apt.InvalidMetaData"
+
+
+class InvalidProxyError(AptDaemonError):
+
+ """Invalid proxy given"""
+
+ _dbus_error_name = "org.debian.apt.InvalidProxy"
+
+ def __init__(self, proxy):
+ AptDaemonError.__init__(self, "InvalidProxyError: %s" % proxy)
+
+
+class TransactionCancelled(AptDaemonError):
+
+ """Internal error if a transaction was cancelled."""
+
+ _dbus_error_name = "org.debian.apt.TransactionCancelled"
+
+
+class RepositoryInvalidError(AptDaemonError):
+
+ """The added repository is invalid"""
+
+ _dbus_error_name = "org.debian.apt.RepositoryInvalid"
+
+
+class PolicyKitError(dbus.DBusException):
+ pass
+
+
+class NotAuthorizedError(PolicyKitError):
+
+ _dbus_error_name = "org.freedesktop.PolicyKit.Error.NotAuthorized"
+
+ def __init__(self, subject, action_id):
+ dbus.DBusException.__init__(self, "%s: %s" % (subject, action_id))
+ self.action_id = action_id
+ self.subject = subject
+
+
+class AuthorizationFailed(NotAuthorizedError):
+
+ _dbus_error_name = "org.freedesktop.PolicyKit.Error.Failed"
+
+
+def convert_dbus_exception(func):
+ """A decorator which maps a raised DBbus exception to a native one.
+
+ This decorator requires introspection to the decorated function. So it
+ cannot be used on any already decorated method.
+ """
+ argnames, varargs, kwargs, defaults = inspect.getfullargspec(func)[:4]
+
+ @wraps(func)
+ def _convert_dbus_exception(*args, **kwargs):
+ try:
+ error_handler = kwargs["error_handler"]
+ except KeyError:
+ _args = list(args)
+ try:
+ index = argnames.index("error_handler")
+ error_handler = _args[index]
+ except (IndexError, ValueError):
+ pass
+ else:
+ _args[index] = lambda err: error_handler(
+ get_native_exception(err))
+ args = tuple(_args)
+ else:
+ kwargs["error_handler"] = lambda err: error_handler(
+ get_native_exception(err))
+ try:
+ return func(*args, **kwargs)
+ except dbus.exceptions.DBusException as error:
+ raise get_native_exception(error)
+ return _convert_dbus_exception
+
+
+def get_native_exception(error):
+ """Map a DBus exception to a native one. This allows to make use of
+ try/except on the client side without having to check for the error name.
+ """
+ if not isinstance(error, dbus.DBusException):
+ return error
+ dbus_name = error.get_dbus_name()
+ dbus_msg = error.get_dbus_message()
+ if dbus_name == TransactionFailed._dbus_error_name:
+ return TransactionFailed(*dbus_msg.split(":", 1))
+ elif dbus_name == AuthorizationFailed._dbus_error_name:
+ return AuthorizationFailed(*dbus_msg.split(":", 1))
+ elif dbus_name == NotAuthorizedError._dbus_error_name:
+ return NotAuthorizedError(*dbus_msg.split(":", 1))
+ for error_cls in [AptDaemonError, TransactionRoleAlreadySet,
+ TransactionAlreadyRunning, ForeignTransaction,
+ InvalidMetaDataError, InvalidProxyError,
+ TransactionCancelled, RepositoryInvalidError]:
+ if dbus_name == error_cls._dbus_error_name:
+ return error_cls(dbus_msg)
+ return error
+
+
+def _convert_unicode(text, encoding="UTF-8"):
+ """Always return an unicode."""
+ if PY3K and not isinstance(text, str):
+ text = str(text, encoding, errors="ignore")
+ elif not PY3K and not isinstance(text, unicode):
+ text = unicode(text, encoding, errors="ignore")
+ return text
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/gtk3widgets.py b/aptdaemon/gtk3widgets.py
new file mode 100644
index 0000000..cf273a2
--- /dev/null
+++ b/aptdaemon/gtk3widgets.py
@@ -0,0 +1,1206 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+This module provides widgets to use aptdaemon in a GTK application.
+"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("AptConfigFileConflictDialog", "AptCancelButton",
+ "AptConfirmDialog",
+ "AptProgressDialog", "AptTerminalExpander", "AptStatusIcon",
+ "AptRoleIcon", "AptStatusAnimation", "AptRoleLabel",
+ "AptStatusLabel", "AptMediumRequiredDialog", "AptMessageDialog",
+ "AptErrorDialog", "AptProgressBar", "DiffView",
+ "AptTerminal"
+ )
+
+import difflib
+import gettext
+import os
+import pty
+import re
+
+import gi
+gi.require_version("Vte", "2.91")
+gi.require_version("Gdk", "3.0")
+gi.require_version("Gtk", "3.0")
+
+import apt_pkg
+from gi.repository import GObject
+from gi.repository import GLib
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
+from gi.repository import Vte
+
+from . import client
+from .enums import *
+from defer import inline_callbacks
+from defer.utils import deferable
+
+_ = lambda msg: gettext.dgettext("aptdaemon", msg)
+
+(COLUMN_ID,
+ COLUMN_PACKAGE) = list(range(2))
+
+
+class AptStatusIcon(Gtk.Image):
+ """
+ Provides a Gtk.Image which shows an icon representing the status of a
+ aptdaemon transaction
+ """
+ def __init__(self, transaction=None, size=Gtk.IconSize.DIALOG):
+ Gtk.Image.__init__(self)
+ # note: icon_size is a property which you can't set with GTK 2, so use
+ # a different name
+ self._icon_size = size
+ self.icon_name = None
+ self._signals = []
+ self.set_alignment(0, 0)
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect to the given transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(transaction.connect("status-changed",
+ self._on_status_changed))
+
+ def set_icon_size(self, size):
+ """Set the icon size to gtk stock icon size value"""
+ self._icon_size = size
+
+ def _on_status_changed(self, transaction, status):
+ """Set the status icon according to the changed status"""
+ icon_name = get_status_icon_name_from_enum(status)
+ if icon_name is None:
+ icon_name = Gtk.STOCK_MISSING_IMAGE
+ if icon_name != self.icon_name:
+ self.set_from_icon_name(icon_name, self._icon_size)
+ self.icon_name = icon_name
+
+
+class AptRoleIcon(AptStatusIcon):
+ """
+ Provides a Gtk.Image which shows an icon representing the role of an
+ aptdaemon transaction
+ """
+ def set_transaction(self, transaction):
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(transaction.connect("role-changed",
+ self._on_role_changed))
+ self._on_role_changed(transaction, transaction.role)
+
+ def _on_role_changed(self, transaction, role_enum):
+ """Show an icon representing the role"""
+ icon_name = get_role_icon_name_from_enum(role_enum)
+ if icon_name is None:
+ icon_name = Gtk.STOCK_MISSING_IMAGE
+ if icon_name != self.icon_name:
+ self.set_from_icon_name(icon_name, self._icon_size)
+ self.icon_name = icon_name
+
+
+class AptStatusAnimation(AptStatusIcon):
+ """
+ Provides a Gtk.Image which shows an animation representing the
+ transaction status
+ """
+ def __init__(self, transaction=None, size=Gtk.IconSize.DIALOG):
+ AptStatusIcon.__init__(self, transaction, size)
+ self.animation = []
+ self.ticker = 0
+ self.frame_counter = 0
+ self.iter = 0
+ name = get_status_animation_name_from_enum(STATUS_WAITING)
+ fallback = get_status_icon_name_from_enum(STATUS_WAITING)
+ self.set_animation(name, fallback)
+
+ def set_animation(self, name, fallback=None, size=None):
+ """Show and start the animation of the given name and size"""
+ if name == self.icon_name:
+ return
+ if size is not None:
+ self._icon_size = size
+ self.stop_animation()
+ animation = []
+ (width, height) = Gtk.icon_size_lookup(self._icon_size)
+ theme = Gtk.IconTheme.get_default()
+ if name is not None and theme.has_icon(name):
+ pixbuf = theme.load_icon(name, width, 0)
+ rows = pixbuf.get_height() / height
+ cols = pixbuf.get_width() / width
+ for r in range(rows):
+ for c in range(cols):
+ animation.append(pixbuf.subpixbuf(c * width, r * height,
+ width, height))
+ if len(animation) > 0:
+ self.animation = animation
+ self.iter = 0
+ self.set_from_pixbuf(self.animation[0])
+ self.start_animation()
+ else:
+ self.set_from_pixbuf(pixbuf)
+ self.icon_name = name
+ elif fallback is not None and theme.has_icon(fallback):
+ self.set_from_icon_name(fallback, self._icon_size)
+ self.icon_name = fallback
+ else:
+ self.set_from_icon_name(Gtk.STOCK_MISSING_IMAGE)
+
+ def start_animation(self):
+ """Start the animation"""
+ if self.ticker == 0:
+ self.ticker = GLib.timeout_add(200, self._advance)
+
+ def stop_animation(self):
+ """Stop the animation"""
+ if self.ticker != 0:
+ GLib.source_remove(self.ticker)
+ self.ticker = 0
+
+ def _advance(self):
+ """
+ Show the next frame of the animation and stop the animation if the
+ widget is no longer visible
+ """
+ if self.get_property("visible") is False:
+ self.ticker = 0
+ return False
+ self.iter = self.iter + 1
+ if self.iter >= len(self.animation):
+ self.iter = 0
+ self.set_from_pixbuf(self.animation[self.iter])
+ return True
+
+ def _on_status_changed(self, transaction, status):
+ """
+ Set the animation according to the changed status
+ """
+ name = get_status_animation_name_from_enum(status)
+ fallback = get_status_icon_name_from_enum(status)
+ self.set_animation(name, fallback)
+
+
+class AptRoleLabel(Gtk.Label):
+ """
+ Status label for the running aptdaemon transaction
+ """
+ def __init__(self, transaction=None):
+ GtkLabel.__init__(self)
+ self.set_alignment(0, 0)
+ self.set_ellipsize(Pango.EllipsizeMode.END)
+ self.set_max_width_chars(15)
+ self._signals = []
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the status label to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._on_role_changed(transaction, transaction.role)
+ self._signals.append(transaction.connect("role-changed",
+ self._on_role_changed))
+
+ def _on_role_changed(self, transaction, role):
+ """Set the role text."""
+ self.set_markup(get_role_localised_present_from_enum(role))
+
+
+class AptStatusLabel(Gtk.Label):
+ """
+ Status label for the running aptdaemon transaction
+ """
+ def __init__(self, transaction=None):
+ Gtk.Label.__init__(self)
+ self.set_alignment(0, 0)
+ self.set_ellipsize(Pango.EllipsizeMode.END)
+ self.set_max_width_chars(15)
+ self._signals = []
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the status label to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(
+ transaction.connect("status-changed", self._on_status_changed))
+ self._signals.append(
+ transaction.connect("status-details-changed",
+ self._on_status_details_changed))
+
+ def _on_status_changed(self, transaction, status):
+ """Set the status text according to the changed status"""
+ self.set_markup(get_status_string_from_enum(status))
+
+ def _on_status_details_changed(self, transaction, text):
+ """Set the status text to the one reported by apt"""
+ self.set_markup(text)
+
+
+class AptProgressBar(Gtk.ProgressBar):
+ """
+ Provides a Gtk.Progress which represents the progress of an aptdaemon
+ transactions
+ """
+ def __init__(self, transaction=None):
+ Gtk.ProgressBar.__init__(self)
+ self.set_ellipsize(Pango.EllipsizeMode.END)
+ self.set_text(" ")
+ self.set_pulse_step(0.05)
+ self._signals = []
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the progress bar to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(
+ transaction.connect("finished", self._on_finished))
+ self._signals.append(
+ transaction.connect("progress-changed", self._on_progress_changed))
+ self._signals.append(transaction.connect("progress-details-changed",
+ self._on_progress_details))
+
+ def _on_progress_changed(self, transaction, progress):
+ """
+ Update the progress according to the latest progress information
+ """
+ if progress > 100:
+ self.pulse()
+ else:
+ self.set_fraction(progress / 100.0)
+
+ def _on_progress_details(self, transaction, items_done, items_total,
+ bytes_done, bytes_total, speed, eta):
+ """
+ Update the progress bar text according to the latest progress details
+ """
+ if items_total == 0 and bytes_total == 0:
+ self.set_text(" ")
+ return
+ if speed != 0:
+ self.set_text(_("Downloaded %sB of %sB at %sB/s") %
+ (client.get_size_string(bytes_done),
+ client.get_size_string(bytes_total),
+ client.get_size_string(speed)))
+ else:
+ self.set_text(_("Downloaded %sB of %sB") %
+ (client.get_size_string(bytes_done),
+ client.get_size_string(bytes_total)))
+
+ def _on_finished(self, transaction, exit):
+ """Set the progress to 100% when the transaction is complete"""
+ self.set_fraction(1)
+
+
+class AptDetailsExpander(Gtk.Expander):
+
+ def __init__(self, transaction=None, terminal=True):
+ Gtk.Expander.__init__(self, label=_("Details"))
+ self.show_terminal = terminal
+ self._signals = []
+ self.set_sensitive(False)
+ self.set_expanded(False)
+ if self.show_terminal:
+ self.terminal = AptTerminal()
+ else:
+ self.terminal = None
+ self.download_view = AptDownloadsView()
+ self.download_scrolled = Gtk.ScrolledWindow()
+ self.download_scrolled.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ self.download_scrolled.set_policy(Gtk.PolicyType.NEVER,
+ Gtk.PolicyType.AUTOMATIC)
+ self.download_scrolled.add(self.download_view)
+ self.download_scrolled.set_min_content_height(200)
+ hbox = Gtk.HBox()
+ hbox.pack_start(self.download_scrolled, True, True, 0)
+ if self.terminal:
+ hbox.pack_start(self.terminal, True, True, 0)
+ self.add(hbox)
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the status label to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals.append(
+ transaction.connect("status-changed", self._on_status_changed))
+ self._signals.append(
+ transaction.connect("terminal-attached-changed",
+ self._on_terminal_attached_changed))
+ if self.terminal:
+ self.terminal.set_transaction(transaction)
+ self.download_view.set_transaction(transaction)
+
+ def _on_status_changed(self, trans, status):
+ if status in (STATUS_DOWNLOADING, STATUS_DOWNLOADING_REPO):
+ self.set_sensitive(True)
+ self.download_scrolled.show()
+ if self.terminal:
+ self.terminal.hide()
+ elif status == STATUS_COMMITTING:
+ self.download_scrolled.hide()
+ if self.terminal:
+ self.terminal.show()
+ self.set_sensitive(True)
+ else:
+ self.set_expanded(False)
+ self.set_sensitive(False)
+ else:
+ self.download_scrolled.hide()
+ if self.terminal:
+ self.terminal.hide()
+ self.set_sensitive(False)
+ self.set_expanded(False)
+
+ def _on_terminal_attached_changed(self, transaction, attached):
+ """Connect the terminal to the pty device"""
+ if attached and self.terminal:
+ self.set_sensitive(True)
+
+
+class AptTerminal(Vte.Terminal):
+
+ def __init__(self, transaction=None):
+ Vte.Terminal.__init__(self)
+ self._signals = []
+ self._master, self._slave = pty.openpty()
+ self._ttyname = os.ttyname(self._slave)
+ self.set_size(80, 24)
+ self.set_vexpand(True)
+ self.set_pty(Vte.Pty.new_foreign_sync(self._master))
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the status label to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals.append(
+ transaction.connect("terminal-attached-changed",
+ self._on_terminal_attached_changed))
+ self._transaction = transaction
+ self._transaction.set_terminal(self._ttyname)
+
+ def _on_terminal_attached_changed(self, transaction, attached):
+ """Show the terminal"""
+ self.set_sensitive(attached)
+
+
+class AptCancelButton(Gtk.Button):
+ """
+ Provides a Gtk.Button which allows to cancel a running aptdaemon
+ transaction
+ """
+ def __init__(self, transaction=None):
+ Gtk.Button.__init__(self)
+ self.set_use_stock(True)
+ self.set_label(Gtk.STOCK_CANCEL)
+ self.set_sensitive(True)
+ self._signals = []
+ if transaction is not None:
+ self.set_transaction(transaction)
+
+ def set_transaction(self, transaction):
+ """Connect the status label to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(
+ transaction.connect("finished", self._on_finished))
+ self._signals.append(
+ transaction.connect("cancellable-changed",
+ self._on_cancellable_changed))
+ self.connect("clicked", self._on_clicked, transaction)
+
+ def _on_cancellable_changed(self, transaction, cancellable):
+ """
+ Enable the button if cancel is allowed and disable it in the other case
+ """
+ self.set_sensitive(cancellable)
+
+ def _on_finished(self, transaction, status):
+ self.set_sensitive(False)
+
+ def _on_clicked(self, button, transaction):
+ transaction.cancel()
+ self.set_sensitive(False)
+
+
+class AptDownloadsView(Gtk.TreeView):
+
+ """A Gtk.TreeView which displays the progress and status of each dowload
+ of a transaction.
+ """
+
+ COL_TEXT, COL_PROGRESS, COL_URI = list(range(3))
+
+ def __init__(self, transaction=None):
+ Gtk.TreeView.__init__(self)
+ model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_INT,
+ GObject.TYPE_STRING)
+ self.set_model(model)
+ self.props.headers_visible = False
+ self.set_rules_hint(True)
+ self._download_map = {}
+ self._signals = []
+ if transaction is not None:
+ self.set_transaction(transaction)
+ cell_uri = Gtk.CellRendererText()
+ cell_uri.props.ellipsize = Pango.EllipsizeMode.END
+ column_download = Gtk.TreeViewColumn(_("File"))
+ column_download.pack_start(cell_uri, True)
+ column_download.add_attribute(cell_uri, "markup", self.COL_TEXT)
+ cell_progress = Gtk.CellRendererProgress()
+ # TRANSLATORS: header of the progress download column
+ column_progress = Gtk.TreeViewColumn(_("%"))
+ column_progress.pack_start(cell_progress, True)
+ column_progress.set_cell_data_func(cell_progress, self._data_progress,
+ None)
+ self.append_column(column_progress)
+ self.append_column(column_download)
+ self.set_tooltip_column(self.COL_URI)
+
+ def set_transaction(self, transaction):
+ """Connect the download view to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(transaction.connect("progress-download-changed",
+ self._on_download_changed))
+
+ def _on_download_changed(self, transaction, uri, status, desc, full_size,
+ downloaded, message):
+ """Callback for a changed download progress."""
+ try:
+ progress = int(downloaded * 100 / full_size)
+ except ZeroDivisionError:
+ progress = -1
+ if status == DOWNLOAD_DONE:
+ progress = 100
+ if progress > 100:
+ progress = 100
+ text = desc[:]
+ text += "\n<small>"
+ # TRANSLATORS: %s is the full size in Bytes, e.g. 198M
+ if status == DOWNLOAD_FETCHING:
+ text += (_("Downloaded %sB of %sB") %
+ (client.get_size_string(downloaded),
+ client.get_size_string(full_size)))
+ elif status == DOWNLOAD_DONE:
+ if full_size != 0:
+ text += (_("Downloaded %sB") %
+ client.get_size_string(full_size))
+ else:
+ text += _("Downloaded")
+ else:
+ text += get_download_status_from_enum(status)
+ text += "</small>"
+ model = self.get_model()
+ # LP: #1266844 - we don't know how this can happy, model
+ # is never unset. but it does happen
+ if not model:
+ return
+ try:
+ iter = self._download_map[uri]
+ except KeyError:
+ # we we haven't seen the uri yet, add it now
+ iter = model.append((text, progress, uri))
+ self._download_map[uri] = iter
+ # and update the adj if needed
+ adj = self.get_vadjustment()
+ # this may be None (LP: #1024590)
+ if adj:
+ is_scrolled_down = (
+ adj.get_value() + adj.get_page_size() == adj.get_upper())
+ if is_scrolled_down:
+ # If the treeview was scrolled to the end, do this again
+ # after appending a new item
+ self.scroll_to_cell(
+ model.get_path(iter), None, False, False, False)
+ else:
+ model.set_value(iter, self.COL_TEXT, text)
+ model.set_value(iter, self.COL_PROGRESS, progress)
+
+ def _data_progress(self, column, cell, model, iter, data):
+ progress = model.get_value(iter, self.COL_PROGRESS)
+ if progress == -1:
+ cell.props.pulse = progress
+ else:
+ cell.props.value = progress
+
+
+class AptProgressDialog(Gtk.Dialog):
+ """
+ Complete progress dialog for long taking aptdaemon transactions, which
+ features a progress bar, cancel button, status icon and label
+ """
+
+ __gsignals__ = {"finished": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE, ())}
+
+ def __init__(self, transaction=None, parent=None, terminal=True,
+ debconf=True):
+ Gtk.Dialog.__init__(self, parent=parent)
+ self._expanded_size = None
+ self.debconf = debconf
+ # Setup the dialog
+ self.set_border_width(6)
+ self.set_resizable(False)
+ self.get_content_area().set_spacing(6)
+ # Setup the cancel button
+ self.button_cancel = AptCancelButton(transaction)
+ self.get_action_area().pack_start(self.button_cancel, False, False, 0)
+ # Setup the status icon, label and progressbar
+ hbox = Gtk.HBox()
+ hbox.set_spacing(12)
+ hbox.set_border_width(6)
+ self.icon = AptRoleIcon()
+ hbox.pack_start(self.icon, False, True, 0)
+ vbox = Gtk.VBox()
+ vbox.set_spacing(12)
+ self.label_role = Gtk.Label()
+ self.label_role.set_alignment(0, 0)
+ vbox.pack_start(self.label_role, False, True, 0)
+ vbox_progress = Gtk.VBox()
+ vbox_progress.set_spacing(6)
+ self.progress = AptProgressBar()
+ vbox_progress.pack_start(self.progress, False, True, 0)
+ self.label = AptStatusLabel()
+ self.label._on_status_changed(None, STATUS_WAITING)
+ vbox_progress.pack_start(self.label, False, True, 0)
+ vbox.pack_start(vbox_progress, False, True, 0)
+ hbox.pack_start(vbox, True, True, 0)
+ self.expander = AptDetailsExpander(terminal=terminal)
+ self.expander.connect("notify::expanded", self._on_expanded)
+ vbox.pack_start(self.expander, True, True, 0)
+ self.get_content_area().pack_start(hbox, True, True, 0)
+ self._transaction = None
+ self._signals = []
+ self.set_title("")
+ self.realize()
+ self.progress.set_size_request(350, -1)
+ functions = Gdk.WMFunction.MOVE | Gdk.WMFunction.RESIZE
+ try:
+ self.get_window().set_functions(functions)
+ except TypeError:
+ # workaround for older and broken GTK typelibs
+ self.get_window().set_functions(Gdk.WMFunction(functions))
+ if transaction is not None:
+ self.set_transaction(transaction)
+ # catch ESC and behave as if cancel was clicked
+ self.connect("delete-event", self._on_dialog_delete_event)
+
+ def _on_dialog_delete_event(self, dialog, event):
+ self.button_cancel.clicked()
+ return True
+
+ def _on_expanded(self, expander, param):
+ # Make the dialog resizable if the expander is expanded
+ # try to restore a previous size
+ if not expander.get_expanded():
+ self._expanded_size = (self.expander.terminal.get_visible(),
+ self.get_size())
+ self.set_resizable(False)
+ elif self._expanded_size:
+ self.set_resizable(True)
+ term_visible, (stored_width, stored_height) = self._expanded_size
+ # Check if the stored size was for the download details or
+ # the terminal widget
+ if term_visible != self.expander.terminal.get_visible():
+ # The stored size was for the download details, so we need
+ # get a new size for the terminal widget
+ self._resize_to_show_details()
+ else:
+ self.resize(stored_width, stored_height)
+ else:
+ self.set_resizable(True)
+ self._resize_to_show_details()
+
+ def _resize_to_show_details(self):
+ """Resize the window to show the expanded details.
+
+ Unfortunately the expander only expands to the preferred size of the
+ child widget (e.g showing all 80x24 chars of the Vte terminal) if
+ the window is rendered the first time and the terminal is also visible.
+ If the expander is expanded afterwards the window won't change its
+ size anymore. So we have to do this manually. See LP#840942
+ """
+ win_width, win_height = self.get_size()
+ exp_width = self.expander.get_allocation().width
+ exp_height = self.expander.get_allocation().height
+ if self.expander.terminal.get_visible():
+ terminal_width = self.expander.terminal.get_char_width() * 80
+ terminal_height = self.expander.terminal.get_char_height() * 24
+ self.resize(terminal_width - exp_width + win_width,
+ terminal_height - exp_height + win_height)
+ else:
+ self.resize(win_width + 100, win_height + 200)
+
+ def _on_status_changed(self, trans, status):
+ # Also resize the window if we switch from download details to
+ # the terminal window
+ if (status == STATUS_COMMITTING and
+ self.expander.terminal.get_visible()):
+ self._resize_to_show_details()
+
+ @deferable
+ def run(self, attach=False, close_on_finished=True, show_error=True,
+ reply_handler=None, error_handler=None):
+ """Run the transaction and show the progress in the dialog.
+
+ Keyword arguments:
+ attach -- do not start the transaction but instead only monitor
+ an already running one
+ close_on_finished -- if the dialog should be closed when the
+ transaction is complete
+ show_error -- show a dialog with the error message
+ """
+ return self._run(attach, close_on_finished, show_error,
+ reply_handler, error_handler)
+
+ @inline_callbacks
+ def _run(self, attach, close_on_finished, show_error,
+ reply_handler, error_handler):
+ try:
+ sig = self._transaction.connect("finished", self._on_finished,
+ close_on_finished, show_error)
+ self._signals.append(sig)
+ if attach:
+ yield self._transaction.sync()
+ else:
+ if self.debconf:
+ yield self._transaction.set_debconf_frontend("gnome")
+ yield self._transaction.run()
+ self.show_all()
+ except Exception as error:
+ if error_handler:
+ error_handler(error)
+ else:
+ raise
+ else:
+ if reply_handler:
+ reply_handler()
+
+ def _on_role_changed(self, transaction, role_enum):
+ """Show the role of the transaction in the dialog interface"""
+ role = get_role_localised_present_from_enum(role_enum)
+ self.set_title(role)
+ self.label_role.set_markup("<big><b>%s</b></big>" % role)
+
+ def set_transaction(self, transaction):
+ """Connect the dialog to the given aptdaemon transaction"""
+ for sig in self._signals:
+ GLib.source_remove(sig)
+ self._signals = []
+ self._signals.append(
+ transaction.connect_after("status-changed",
+ self._on_status_changed))
+ self._signals.append(transaction.connect("role-changed",
+ self._on_role_changed))
+ self._signals.append(transaction.connect("medium-required",
+ self._on_medium_required))
+ self._signals.append(transaction.connect("config-file-conflict",
+ self._on_config_file_conflict))
+ self._on_role_changed(transaction, transaction.role)
+ self.progress.set_transaction(transaction)
+ self.icon.set_transaction(transaction)
+ self.label.set_transaction(transaction)
+ self.expander.set_transaction(transaction)
+ self._transaction = transaction
+
+ def _on_medium_required(self, transaction, medium, drive):
+ dialog = AptMediumRequiredDialog(medium, drive, self)
+ res = dialog.run()
+ dialog.hide()
+ if res == Gtk.ResponseType.OK:
+ self._transaction.provide_medium(medium)
+ else:
+ self._transaction.cancel()
+
+ def _on_config_file_conflict(self, transaction, old, new):
+ dialog = AptConfigFileConflictDialog(old, new, self)
+ res = dialog.run()
+ dialog.hide()
+ if res == Gtk.ResponseType.YES:
+ self._transaction.resolve_config_file_conflict(old, "replace")
+ else:
+ self._transaction.resolve_config_file_conflict(old, "keep")
+
+ def _on_finished(self, transaction, status, close, show_error):
+ if close:
+ self.hide()
+ if status == EXIT_FAILED and show_error:
+ err_dia = AptErrorDialog(self._transaction.error, self)
+ err_dia.run()
+ err_dia.hide()
+ self.emit("finished")
+
+
+class _ExpandableDialog(Gtk.Dialog):
+
+ """Dialog with an expander."""
+
+ def __init__(self, parent=None, stock_type=None, expanded_child=None,
+ expander_label=None, title=None, message=None, buttons=None):
+ """Return an _AptDaemonDialog instance.
+
+ Keyword arguments:
+ parent -- set the dialog transient for the given Gtk.Window
+ stock_type -- type of the Dialog, defaults to Gtk.STOCK_DIALOG_QUESTION
+ expanded_child -- Widget which should be expanded
+ expander_label -- label for the expander
+ title -- a news header like title of the dialog
+ message -- the message which should be shown in the dialog
+ buttons -- tuple containing button text/reponse id pairs, defaults
+ to a close button
+ """
+ if not buttons:
+ buttons = (Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+ Gtk.Dialog.__init__(self, parent=parent)
+ self.set_title("")
+ self.add_buttons(*buttons)
+ self.set_resizable(False)
+ self.set_border_width(6)
+ self.get_content_area().set_spacing(12)
+ if not stock_type:
+ stock_type = Gtk.STOCK_DIALOG_QUESTION
+ icon = Gtk.Image.new_from_stock(stock_type, Gtk.IconSize.DIALOG)
+ icon.set_alignment(0, 0)
+ hbox_base = Gtk.HBox()
+ hbox_base.set_spacing(12)
+ hbox_base.set_border_width(6)
+ vbox_left = Gtk.VBox()
+ vbox_left.set_spacing(12)
+ hbox_base.pack_start(icon, False, True, 0)
+ hbox_base.pack_start(vbox_left, True, True, 0)
+ self.label = Gtk.Label()
+ self.label.set_selectable(True)
+ self.label.set_alignment(0, 0)
+ self.label.set_line_wrap(True)
+ vbox_left.pack_start(self.label, False, True, 0)
+ self.get_content_area().pack_start(hbox_base, True, True, 0)
+ # The expander widget
+ self.expander = Gtk.Expander(label=expander_label)
+ self.expander.set_spacing(6)
+ self.expander.set_use_underline(True)
+ self.expander.connect("notify::expanded", self._on_expanded)
+ self._expanded_size = None
+ vbox_left.pack_start(self.expander, True, True, 0)
+ # Set some initial data
+ text = ""
+ if title:
+ text = "<b><big>%s</big></b>" % title
+ if message:
+ if text:
+ text += "\n\n"
+ text += message
+ self.label.set_markup(text)
+ if expanded_child:
+ self.expander.add(expanded_child)
+ else:
+ self.expander.set_sensitive(False)
+
+ def _on_expanded(self, expander, param):
+ if expander.get_expanded():
+ self.set_resizable(True)
+ if self._expanded_size:
+ # Workaround a random crash during progress dialog expanding
+ # It seems that either the gtk.Window.get_size() method
+ # doesn't always return a tuple or that the
+ # gtk.Window.set_size() method doesn't correctly handle *
+ # arguments correctly, see LP#898851
+ try:
+ self.resize(self._expanded_size[0], self._expanded_size[1])
+ except (IndexError, TypeError):
+ pass
+ else:
+ self._expanded_size = self.get_size()
+ self.set_resizable(False)
+
+
+class AptMediumRequiredDialog(Gtk.MessageDialog):
+
+ """Dialog to ask for medium change."""
+
+ def __init__(self, medium, drive, parent=None):
+ Gtk.MessageDialog.__init__(self, parent=parent,
+ type=Gtk.MessageType.INFO)
+ # TRANSLATORS: %s represents the name of a CD or DVD
+ text = _("CD/DVD '%s' is required") % medium
+ # TRANSLATORS: %s is the name of the CD/DVD drive
+ desc = _("Please insert the above CD/DVD into the drive '%s' to "
+ "install software packages from it.") % drive
+ self.set_markup("<big><b>%s</b></big>\n\n%s" % (text, desc))
+ self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+ _("C_ontinue"), Gtk.ResponseType.OK)
+ self.set_default_response(Gtk.ResponseType.OK)
+
+
+class AptConfirmDialog(Gtk.Dialog):
+
+ """Dialog to confirm the changes that would be required by a
+ transaction.
+ """
+
+ def __init__(self, trans, cache=None, parent=None):
+ """Return an AptConfirmDialog instance.
+
+ Keyword arguments:
+ trans -- the transaction of which the dependencies should be shown
+ cache -- an optional apt.cache.Cache() instance to provide more details
+ about packages
+ parent -- set the dialog transient for the given Gtk.Window
+ """
+ Gtk.Dialog.__init__(self, parent=parent)
+ self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
+ self.add_button(_("C_ontinue"), Gtk.ResponseType.OK)
+ self.cache = cache
+ self.trans = trans
+ if isinstance(parent, Gdk.Window):
+ self.realize()
+ self.window.set_transient_for(parent)
+ else:
+ self.set_transient_for(parent)
+ self.set_resizable(True)
+ self.set_border_width(6)
+ self.get_content_area().set_spacing(12)
+ icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_QUESTION,
+ Gtk.IconSize.DIALOG)
+ icon.set_alignment(0, 0)
+ hbox_base = Gtk.HBox()
+ hbox_base.set_spacing(12)
+ hbox_base.set_border_width(6)
+ vbox_left = Gtk.VBox()
+ vbox_left.set_spacing(12)
+ hbox_base.pack_start(icon, False, True, 0)
+ hbox_base.pack_start(vbox_left, True, True, 0)
+ self.label = Gtk.Label()
+ self.label.set_selectable(True)
+ self.label.set_alignment(0, 0)
+ vbox_left.pack_start(self.label, False, True, 0)
+ self.get_content_area().pack_start(hbox_base, True, True, 0)
+ self.treestore = Gtk.TreeStore(GObject.TYPE_STRING)
+ self.treeview = Gtk.TreeView.new_with_model(self.treestore)
+ self.treeview.set_headers_visible(False)
+ self.treeview.set_rules_hint(True)
+ self.column = Gtk.TreeViewColumn()
+ self.treeview.append_column(self.column)
+ cell_icon = Gtk.CellRendererPixbuf()
+ self.column.pack_start(cell_icon, False)
+ self.column.set_cell_data_func(cell_icon, self.render_package_icon,
+ None)
+ cell_desc = Gtk.CellRendererText()
+ self.column.pack_start(cell_desc, True)
+ self.column.set_cell_data_func(cell_desc, self.render_package_desc,
+ None)
+ self.scrolled = Gtk.ScrolledWindow()
+ self.scrolled.set_policy(Gtk.PolicyType.AUTOMATIC,
+ Gtk.PolicyType.AUTOMATIC)
+ self.scrolled.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ self.scrolled.set_min_content_height(200)
+ self.scrolled.add(self.treeview)
+ vbox_left.pack_start(self.scrolled, True, True, 0)
+ self.set_default_response(Gtk.ResponseType.CANCEL)
+
+ def _show_changes(self):
+ """Show a message and the dependencies in the dialog."""
+ self.treestore.clear()
+ for index, msg in enumerate([_("Install"),
+ _("Reinstall"),
+ _("Remove"),
+ _("Purge"),
+ _("Upgrade"),
+ _("Downgrade"),
+ _("Skip upgrade")]):
+ if self.trans.dependencies[index]:
+ piter = self.treestore.append(None, ["<b>%s</b>" % msg])
+ for pkg in self.trans.dependencies[index]:
+ for object in self.map_package(pkg):
+ self.treestore.append(piter, [str(object)])
+ # If there is only one type of changes (e.g. only installs) expand the
+ # tree
+ # FIXME: adapt the title and message accordingly
+ # FIXME: Should we have different modes? Only show dependencies, only
+ # initial packages or both?
+ msg = _("Please take a look at the list of changes below.")
+ if len(self.treestore) == 1:
+ filtered_store = self.treestore.filter_new(
+ Gtk.TreePath.new_first())
+ self.treeview.expand_all()
+ self.treeview.set_model(filtered_store)
+ self.treeview.set_show_expanders(False)
+ if self.trans.dependencies[PKGS_INSTALL]:
+ title = _("Additional software has to be installed")
+ elif self.trans.dependencies[PKGS_REINSTALL]:
+ title = _("Additional software has to be re-installed")
+ elif self.trans.dependencies[PKGS_REMOVE]:
+ title = _("Additional software has to be removed")
+ elif self.trans.dependencies[PKGS_PURGE]:
+ title = _("Additional software has to be purged")
+ elif self.trans.dependencies[PKGS_UPGRADE]:
+ title = _("Additional software has to be upgraded")
+ elif self.trans.dependencies[PKGS_DOWNGRADE]:
+ title = _("Additional software has to be downgraded")
+ elif self.trans.dependencies[PKGS_KEEP]:
+ title = _("Updates will be skipped")
+ if len(filtered_store) < 6:
+ self.set_resizable(False)
+ self.scrolled.set_policy(Gtk.PolicyType.AUTOMATIC,
+ Gtk.PolicyType.NEVER)
+ else:
+ self.treeview.set_size_request(350, 200)
+ else:
+ title = _("Additional changes are required")
+ self.treeview.set_size_request(350, 200)
+ self.treeview.collapse_all()
+ if self.trans.download:
+ msg += "\n"
+ msg += (_("%sB will be downloaded in total.") %
+ client.get_size_string(self.trans.download))
+ if self.trans.space < 0:
+ msg += "\n"
+ msg += (_("%sB of disk space will be freed.") %
+ client.get_size_string(self.trans.space))
+ elif self.trans.space > 0:
+ msg += "\n"
+ msg += (_("%sB more disk space will be used.") %
+ client.get_size_string(self.trans.space))
+ self.label.set_markup("<b><big>%s</big></b>\n\n%s" % (title, msg))
+
+ def map_package(self, pkg):
+ """Map a package to a different object type, e.g. applications
+ and return a list of those.
+
+ By default return the package itself inside a list.
+
+ Override this method if you don't want to store package names
+ in the treeview.
+ """
+ return [pkg]
+
+ def render_package_icon(self, column, cell, model, iter, data):
+ """Data func for the Gtk.CellRendererPixbuf which shows the package.
+
+ Override this method if you want to show custom icons for
+ a package or map it to applications.
+ """
+ path = model.get_path(iter)
+ if path.get_depth() == 0:
+ cell.props.visible = False
+ else:
+ cell.props.visible = True
+ cell.props.icon_name = "applications-other"
+
+ def render_package_desc(self, column, cell, model, iter, data):
+ """Data func for the Gtk.CellRendererText which shows the package.
+
+ Override this method if you want to show more information about
+ a package or map it to applications.
+ """
+ value = model.get_value(iter, 0)
+ if not value:
+ return
+ try:
+ pkg_name, pkg_version = value.split("=")[0:2]
+ except ValueError:
+ pkg_name = value
+ pkg_version = None
+ try:
+ if pkg_version:
+ text = "%s (%s)\n<small>%s</small>" % (
+ pkg_name, pkg_version, self.cache[pkg_name].summary)
+ else:
+ text = "%s\n<small>%s</small>" % (
+ pkg_name, self.cache[pkg_name].summary)
+ except (KeyError, TypeError):
+ if pkg_version:
+ text = "%s (%s)" % (pkg_name, pkg_version)
+ else:
+ text = "%s" % pkg_name
+ cell.set_property("markup", text)
+
+ def run(self):
+ self._show_changes()
+ self.show_all()
+ return Gtk.Dialog.run(self)
+
+
+class AptConfigFileConflictDialog(_ExpandableDialog):
+
+ """Dialog to resolve conflicts between local and shipped
+ configuration files.
+ """
+
+ def __init__(self, from_path, to_path, parent=None):
+ self.from_path = from_path
+ self.to_path = to_path
+ # TRANSLATORS: %s is a file path
+ title = _("Replace your changes in '%s' with a later version of "
+ "the configuration file?") % from_path
+ msg = _("If you don't know why the file is there already, it is "
+ "usually safe to replace it.")
+ scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ scrolled.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ self.diffview = DiffView()
+ self.diffview.set_size_request(-1, 200)
+ scrolled.add(self.diffview)
+ _ExpandableDialog.__init__(self, parent=parent,
+ expander_label=_("_Changes"),
+ expanded_child=scrolled,
+ title=title, message=msg,
+ buttons=(_("_Keep"), Gtk.ResponseType.NO,
+ _("_Replace"),
+ Gtk.ResponseType.YES))
+ self.set_default_response(Gtk.ResponseType.YES)
+
+ def run(self):
+ self.show_all()
+ self.diffview.show_diff(self.from_path, self.to_path)
+ return _ExpandableDialog.run(self)
+
+
+REGEX_RANGE = "^@@ \\-(?P<from_start>[0-9]+)(?:,(?P<from_context>[0-9]+))? " \
+ "\\+(?P<to_start>[0-9]+)(?:,(?P<to_context>[0-9]+))? @@"
+
+
+class DiffView(Gtk.TextView):
+
+ """Shows the difference between two files."""
+
+ ELLIPSIS = "[…]\n"
+
+ def __init__(self):
+ self.textbuffer = Gtk.TextBuffer()
+ Gtk.TextView.__init__(self, buffer=self.textbuffer)
+ self.set_property("editable", False)
+ self.set_cursor_visible(False)
+ tags = self.textbuffer.get_tag_table()
+ # FIXME: How to get better colors?
+ tag_default = Gtk.TextTag.new("default")
+ tag_default.set_properties(font="Mono")
+ tags.add(tag_default)
+ tag_add = Gtk.TextTag.new("add")
+ tag_add.set_properties(font="Mono",
+ background='#8ae234')
+ tags.add(tag_add)
+ tag_remove = Gtk.TextTag.new("remove")
+ tag_remove.set_properties(font="Mono",
+ background='#ef2929')
+ tags.add(tag_remove)
+ tag_num = Gtk.TextTag.new("number")
+ tag_num.set_properties(font="Mono",
+ background='#eee')
+ tags.add(tag_num)
+
+ def show_diff(self, from_path, to_path):
+ """Show the difference between two files."""
+ # FIXME: Use gio
+ try:
+ with open(from_path) as fp:
+ from_lines = fp.readlines()
+ with open(to_path) as fp:
+ to_lines = fp.readlines()
+ except IOError:
+ return
+
+ # helper function to work around current un-introspectability of
+ # varargs methods like insert_with_tags_by_name()
+ def insert_tagged_text(iter, text, tag):
+ # self.textbuffer.insert_with_tags_by_name(iter, text, tag)
+ offset = iter.get_offset()
+ self.textbuffer.insert(iter, text)
+ self.textbuffer.apply_tag_by_name(
+ tag, self.textbuffer.get_iter_at_offset(offset), iter)
+
+ line_number = 0
+ iter = self.textbuffer.get_start_iter()
+ for line in difflib.unified_diff(from_lines, to_lines, lineterm=""):
+ if line.startswith("@@"):
+ match = re.match(REGEX_RANGE, line)
+ if not match:
+ continue
+ line_number = int(match.group("from_start"))
+ if line_number > 1:
+ insert_tagged_text(iter, self.ELLIPSIS, "default")
+ elif line.startswith("---") or line.startswith("+++"):
+ continue
+ elif line.startswith(" "):
+ line_number += 1
+ insert_tagged_text(iter, str(line_number), "number")
+ insert_tagged_text(iter, line, "default")
+ elif line.startswith("-"):
+ line_number += 1
+ insert_tagged_text(iter, str(line_number), "number")
+ insert_tagged_text(iter, line, "remove")
+ elif line.startswith("+"):
+ spaces = " " * len(str(line_number))
+ insert_tagged_text(iter, spaces, "number")
+ insert_tagged_text(iter, line, "add")
+
+
+class _DetailsExpanderMessageDialog(_ExpandableDialog):
+ """
+ Common base class for Apt*Dialog
+ """
+ def __init__(self, text, desc, type, details=None, parent=None):
+ scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ scrolled.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ textview = Gtk.TextView()
+ textview.set_wrap_mode(Gtk.WrapMode.WORD)
+ buffer = textview.get_buffer()
+ scrolled.add(textview)
+ # TRANSLATORS: expander label in the error dialog
+ _ExpandableDialog.__init__(self, parent=parent,
+ expander_label=_("_Details"),
+ expanded_child=scrolled,
+ title=text, message=desc,
+ stock_type=type)
+ self.show_all()
+ if details:
+ buffer.insert_at_cursor(details)
+ else:
+ self.expander.set_visible(False)
+
+
+class AptErrorDialog(_DetailsExpanderMessageDialog):
+ """
+ Dialog for aptdaemon errors with details in an expandable text view
+ """
+ def __init__(self, error=None, parent=None):
+ text = get_error_string_from_enum(error.code)
+ desc = get_error_description_from_enum(error.code)
+ _DetailsExpanderMessageDialog.__init__(
+ self, text, desc, Gtk.STOCK_DIALOG_ERROR, error.details, parent)
diff --git a/aptdaemon/lock.py b/aptdaemon/lock.py
new file mode 100644
index 0000000..39b1795
--- /dev/null
+++ b/aptdaemon/lock.py
@@ -0,0 +1,198 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Handles the apt system lock"""
+# Copyright (C) 2010 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("LockFailedError", "system")
+
+import fcntl
+import os
+import struct
+
+import apt_pkg
+from gi.repository import GLib
+
+from aptdaemon import enums
+from aptdaemon.errors import TransactionCancelled
+
+
+class LockFailedError(Exception):
+
+ """The locking of file failed."""
+
+ def __init__(self, flock, process=None):
+ """Return a new LockFailedError instance.
+
+ Keyword arguments:
+ flock -- the path of the file lock
+ process -- the process which holds the lock or None
+ """
+ msg = "Could not acquire lock on %s." % flock
+ if process:
+ msg += " The lock is held by %s." % process
+ Exception.__init__(self, msg)
+ self.flock = flock
+ self.process = process
+
+
+class FileLock(object):
+
+ """Represents a file lock."""
+
+ def __init__(self, path):
+ self.path = path
+ self.fd = None
+
+ @property
+ def locked(self):
+ return self.fd is not None
+
+ def acquire(self):
+ """Return the file descriptor of the lock file or raise
+ LockFailedError if the lock cannot be obtained.
+ """
+ if self.fd:
+ return self.fd
+ fd_lock = apt_pkg.get_lock(self.path)
+ if fd_lock < 0:
+ process = get_locking_process_name(self.path)
+ raise LockFailedError(self.path, process)
+ else:
+ self.fd = fd_lock
+ return fd_lock
+
+ def release(self):
+ """Relase the lock."""
+ if self.fd:
+ os.close(self.fd)
+ self.fd = None
+
+
+def get_locking_process_name(lock_path):
+ """Return the name of a process which holds a lock. It will be None if
+ the name cannot be retrivied.
+ """
+ try:
+ fd_lock_read = open(lock_path, "r")
+ except IOError:
+ return None
+ else:
+ # Get the pid of the locking application
+ flk = struct.pack('hhQQi', fcntl.F_WRLCK, os.SEEK_SET, 0, 0, 0)
+ flk_ret = fcntl.fcntl(fd_lock_read, fcntl.F_GETLK, flk)
+ pid = struct.unpack("hhQQi", flk_ret)[4]
+ # Get the command of the pid
+ try:
+ with open("/proc/%s/status" % pid, "r") as fd_status:
+ try:
+ for key, value in (line.split(":") for line in
+ fd_status.readlines()):
+ if key == "Name":
+ return value.strip()
+ except Exception:
+ return None
+ except IOError:
+ return None
+ finally:
+ fd_lock_read.close()
+ return None
+
+apt_pkg.init()
+
+#: The lock for dpkg status file
+_status_dir = os.path.dirname(apt_pkg.config.find_file("Dir::State::status"))
+status_lock = FileLock(os.path.join(_status_dir, "lock"))
+frontend_lock = FileLock(os.path.join(_status_dir, "lock-frontend"))
+
+#: The lock for the package archive
+_archives_dir = apt_pkg.config.find_dir("Dir::Cache::Archives")
+archive_lock = FileLock(os.path.join(_archives_dir, "lock"))
+
+#: The lock for the repository indexes
+lists_lock = FileLock(os.path.join(
+ apt_pkg.config.find_dir("Dir::State::lists"), "lock"))
+
+
+def acquire():
+ """Acquire an exclusive lock for the package management system."""
+ try:
+ for lock in frontend_lock, status_lock, archive_lock, lists_lock:
+ if not lock.locked:
+ lock.acquire()
+ except:
+ release()
+ raise
+
+ os.environ['DPKG_FRONTEND_LOCKED'] = '1'
+
+def release():
+ """Release an exclusive lock for the package management system."""
+ for lock in lists_lock, archive_lock, status_lock, frontend_lock:
+ lock.release()
+
+ try:
+ del os.environ['DPKG_FRONTEND_LOCKED']
+ except KeyError:
+ pass
+
+
+def wait_for_lock(trans, alt_lock=None):
+ """Acquire the system lock or the optionally given one. If the lock
+ cannot be obtained pause the transaction in the meantime.
+
+ :param trans: the transaction
+ :param lock: optional alternative lock
+ """
+ def watch_lock():
+ """Helper to unpause the transaction if the lock can be obtained.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ alt_lock -- alternative lock to the system lock
+ """
+ try:
+ if alt_lock:
+ alt_lock.acquire()
+ else:
+ acquire()
+ except LockFailedError:
+ return True
+ trans.paused = False
+ return True
+
+ try:
+ if alt_lock:
+ alt_lock.acquire()
+ else:
+ acquire()
+ except LockFailedError as error:
+ trans.paused = True
+ trans.status = enums.STATUS_WAITING_LOCK
+ if error.process:
+ # TRANSLATORS: %s is the name of a package manager
+ msg = trans.gettext("Waiting for %s to exit")
+ trans.status_details = msg % error.process
+ lock_watch = GLib.timeout_add_seconds(3, watch_lock)
+ while trans.paused and not trans.cancelled:
+ GLib.main_context_default().iteration()
+ GLib.source_remove(lock_watch)
+ if trans.cancelled:
+ raise TransactionCancelled()
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/logger.py b/aptdaemon/logger.py
new file mode 100644
index 0000000..291fb52
--- /dev/null
+++ b/aptdaemon/logger.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Logging facilities for aptdaemon
+"""
+# Copyright (C) 2013 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("ColoredFormatter")
+
+import logging
+import os
+
+# Define some foreground colors
+BLACK = 30
+RED = 31
+GREEN = 32
+YELLOW = 33
+BLUE = 34
+MAGENTA = 35
+CYAN = 36
+WHITE = 37
+
+# Terminal control sequences to format output
+RESET_SEQ = "\033[0m"
+COLOR_SEQ = "\033[1;%dm"
+BOLD_SEQ = "\033[1m"
+
+COLORS = {
+ logging.WARN: YELLOW,
+ logging.INFO: BLUE,
+ logging.DEBUG: CYAN,
+ logging.CRITICAL: RED,
+ logging.ERROR: RED
+}
+
+
+class ColoredFormatter(logging.Formatter):
+
+ """Adds some color to the log messages.
+
+ http://stackoverflow.com/questions/384076/\
+ how-can-i-color-python-logging-output
+ """
+
+ def __init__(self, fmt=None, datefmt=None, use_color=True):
+ logging.Formatter.__init__(self, fmt, datefmt)
+ if os.getenv("TERM") in ["xterm", "xterm-colored", "linux"]:
+ self.use_color = use_color
+ else:
+ self.use_color = False
+
+ def format(self, record):
+ """Return the formated output string."""
+ if self.use_color and record.levelno in COLORS:
+ record.levelname = (COLOR_SEQ % COLORS[record.levelno] +
+ record.levelname +
+ RESET_SEQ)
+ record.name = COLOR_SEQ % GREEN + record.name + RESET_SEQ
+ if record.levelno in [logging.CRITICAL, logging.ERROR]:
+ record.msg = COLOR_SEQ % RED + record.msg + RESET_SEQ
+ return logging.Formatter.format(self, record)
diff --git a/aptdaemon/loop.py b/aptdaemon/loop.py
new file mode 100644
index 0000000..cf66b33
--- /dev/null
+++ b/aptdaemon/loop.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Main loop for aptdaemon."""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("mainloop", "get_main_loop")
+
+from gi.repository import GLib
+
+mainloop = GLib.MainLoop()
+
+
+def get_main_loop():
+ """Return the glib main loop as a singleton."""
+ return mainloop
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/networking.py b/aptdaemon/networking.py
new file mode 100644
index 0000000..94f993f
--- /dev/null
+++ b/aptdaemon/networking.py
@@ -0,0 +1,267 @@
+# networking - Monitor the network status
+#
+# Copyright (c) 2010 Mohamed Amine IL Idrissi
+# Copyright (c) 2011 Canonical
+# Copyright (c) 2011 Sebastian Heinlein
+#
+# Author: Alex Chiang <achiang@canonical.com>
+# Michael Vogt <michael.vogt@ubuntu.com>
+# Mohamed Amine IL Idrissi <ilidrissiamine@gmail.com>
+# Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+
+from defer import Deferred, inline_callbacks, return_value
+from gi.repository import GObject
+from gi.repository import Gio
+from gi.repository import GLib
+from gi.repository import PackageKitGlib as pk
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
+DBusGMainLoop(set_as_default=True)
+import logging
+import os
+
+
+log = logging.getLogger("AptDaemon.NetMonitor")
+
+
+class NetworkMonitorBase(GObject.GObject):
+
+ """Check the network state."""
+
+ __gsignals__ = {"network-state-changed": (GObject.SignalFlags.RUN_FIRST,
+ None,
+ (GObject.TYPE_PYOBJECT,))}
+
+ def __init__(self):
+ log.debug("Initializing network monitor")
+ GObject.GObject.__init__(self)
+ self._state = pk.NetworkEnum.ONLINE
+
+ def _set_state(self, enum):
+ if self._state != enum:
+ log.debug("Network state changed: %s", enum)
+ self._state = enum
+ self.emit("network-state-changed", enum)
+
+ def _get_state(self):
+ return self._state
+
+ state = property(_get_state, _set_state)
+
+ @inline_callbacks
+ def get_network_state(self):
+ """Update the network state."""
+ return_value(self._state)
+
+
+class ProcNetworkMonitor(NetworkMonitorBase):
+
+ """Use the route information of the proc filesystem to detect
+ the network state.
+ """
+
+ def __init__(self):
+ log.debug("Initializing proc based network monitor")
+ NetworkMonitorBase.__init__(self)
+ self._state = pk.NetworkEnum.OFFLINE
+ self._file = Gio.File.new_for_path("/proc/net/route")
+ self._monitor = Gio.File.monitor(self._file,
+ Gio.FileMonitorFlags.NONE,
+ None)
+ self._monitor.connect("changed",
+ self._on_route_file_changed)
+
+ def _on_route_file_changed(self, *args):
+ self.get_network_state()
+
+ def _parse_route_file(self):
+ """Parse the route file - taken from PackageKit"""
+ with open("/proc/net/route") as route_file:
+ for line in route_file.readlines():
+ rows = line.split("\t")
+ # The header line?
+ if rows[0] == "Iface":
+ continue
+ # A loopback device?
+ elif rows[0] == "lo":
+ continue
+ # Correct number of rows?
+ elif len(rows) != 11:
+ continue
+ # The route is a default gateway
+ elif rows[1] == "00000000":
+ break
+ # A gateway is set
+ elif rows[2] != "00000000":
+ break
+ else:
+ return pk.NetworkEnum.OFFLINE
+ return pk.NetworkEnum.ONLINE
+
+ @inline_callbacks
+ def get_network_state(self):
+ """Update the network state."""
+ self.state = self._parse_route_file()
+ return_value(self.state)
+
+
+class NetworkManagerMonitor(NetworkMonitorBase):
+
+ """Use NetworkManager to monitor network state."""
+
+ NM_DBUS_IFACE = "org.freedesktop.NetworkManager"
+ NM_ACTIVE_CONN_DBUS_IFACE = NM_DBUS_IFACE + ".Connection.Active"
+ NM_DEVICE_DBUS_IFACE = NM_DBUS_IFACE + ".Device"
+
+ # The device type is unknown
+ NM_DEVICE_TYPE_UNKNOWN = 0
+ # The device is wired Ethernet device
+ NM_DEVICE_TYPE_ETHERNET = 1
+ # The device is an 802.11 WiFi device
+ NM_DEVICE_TYPE_WIFI = 2
+ # The device is a GSM-based cellular WAN device
+ NM_DEVICE_TYPE_GSM = 3
+ # The device is a CDMA/IS-95-based cellular WAN device
+ NM_DEVICE_TYPE_CDMA = 4
+
+ def __init__(self):
+ log.debug("Initializing NetworkManager monitor")
+ NetworkMonitorBase.__init__(self)
+ self.bus = dbus.SystemBus()
+ self.proxy = self.bus.get_object("org.freedesktop.NetworkManager",
+ "/org/freedesktop/NetworkManager")
+ self.proxy.connect_to_signal("PropertiesChanged",
+ self._on_nm_properties_changed,
+ dbus_interface=self.NM_DBUS_IFACE)
+ self.bus.add_signal_receiver(
+ self._on_nm_active_conn_props_changed,
+ signal_name="PropertiesChanged",
+ dbus_interface=self.NM_ACTIVE_CONN_DBUS_IFACE)
+
+ @staticmethod
+ def get_dbus_property(proxy, interface, property):
+ """Small helper to get the property value of a dbus object."""
+ props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
+ deferred = Deferred()
+ props.Get(interface, property,
+ reply_handler=deferred.callback,
+ error_handler=deferred.errback)
+ return deferred
+
+ @inline_callbacks
+ def _on_nm_properties_changed(self, props):
+ """Callback if NetworkManager properties changed."""
+ if "ActiveConnections" in props:
+ if not props["ActiveConnections"]:
+ log.debug("There aren't any active connections")
+ self.state = pk.NetworkEnum.OFFLINE
+ else:
+ yield self.get_network_state()
+
+ @inline_callbacks
+ def _on_nm_active_conn_props_changed(self, props):
+ """Callback if properties of the active connection changed."""
+ if "Default" not in props:
+ return
+ yield self.get_network_state()
+
+ @inline_callbacks
+ def _query_network_manager(self):
+ """Query NetworkManager about the network state."""
+ state = pk.NetworkEnum.OFFLINE
+ try:
+ active_conns = yield self.get_dbus_property(self.proxy,
+ self.NM_DBUS_IFACE,
+ "ActiveConnections")
+ except dbus.DBusException:
+ log.warning("Failed to determinate network state")
+ return_value(state)
+
+ for conn in active_conns:
+ conn_obj = self.bus.get_object(self.NM_DBUS_IFACE, conn)
+ try:
+ is_default = yield self.get_dbus_property(
+ conn_obj, self.NM_ACTIVE_CONN_DBUS_IFACE, "Default")
+ if not is_default:
+ continue
+ devs = yield self.get_dbus_property(
+ conn_obj, self.NM_ACTIVE_CONN_DBUS_IFACE, "Devices")
+ except dbus.DBusException:
+ log.warning("Failed to determinate network state")
+ break
+ priority_device_type = -1
+ for dev in devs:
+ try:
+ dev_obj = self.bus.get_object(self.NM_DBUS_IFACE, dev)
+ dev_type = yield self.get_dbus_property(
+ dev_obj, self.NM_DEVICE_DBUS_IFACE, "DeviceType")
+ except dbus.DBusException:
+ log.warning("Failed to determinate network state")
+ return_value(pk.NetworkEnum.UNKNOWN)
+ # prioterizse device types, since a bridged GSM/CDMA connection
+ # should be returned as a GSM/CDMA one
+ # The NM_DEVICE_TYPE_* enums are luckly ordered in this sense.
+ if dev_type <= priority_device_type:
+ continue
+ priority_device_type = dev_type
+
+ if dev_type in (self.NM_DEVICE_TYPE_GSM,
+ self.NM_DEVICE_TYPE_CDMA):
+ state = pk.NetworkEnum.MOBILE
+ elif dev_type == self.NM_DEVICE_TYPE_ETHERNET:
+ state = pk.NetworkEnum.WIRED
+ elif dev_type == self.NM_DEVICE_TYPE_WIFI:
+ state = pk.NetworkEnum.WIFI
+ elif dev_type == self.NM_DEVICE_TYPE_UNKNOWN:
+ state = pk.NetworkEnum.OFFLINE
+ else:
+ state = pk.NetworkEnum.ONLINE
+ return_value(state)
+
+ @inline_callbacks
+ def get_network_state(self):
+ """Update the network state."""
+ self.state = yield self._query_network_manager()
+ return_value(self.state)
+
+
+def get_network_monitor(fallback=False):
+ """Return a network monitor."""
+ if fallback:
+ return ProcNetworkMonitor()
+ try:
+ return NetworkManagerMonitor()
+ except dbus.DBusException:
+ pass
+ if os.path.exists("/proc/net/route"):
+ return ProcNetworkMonitor()
+ return NetworkMonitorBase()
+
+
+if __name__ == "__main__":
+ @inline_callbacks
+ def _call_monitor():
+ state = yield monitor.get_network_state()
+ print(("Initial network state: %s" % state))
+ log_handler = logging.StreamHandler()
+ log.addHandler(log_handler)
+ log.setLevel(logging.DEBUG)
+ monitor = get_network_monitor(True)
+ _call_monitor()
+ loop = GLib.MainLoop()
+ loop.run()
diff --git a/aptdaemon/pkenums.py b/aptdaemon/pkenums.py
new file mode 100644
index 0000000..60a212d
--- /dev/null
+++ b/aptdaemon/pkenums.py
@@ -0,0 +1,969 @@
+# This file was autogenerated from ../../../lib/packagekit-glib2/pk-enum.c by enum-converter.py
+
+class PackageKitEnum:
+ exit = ( "unknown", "success", "failed", "cancelled", "key-required", "eula-required", "media-change-required", "killed", "need-untrusted", "cancelled-priority", "skip-transaction", "repair-required", )
+ status = ( "unknown", "wait", "setup", "running", "query", "info", "refresh-cache", "remove", "download", "install", "update", "cleanup", "obsolete", "dep-resolve", "sig-check", "test-commit", "commit", "request", "finished", "cancel", "download-repository", "download-packagelist", "download-filelist", "download-changelog", "download-group", "download-updateinfo", "repackaging", "loading-cache", "scan-applications", "generate-package-list", "waiting-for-lock", "waiting-for-auth", "scan-process-list", "check-executable-files", "check-libraries", "copy-files", )
+ role = ( "unknown", "cancel", "get-depends", "get-details", "get-files", "get-packages", "get-repo-list", "get-requires", "get-update-detail", "get-updates", "install-files", "install-packages", "install-signature", "refresh-cache", "remove-packages", "repo-enable", "repo-set-data", "resolve", "search-details", "search-file", "search-group", "search-name", "update-packages", "what-provides", "accept-eula", "download-packages", "get-distro-upgrades", "get-categories", "get-old-transactions", "upgrade-system", "repair-system", )
+ error = ( "unknown", "out-of-memory", "no-cache", "no-network", "not-supported", "internal-error", "gpg-failure", "filter-invalid", "package-id-invalid", "transaction-error", "transaction-cancelled", "package-not-installed", "package-not-found", "package-already-installed", "package-download-failed", "group-not-found", "group-list-invalid", "dep-resolution-failed", "create-thread-failed", "repo-not-found", "cannot-remove-system-package", "process-kill", "failed-initialization", "failed-finalise", "failed-config-parsing", "cannot-cancel", "cannot-get-lock", "no-packages-to-update", "cannot-write-repo-config", "local-install-failed", "bad-gpg-signature", "missing-gpg-signature", "cannot-install-source-package", "repo-configuration-error", "no-license-agreement", "file-conflicts", "package-conflicts", "repo-not-available", "invalid-package-file", "package-install-blocked", "package-corrupt", "all-packages-already-installed", "file-not-found", "no-more-mirrors-to-try", "no-distro-upgrade-data", "incompatible-architecture", "no-space-on-device", "media-change-required", "not-authorized", "update-not-found", "cannot-install-repo-unsigned", "cannot-update-repo-unsigned", "cannot-get-filelist", "cannot-get-requires", "cannot-disable-repository", "restricted-download", "package-failed-to-configure", "package-failed-to-build", "package-failed-to-install", "package-failed-to-remove", "failed-due-to-running-process", "package-database-changed", "provide-type-not-supported", "install-root-invalid", "cannot-fetch-sources", "cancelled-priority", "unfinished-transaction", "lock-required", )
+ restart = ( "unknown", "none", "system", "session", "application", "security-system", "security-session", )
+ message = ( "unknown", "broken-mirror", "connection-refused", "parameter-invalid", "priority-invalid", "backend-error", "daemon-error", "cache-being-rebuilt", "newer-package-exists", "could-not-find-package", "config-files-changed", "package-already-installed", "autoremove-ignored", "repo-metadata-download-failed", "repo-for-developers-only", "other-updates-held-back", )
+ filter = ( "unknown", "none", "installed", "~installed", "devel", "~devel", "gui", "~gui", "free", "~free", "visible", "~visible", "supported", "~supported", "basename", "~basename", "newest", "~newest", "arch", "~arch", "source", "~source", "collections", "~collections", "application", "~application", )
+ group = ( "unknown", "accessibility", "accessories", "education", "games", "graphics", "internet", "office", "other", "programming", "multimedia", "system", "desktop-gnome", "desktop-kde", "desktop-xfce", "desktop-other", "publishing", "servers", "fonts", "admin-tools", "legacy", "localization", "virtualization", "power-management", "security", "communication", "network", "maps", "repos", "science", "documentation", "electronics", "collections", "vendor", "newest", )
+ update_state = ( "unknown", "testing", "unstable", "stable", )
+ info = ( "unknown", "installed", "available", "low", "normal", "important", "security", "bugfix", "enhancement", "blocked", "downloading", "updating", "installing", "removing", "cleanup", "obsoleting", "collection-installed", "collection-available", "finished", "reinstalling", "downgrading", "preparing", "decompressing", "untrusted", "trusted", )
+ sig_type = ( "unknown", "gpg", )
+ upgrade = ( "unknown", "stable", "unstable", )
+ provides = ( "unknown", "any", "modalias", "codec", "mimetype", "driver", "font", "postscript-driver", "plasma-service", "shared-library", "python-module", "language-support", )
+ network = ( "unknown", "offline", "online", "wired", "wifi", "mobile", )
+ media_type = ( "unknown", "cd", "dvd", "disc", )
+ authorize_type = ( "unknown", "yes", "no", "interactive", )
+ upgrade_kind = ( "unknown", "minimal", "default", "complete", )
+ transaction_flag = ( "none", "only-trusted", "simulate", "only-download", )
+
+# Constants
+
+AUTHORIZE_INTERACTIVE = "interactive"
+AUTHORIZE_NO = "no"
+AUTHORIZE_UNKNOWN = "unknown"
+AUTHORIZE_YES = "yes"
+DISTRO_UPGRADE_STABLE = "stable"
+DISTRO_UPGRADE_UNKNOWN = "unknown"
+DISTRO_UPGRADE_UNSTABLE = "unstable"
+ERROR_ALL_PACKAGES_ALREADY_INSTALLED = "all-packages-already-installed"
+ERROR_BAD_GPG_SIGNATURE = "bad-gpg-signature"
+ERROR_CANCELLED_PRIORITY = "cancelled-priority"
+ERROR_CANNOT_CANCEL = "cannot-cancel"
+ERROR_CANNOT_DISABLE_REPOSITORY = "cannot-disable-repository"
+ERROR_CANNOT_FETCH_SOURCES = "cannot-fetch-sources"
+ERROR_CANNOT_GET_FILELIST = "cannot-get-filelist"
+ERROR_CANNOT_GET_LOCK = "cannot-get-lock"
+ERROR_CANNOT_GET_REQUIRES = "cannot-get-requires"
+ERROR_CANNOT_INSTALL_REPO_UNSIGNED = "cannot-install-repo-unsigned"
+ERROR_CANNOT_INSTALL_SOURCE_PACKAGE = "cannot-install-source-package"
+ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE = "cannot-remove-system-package"
+ERROR_CANNOT_UPDATE_REPO_UNSIGNED = "cannot-update-repo-unsigned"
+ERROR_CANNOT_WRITE_REPO_CONFIG = "cannot-write-repo-config"
+ERROR_CREATE_THREAD_FAILED = "create-thread-failed"
+ERROR_DEP_RESOLUTION_FAILED = "dep-resolution-failed"
+ERROR_FAILED_CONFIG_PARSING = "failed-config-parsing"
+ERROR_FAILED_FINALISE = "failed-finalise"
+ERROR_FAILED_INITIALIZATION = "failed-initialization"
+ERROR_FILE_CONFLICTS = "file-conflicts"
+ERROR_FILE_NOT_FOUND = "file-not-found"
+ERROR_FILTER_INVALID = "filter-invalid"
+ERROR_GPG_FAILURE = "gpg-failure"
+ERROR_GROUP_LIST_INVALID = "group-list-invalid"
+ERROR_GROUP_NOT_FOUND = "group-not-found"
+ERROR_INCOMPATIBLE_ARCHITECTURE = "incompatible-architecture"
+ERROR_INSTALL_ROOT_INVALID = "install-root-invalid"
+ERROR_INTERNAL_ERROR = "internal-error"
+ERROR_INVALID_PACKAGE_FILE = "invalid-package-file"
+ERROR_LOCAL_INSTALL_FAILED = "local-install-failed"
+ERROR_LOCK_REQUIRED = "lock-required"
+ERROR_MEDIA_CHANGE_REQUIRED = "media-change-required"
+ERROR_MISSING_GPG_SIGNATURE = "missing-gpg-signature"
+ERROR_NOT_AUTHORIZED = "not-authorized"
+ERROR_NOT_SUPPORTED = "not-supported"
+ERROR_NO_CACHE = "no-cache"
+ERROR_NO_DISTRO_UPGRADE_DATA = "no-distro-upgrade-data"
+ERROR_NO_LICENSE_AGREEMENT = "no-license-agreement"
+ERROR_NO_MORE_MIRRORS_TO_TRY = "no-more-mirrors-to-try"
+ERROR_NO_NETWORK = "no-network"
+ERROR_NO_PACKAGES_TO_UPDATE = "no-packages-to-update"
+ERROR_NO_SPACE_ON_DEVICE = "no-space-on-device"
+ERROR_OOM = "out-of-memory"
+ERROR_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+ERROR_PACKAGE_CONFLICTS = "package-conflicts"
+ERROR_PACKAGE_CORRUPT = "package-corrupt"
+ERROR_PACKAGE_DATABASE_CHANGED = "package-database-changed"
+ERROR_PACKAGE_DOWNLOAD_FAILED = "package-download-failed"
+ERROR_PACKAGE_FAILED_TO_BUILD = "package-failed-to-build"
+ERROR_PACKAGE_FAILED_TO_CONFIGURE = "package-failed-to-configure"
+ERROR_PACKAGE_FAILED_TO_INSTALL = "package-failed-to-install"
+ERROR_PACKAGE_FAILED_TO_REMOVE = "package-failed-to-remove"
+ERROR_PACKAGE_ID_INVALID = "package-id-invalid"
+ERROR_PACKAGE_INSTALL_BLOCKED = "package-install-blocked"
+ERROR_PACKAGE_NOT_FOUND = "package-not-found"
+ERROR_PACKAGE_NOT_INSTALLED = "package-not-installed"
+ERROR_PROCESS_KILL = "process-kill"
+ERROR_PROVIDE_TYPE_NOT_SUPPORTED = "provide-type-not-supported"
+ERROR_REPO_CONFIGURATION_ERROR = "repo-configuration-error"
+ERROR_REPO_NOT_AVAILABLE = "repo-not-available"
+ERROR_REPO_NOT_FOUND = "repo-not-found"
+ERROR_RESTRICTED_DOWNLOAD = "restricted-download"
+ERROR_TRANSACTION_CANCELLED = "transaction-cancelled"
+ERROR_TRANSACTION_ERROR = "transaction-error"
+ERROR_UNFINISHED_TRANSACTION = "unfinished-transaction"
+ERROR_UNKNOWN = "unknown"
+ERROR_UPDATE_FAILED_DUE_TO_RUNNING_PROCESS = "failed-due-to-running-process"
+ERROR_UPDATE_NOT_FOUND = "update-not-found"
+EXIT_CANCELLED = "cancelled"
+EXIT_CANCELLED_PRIORITY = "cancelled-priority"
+EXIT_EULA_REQUIRED = "eula-required"
+EXIT_FAILED = "failed"
+EXIT_KEY_REQUIRED = "key-required"
+EXIT_KILLED = "killed"
+EXIT_MEDIA_CHANGE_REQUIRED = "media-change-required"
+EXIT_NEED_UNTRUSTED = "need-untrusted"
+EXIT_REPAIR_REQUIRED = "repair-required"
+EXIT_SKIP_TRANSACTION = "skip-transaction"
+EXIT_SUCCESS = "success"
+EXIT_UNKNOWN = "unknown"
+FILTER_APPLICATION = "application"
+FILTER_ARCH = "arch"
+FILTER_BASENAME = "basename"
+FILTER_COLLECTIONS = "collections"
+FILTER_DEVELOPMENT = "devel"
+FILTER_FREE = "free"
+FILTER_GUI = "gui"
+FILTER_INSTALLED = "installed"
+FILTER_NEWEST = "newest"
+FILTER_NONE = "none"
+FILTER_NOT_APPLICATION = "~application"
+FILTER_NOT_ARCH = "~arch"
+FILTER_NOT_BASENAME = "~basename"
+FILTER_NOT_COLLECTIONS = "~collections"
+FILTER_NOT_DEVELOPMENT = "~devel"
+FILTER_NOT_FREE = "~free"
+FILTER_NOT_GUI = "~gui"
+FILTER_NOT_INSTALLED = "~installed"
+FILTER_NOT_NEWEST = "~newest"
+FILTER_NOT_SOURCE = "~source"
+FILTER_NOT_SUPPORTED = "~supported"
+FILTER_NOT_VISIBLE = "~visible"
+FILTER_SOURCE = "source"
+FILTER_SUPPORTED = "supported"
+FILTER_UNKNOWN = "unknown"
+FILTER_VISIBLE = "visible"
+GROUP_ACCESSIBILITY = "accessibility"
+GROUP_ACCESSORIES = "accessories"
+GROUP_ADMIN_TOOLS = "admin-tools"
+GROUP_COLLECTIONS = "collections"
+GROUP_COMMUNICATION = "communication"
+GROUP_DESKTOP_GNOME = "desktop-gnome"
+GROUP_DESKTOP_KDE = "desktop-kde"
+GROUP_DESKTOP_OTHER = "desktop-other"
+GROUP_DESKTOP_XFCE = "desktop-xfce"
+GROUP_DOCUMENTATION = "documentation"
+GROUP_EDUCATION = "education"
+GROUP_ELECTRONICS = "electronics"
+GROUP_FONTS = "fonts"
+GROUP_GAMES = "games"
+GROUP_GRAPHICS = "graphics"
+GROUP_INTERNET = "internet"
+GROUP_LEGACY = "legacy"
+GROUP_LOCALIZATION = "localization"
+GROUP_MAPS = "maps"
+GROUP_MULTIMEDIA = "multimedia"
+GROUP_NETWORK = "network"
+GROUP_NEWEST = "newest"
+GROUP_OFFICE = "office"
+GROUP_OTHER = "other"
+GROUP_POWER_MANAGEMENT = "power-management"
+GROUP_PROGRAMMING = "programming"
+GROUP_PUBLISHING = "publishing"
+GROUP_REPOS = "repos"
+GROUP_SCIENCE = "science"
+GROUP_SECURITY = "security"
+GROUP_SERVERS = "servers"
+GROUP_SYSTEM = "system"
+GROUP_UNKNOWN = "unknown"
+GROUP_VENDOR = "vendor"
+GROUP_VIRTUALIZATION = "virtualization"
+INFO_AVAILABLE = "available"
+INFO_BLOCKED = "blocked"
+INFO_BUGFIX = "bugfix"
+INFO_CLEANUP = "cleanup"
+INFO_COLLECTION_AVAILABLE = "collection-available"
+INFO_COLLECTION_INSTALLED = "collection-installed"
+INFO_DECOMPRESSING = "decompressing"
+INFO_DOWNGRADING = "downgrading"
+INFO_DOWNLOADING = "downloading"
+INFO_ENHANCEMENT = "enhancement"
+INFO_FINISHED = "finished"
+INFO_IMPORTANT = "important"
+INFO_INSTALLED = "installed"
+INFO_INSTALLING = "installing"
+INFO_LOW = "low"
+INFO_NORMAL = "normal"
+INFO_OBSOLETING = "obsoleting"
+INFO_PREPARING = "preparing"
+INFO_REINSTALLING = "reinstalling"
+INFO_REMOVING = "removing"
+INFO_SECURITY = "security"
+INFO_TRUSTED = "trusted"
+INFO_UNKNOWN = "unknown"
+INFO_UNTRUSTED = "untrusted"
+INFO_UPDATING = "updating"
+MEDIA_TYPE_CD = "cd"
+MEDIA_TYPE_DISC = "disc"
+MEDIA_TYPE_DVD = "dvd"
+MEDIA_TYPE_UNKNOWN = "unknown"
+MESSAGE_AUTOREMOVE_IGNORED = "autoremove-ignored"
+MESSAGE_BACKEND_ERROR = "backend-error"
+MESSAGE_BROKEN_MIRROR = "broken-mirror"
+MESSAGE_CACHE_BEING_REBUILT = "cache-being-rebuilt"
+MESSAGE_CONFIG_FILES_CHANGED = "config-files-changed"
+MESSAGE_CONNECTION_REFUSED = "connection-refused"
+MESSAGE_COULD_NOT_FIND_PACKAGE = "could-not-find-package"
+MESSAGE_DAEMON_ERROR = "daemon-error"
+MESSAGE_NEWER_PACKAGE_EXISTS = "newer-package-exists"
+MESSAGE_OTHER_UPDATES_HELD_BACK = "other-updates-held-back"
+MESSAGE_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+MESSAGE_PARAMETER_INVALID = "parameter-invalid"
+MESSAGE_PRIORITY_INVALID = "priority-invalid"
+MESSAGE_REPO_FOR_DEVELOPERS_ONLY = "repo-for-developers-only"
+MESSAGE_REPO_METADATA_DOWNLOAD_FAILED = "repo-metadata-download-failed"
+MESSAGE_UNKNOWN = "unknown"
+NETWORK_MOBILE = "mobile"
+NETWORK_OFFLINE = "offline"
+NETWORK_ONLINE = "online"
+NETWORK_UNKNOWN = "unknown"
+NETWORK_WIFI = "wifi"
+NETWORK_WIRED = "wired"
+PROVIDES_ANY = "any"
+PROVIDES_CODEC = "codec"
+PROVIDES_FONT = "font"
+PROVIDES_HARDWARE_DRIVER = "driver"
+PROVIDES_LANGUAGE_SUPPORT = "language-support"
+PROVIDES_MIMETYPE = "mimetype"
+PROVIDES_MODALIAS = "modalias"
+PROVIDES_PLASMA_SERVICE = "plasma-service"
+PROVIDES_POSTSCRIPT_DRIVER = "postscript-driver"
+PROVIDES_PYTHON = "python-module"
+PROVIDES_SHARED_LIB = "shared-library"
+PROVIDES_UNKNOWN = "unknown"
+RESTART_APPLICATION = "application"
+RESTART_NONE = "none"
+RESTART_SECURITY_SESSION = "security-session"
+RESTART_SECURITY_SYSTEM = "security-system"
+RESTART_SESSION = "session"
+RESTART_SYSTEM = "system"
+RESTART_UNKNOWN = "unknown"
+ROLE_ACCEPT_EULA = "accept-eula"
+ROLE_CANCEL = "cancel"
+ROLE_DOWNLOAD_PACKAGES = "download-packages"
+ROLE_GET_CATEGORIES = "get-categories"
+ROLE_GET_DEPENDS = "get-depends"
+ROLE_GET_DETAILS = "get-details"
+ROLE_GET_DISTRO_UPGRADES = "get-distro-upgrades"
+ROLE_GET_FILES = "get-files"
+ROLE_GET_OLD_TRANSACTIONS = "get-old-transactions"
+ROLE_GET_PACKAGES = "get-packages"
+ROLE_GET_REPO_LIST = "get-repo-list"
+ROLE_GET_REQUIRES = "get-requires"
+ROLE_GET_UPDATES = "get-updates"
+ROLE_GET_UPDATE_DETAIL = "get-update-detail"
+ROLE_INSTALL_FILES = "install-files"
+ROLE_INSTALL_PACKAGES = "install-packages"
+ROLE_INSTALL_SIGNATURE = "install-signature"
+ROLE_REFRESH_CACHE = "refresh-cache"
+ROLE_REMOVE_PACKAGES = "remove-packages"
+ROLE_REPAIR_SYSTEM = "repair-system"
+ROLE_REPO_ENABLE = "repo-enable"
+ROLE_REPO_SET_DATA = "repo-set-data"
+ROLE_RESOLVE = "resolve"
+ROLE_SEARCH_DETAILS = "search-details"
+ROLE_SEARCH_FILE = "search-file"
+ROLE_SEARCH_GROUP = "search-group"
+ROLE_SEARCH_NAME = "search-name"
+ROLE_UNKNOWN = "unknown"
+ROLE_UPDATE_PACKAGES = "update-packages"
+ROLE_UPGRADE_SYSTEM = "upgrade-system"
+ROLE_WHAT_PROVIDES = "what-provides"
+SIGTYPE_GPG = "gpg"
+SIGTYPE_UNKNOWN = "unknown"
+STATUS_CANCEL = "cancel"
+STATUS_CHECK_EXECUTABLE_FILES = "check-executable-files"
+STATUS_CHECK_LIBRARIES = "check-libraries"
+STATUS_CLEANUP = "cleanup"
+STATUS_COMMIT = "commit"
+STATUS_COPY_FILES = "copy-files"
+STATUS_DEP_RESOLVE = "dep-resolve"
+STATUS_DOWNLOAD = "download"
+STATUS_DOWNLOAD_CHANGELOG = "download-changelog"
+STATUS_DOWNLOAD_FILELIST = "download-filelist"
+STATUS_DOWNLOAD_GROUP = "download-group"
+STATUS_DOWNLOAD_PACKAGELIST = "download-packagelist"
+STATUS_DOWNLOAD_REPOSITORY = "download-repository"
+STATUS_DOWNLOAD_UPDATEINFO = "download-updateinfo"
+STATUS_FINISHED = "finished"
+STATUS_GENERATE_PACKAGE_LIST = "generate-package-list"
+STATUS_INFO = "info"
+STATUS_INSTALL = "install"
+STATUS_LOADING_CACHE = "loading-cache"
+STATUS_OBSOLETE = "obsolete"
+STATUS_QUERY = "query"
+STATUS_REFRESH_CACHE = "refresh-cache"
+STATUS_REMOVE = "remove"
+STATUS_REPACKAGING = "repackaging"
+STATUS_REQUEST = "request"
+STATUS_RUNNING = "running"
+STATUS_SCAN_APPLICATIONS = "scan-applications"
+STATUS_SCAN_PROCESS_LIST = "scan-process-list"
+STATUS_SETUP = "setup"
+STATUS_SIG_CHECK = "sig-check"
+STATUS_TEST_COMMIT = "test-commit"
+STATUS_UNKNOWN = "unknown"
+STATUS_UPDATE = "update"
+STATUS_WAIT = "wait"
+STATUS_WAITING_FOR_AUTH = "waiting-for-auth"
+STATUS_WAITING_FOR_LOCK = "waiting-for-lock"
+TRANSACTION_FLAG_NONE = "none"
+TRANSACTION_FLAG_ONLY_DOWNLOAD = "only-download"
+TRANSACTION_FLAG_ONLY_TRUSTED = "only-trusted"
+TRANSACTION_FLAG_SIMULATE = "simulate"
+UPDATE_STATE_STABLE = "stable"
+UPDATE_STATE_TESTING = "testing"
+UPDATE_STATE_UNKNOWN = "unknown"
+UPDATE_STATE_UNSTABLE = "unstable"
+UPGRADE_KIND_COMPLETE = "complete"
+UPGRADE_KIND_DEFAULT = "default"
+UPGRADE_KIND_MINIMAL = "minimal"
+UPGRADE_KIND_UNKNOWN = "unknown"
+# This file was autogenerated from ../../lib/packagekit-glib2/pk-enum.c by enum-converter.py
+
+class PackageKitEnum:
+ exit = ( "unknown", "success", "failed", "cancelled", "key-required", "eula-required", "media-change-required", "killed", "need-untrusted", "cancelled-priority", "skip-transaction", "repair-required", )
+ status = ( "unknown", "wait", "setup", "running", "query", "info", "refresh-cache", "remove", "download", "install", "update", "cleanup", "obsolete", "dep-resolve", "sig-check", "test-commit", "commit", "request", "finished", "cancel", "download-repository", "download-packagelist", "download-filelist", "download-changelog", "download-group", "download-updateinfo", "repackaging", "loading-cache", "scan-applications", "generate-package-list", "waiting-for-lock", "waiting-for-auth", "scan-process-list", "check-executable-files", "check-libraries", "copy-files", )
+ role = ( "unknown", "cancel", "get-depends", "get-details", "get-files", "get-packages", "get-repo-list", "get-requires", "get-update-detail", "get-updates", "install-files", "install-packages", "install-signature", "refresh-cache", "remove-packages", "repo-enable", "repo-set-data", "resolve", "search-details", "search-file", "search-group", "search-name", "update-packages", "what-provides", "accept-eula", "download-packages", "get-distro-upgrades", "get-categories", "get-old-transactions", "upgrade-system", "repair-system", )
+ error = ( "unknown", "out-of-memory", "no-cache", "no-network", "not-supported", "internal-error", "gpg-failure", "filter-invalid", "package-id-invalid", "transaction-error", "transaction-cancelled", "package-not-installed", "package-not-found", "package-already-installed", "package-download-failed", "group-not-found", "group-list-invalid", "dep-resolution-failed", "create-thread-failed", "repo-not-found", "cannot-remove-system-package", "process-kill", "failed-initialization", "failed-finalise", "failed-config-parsing", "cannot-cancel", "cannot-get-lock", "no-packages-to-update", "cannot-write-repo-config", "local-install-failed", "bad-gpg-signature", "missing-gpg-signature", "cannot-install-source-package", "repo-configuration-error", "no-license-agreement", "file-conflicts", "package-conflicts", "repo-not-available", "invalid-package-file", "package-install-blocked", "package-corrupt", "all-packages-already-installed", "file-not-found", "no-more-mirrors-to-try", "no-distro-upgrade-data", "incompatible-architecture", "no-space-on-device", "media-change-required", "not-authorized", "update-not-found", "cannot-install-repo-unsigned", "cannot-update-repo-unsigned", "cannot-get-filelist", "cannot-get-requires", "cannot-disable-repository", "restricted-download", "package-failed-to-configure", "package-failed-to-build", "package-failed-to-install", "package-failed-to-remove", "failed-due-to-running-process", "package-database-changed", "provide-type-not-supported", "install-root-invalid", "cannot-fetch-sources", "cancelled-priority", "unfinished-transaction", "lock-required", )
+ restart = ( "unknown", "none", "system", "session", "application", "security-system", "security-session", )
+ message = ( "unknown", "broken-mirror", "connection-refused", "parameter-invalid", "priority-invalid", "backend-error", "daemon-error", "cache-being-rebuilt", "newer-package-exists", "could-not-find-package", "config-files-changed", "package-already-installed", "autoremove-ignored", "repo-metadata-download-failed", "repo-for-developers-only", "other-updates-held-back", )
+ filter = ( "unknown", "none", "installed", "~installed", "devel", "~devel", "gui", "~gui", "free", "~free", "visible", "~visible", "supported", "~supported", "basename", "~basename", "newest", "~newest", "arch", "~arch", "source", "~source", "collections", "~collections", "application", "~application", )
+ group = ( "unknown", "accessibility", "accessories", "education", "games", "graphics", "internet", "office", "other", "programming", "multimedia", "system", "desktop-gnome", "desktop-kde", "desktop-xfce", "desktop-other", "publishing", "servers", "fonts", "admin-tools", "legacy", "localization", "virtualization", "power-management", "security", "communication", "network", "maps", "repos", "science", "documentation", "electronics", "collections", "vendor", "newest", )
+ update_state = ( "unknown", "testing", "unstable", "stable", )
+ info = ( "unknown", "installed", "available", "low", "normal", "important", "security", "bugfix", "enhancement", "blocked", "downloading", "updating", "installing", "removing", "cleanup", "obsoleting", "collection-installed", "collection-available", "finished", "reinstalling", "downgrading", "preparing", "decompressing", "untrusted", "trusted", )
+ sig_type = ( "unknown", "gpg", )
+ upgrade = ( "unknown", "stable", "unstable", )
+ provides = ( "unknown", "any", "modalias", "codec", "mimetype", "driver", "font", "postscript-driver", "plasma-service", "shared-library", "python-module", "language-support", )
+ network = ( "unknown", "offline", "online", "wired", "wifi", "mobile", )
+ media_type = ( "unknown", "cd", "dvd", "disc", )
+ authorize_type = ( "unknown", "yes", "no", "interactive", )
+ upgrade_kind = ( "unknown", "minimal", "default", "complete", )
+ transaction_flag = ( "none", "only-trusted", "simulate", "only-download", )
+
+# Constants
+
+AUTHORIZE_INTERACTIVE = "interactive"
+AUTHORIZE_NO = "no"
+AUTHORIZE_UNKNOWN = "unknown"
+AUTHORIZE_YES = "yes"
+DISTRO_UPGRADE_STABLE = "stable"
+DISTRO_UPGRADE_UNKNOWN = "unknown"
+DISTRO_UPGRADE_UNSTABLE = "unstable"
+ERROR_ALL_PACKAGES_ALREADY_INSTALLED = "all-packages-already-installed"
+ERROR_BAD_GPG_SIGNATURE = "bad-gpg-signature"
+ERROR_CANCELLED_PRIORITY = "cancelled-priority"
+ERROR_CANNOT_CANCEL = "cannot-cancel"
+ERROR_CANNOT_DISABLE_REPOSITORY = "cannot-disable-repository"
+ERROR_CANNOT_FETCH_SOURCES = "cannot-fetch-sources"
+ERROR_CANNOT_GET_FILELIST = "cannot-get-filelist"
+ERROR_CANNOT_GET_LOCK = "cannot-get-lock"
+ERROR_CANNOT_GET_REQUIRES = "cannot-get-requires"
+ERROR_CANNOT_INSTALL_REPO_UNSIGNED = "cannot-install-repo-unsigned"
+ERROR_CANNOT_INSTALL_SOURCE_PACKAGE = "cannot-install-source-package"
+ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE = "cannot-remove-system-package"
+ERROR_CANNOT_UPDATE_REPO_UNSIGNED = "cannot-update-repo-unsigned"
+ERROR_CANNOT_WRITE_REPO_CONFIG = "cannot-write-repo-config"
+ERROR_CREATE_THREAD_FAILED = "create-thread-failed"
+ERROR_DEP_RESOLUTION_FAILED = "dep-resolution-failed"
+ERROR_FAILED_CONFIG_PARSING = "failed-config-parsing"
+ERROR_FAILED_FINALISE = "failed-finalise"
+ERROR_FAILED_INITIALIZATION = "failed-initialization"
+ERROR_FILE_CONFLICTS = "file-conflicts"
+ERROR_FILE_NOT_FOUND = "file-not-found"
+ERROR_FILTER_INVALID = "filter-invalid"
+ERROR_GPG_FAILURE = "gpg-failure"
+ERROR_GROUP_LIST_INVALID = "group-list-invalid"
+ERROR_GROUP_NOT_FOUND = "group-not-found"
+ERROR_INCOMPATIBLE_ARCHITECTURE = "incompatible-architecture"
+ERROR_INSTALL_ROOT_INVALID = "install-root-invalid"
+ERROR_INTERNAL_ERROR = "internal-error"
+ERROR_INVALID_PACKAGE_FILE = "invalid-package-file"
+ERROR_LOCAL_INSTALL_FAILED = "local-install-failed"
+ERROR_LOCK_REQUIRED = "lock-required"
+ERROR_MEDIA_CHANGE_REQUIRED = "media-change-required"
+ERROR_MISSING_GPG_SIGNATURE = "missing-gpg-signature"
+ERROR_NOT_AUTHORIZED = "not-authorized"
+ERROR_NOT_SUPPORTED = "not-supported"
+ERROR_NO_CACHE = "no-cache"
+ERROR_NO_DISTRO_UPGRADE_DATA = "no-distro-upgrade-data"
+ERROR_NO_LICENSE_AGREEMENT = "no-license-agreement"
+ERROR_NO_MORE_MIRRORS_TO_TRY = "no-more-mirrors-to-try"
+ERROR_NO_NETWORK = "no-network"
+ERROR_NO_PACKAGES_TO_UPDATE = "no-packages-to-update"
+ERROR_NO_SPACE_ON_DEVICE = "no-space-on-device"
+ERROR_OOM = "out-of-memory"
+ERROR_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+ERROR_PACKAGE_CONFLICTS = "package-conflicts"
+ERROR_PACKAGE_CORRUPT = "package-corrupt"
+ERROR_PACKAGE_DATABASE_CHANGED = "package-database-changed"
+ERROR_PACKAGE_DOWNLOAD_FAILED = "package-download-failed"
+ERROR_PACKAGE_FAILED_TO_BUILD = "package-failed-to-build"
+ERROR_PACKAGE_FAILED_TO_CONFIGURE = "package-failed-to-configure"
+ERROR_PACKAGE_FAILED_TO_INSTALL = "package-failed-to-install"
+ERROR_PACKAGE_FAILED_TO_REMOVE = "package-failed-to-remove"
+ERROR_PACKAGE_ID_INVALID = "package-id-invalid"
+ERROR_PACKAGE_INSTALL_BLOCKED = "package-install-blocked"
+ERROR_PACKAGE_NOT_FOUND = "package-not-found"
+ERROR_PACKAGE_NOT_INSTALLED = "package-not-installed"
+ERROR_PROCESS_KILL = "process-kill"
+ERROR_PROVIDE_TYPE_NOT_SUPPORTED = "provide-type-not-supported"
+ERROR_REPO_CONFIGURATION_ERROR = "repo-configuration-error"
+ERROR_REPO_NOT_AVAILABLE = "repo-not-available"
+ERROR_REPO_NOT_FOUND = "repo-not-found"
+ERROR_RESTRICTED_DOWNLOAD = "restricted-download"
+ERROR_TRANSACTION_CANCELLED = "transaction-cancelled"
+ERROR_TRANSACTION_ERROR = "transaction-error"
+ERROR_UNFINISHED_TRANSACTION = "unfinished-transaction"
+ERROR_UNKNOWN = "unknown"
+ERROR_UPDATE_FAILED_DUE_TO_RUNNING_PROCESS = "failed-due-to-running-process"
+ERROR_UPDATE_NOT_FOUND = "update-not-found"
+EXIT_CANCELLED = "cancelled"
+EXIT_CANCELLED_PRIORITY = "cancelled-priority"
+EXIT_EULA_REQUIRED = "eula-required"
+EXIT_FAILED = "failed"
+EXIT_KEY_REQUIRED = "key-required"
+EXIT_KILLED = "killed"
+EXIT_MEDIA_CHANGE_REQUIRED = "media-change-required"
+EXIT_NEED_UNTRUSTED = "need-untrusted"
+EXIT_REPAIR_REQUIRED = "repair-required"
+EXIT_SKIP_TRANSACTION = "skip-transaction"
+EXIT_SUCCESS = "success"
+EXIT_UNKNOWN = "unknown"
+FILTER_APPLICATION = "application"
+FILTER_ARCH = "arch"
+FILTER_BASENAME = "basename"
+FILTER_COLLECTIONS = "collections"
+FILTER_DEVELOPMENT = "devel"
+FILTER_FREE = "free"
+FILTER_GUI = "gui"
+FILTER_INSTALLED = "installed"
+FILTER_NEWEST = "newest"
+FILTER_NONE = "none"
+FILTER_NOT_APPLICATION = "~application"
+FILTER_NOT_ARCH = "~arch"
+FILTER_NOT_BASENAME = "~basename"
+FILTER_NOT_COLLECTIONS = "~collections"
+FILTER_NOT_DEVELOPMENT = "~devel"
+FILTER_NOT_FREE = "~free"
+FILTER_NOT_GUI = "~gui"
+FILTER_NOT_INSTALLED = "~installed"
+FILTER_NOT_NEWEST = "~newest"
+FILTER_NOT_SOURCE = "~source"
+FILTER_NOT_SUPPORTED = "~supported"
+FILTER_NOT_VISIBLE = "~visible"
+FILTER_SOURCE = "source"
+FILTER_SUPPORTED = "supported"
+FILTER_UNKNOWN = "unknown"
+FILTER_VISIBLE = "visible"
+GROUP_ACCESSIBILITY = "accessibility"
+GROUP_ACCESSORIES = "accessories"
+GROUP_ADMIN_TOOLS = "admin-tools"
+GROUP_COLLECTIONS = "collections"
+GROUP_COMMUNICATION = "communication"
+GROUP_DESKTOP_GNOME = "desktop-gnome"
+GROUP_DESKTOP_KDE = "desktop-kde"
+GROUP_DESKTOP_OTHER = "desktop-other"
+GROUP_DESKTOP_XFCE = "desktop-xfce"
+GROUP_DOCUMENTATION = "documentation"
+GROUP_EDUCATION = "education"
+GROUP_ELECTRONICS = "electronics"
+GROUP_FONTS = "fonts"
+GROUP_GAMES = "games"
+GROUP_GRAPHICS = "graphics"
+GROUP_INTERNET = "internet"
+GROUP_LEGACY = "legacy"
+GROUP_LOCALIZATION = "localization"
+GROUP_MAPS = "maps"
+GROUP_MULTIMEDIA = "multimedia"
+GROUP_NETWORK = "network"
+GROUP_NEWEST = "newest"
+GROUP_OFFICE = "office"
+GROUP_OTHER = "other"
+GROUP_POWER_MANAGEMENT = "power-management"
+GROUP_PROGRAMMING = "programming"
+GROUP_PUBLISHING = "publishing"
+GROUP_REPOS = "repos"
+GROUP_SCIENCE = "science"
+GROUP_SECURITY = "security"
+GROUP_SERVERS = "servers"
+GROUP_SYSTEM = "system"
+GROUP_UNKNOWN = "unknown"
+GROUP_VENDOR = "vendor"
+GROUP_VIRTUALIZATION = "virtualization"
+INFO_AVAILABLE = "available"
+INFO_BLOCKED = "blocked"
+INFO_BUGFIX = "bugfix"
+INFO_CLEANUP = "cleanup"
+INFO_COLLECTION_AVAILABLE = "collection-available"
+INFO_COLLECTION_INSTALLED = "collection-installed"
+INFO_DECOMPRESSING = "decompressing"
+INFO_DOWNGRADING = "downgrading"
+INFO_DOWNLOADING = "downloading"
+INFO_ENHANCEMENT = "enhancement"
+INFO_FINISHED = "finished"
+INFO_IMPORTANT = "important"
+INFO_INSTALLED = "installed"
+INFO_INSTALLING = "installing"
+INFO_LOW = "low"
+INFO_NORMAL = "normal"
+INFO_OBSOLETING = "obsoleting"
+INFO_PREPARING = "preparing"
+INFO_REINSTALLING = "reinstalling"
+INFO_REMOVING = "removing"
+INFO_SECURITY = "security"
+INFO_TRUSTED = "trusted"
+INFO_UNKNOWN = "unknown"
+INFO_UNTRUSTED = "untrusted"
+INFO_UPDATING = "updating"
+MEDIA_TYPE_CD = "cd"
+MEDIA_TYPE_DISC = "disc"
+MEDIA_TYPE_DVD = "dvd"
+MEDIA_TYPE_UNKNOWN = "unknown"
+MESSAGE_AUTOREMOVE_IGNORED = "autoremove-ignored"
+MESSAGE_BACKEND_ERROR = "backend-error"
+MESSAGE_BROKEN_MIRROR = "broken-mirror"
+MESSAGE_CACHE_BEING_REBUILT = "cache-being-rebuilt"
+MESSAGE_CONFIG_FILES_CHANGED = "config-files-changed"
+MESSAGE_CONNECTION_REFUSED = "connection-refused"
+MESSAGE_COULD_NOT_FIND_PACKAGE = "could-not-find-package"
+MESSAGE_DAEMON_ERROR = "daemon-error"
+MESSAGE_NEWER_PACKAGE_EXISTS = "newer-package-exists"
+MESSAGE_OTHER_UPDATES_HELD_BACK = "other-updates-held-back"
+MESSAGE_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+MESSAGE_PARAMETER_INVALID = "parameter-invalid"
+MESSAGE_PRIORITY_INVALID = "priority-invalid"
+MESSAGE_REPO_FOR_DEVELOPERS_ONLY = "repo-for-developers-only"
+MESSAGE_REPO_METADATA_DOWNLOAD_FAILED = "repo-metadata-download-failed"
+MESSAGE_UNKNOWN = "unknown"
+NETWORK_MOBILE = "mobile"
+NETWORK_OFFLINE = "offline"
+NETWORK_ONLINE = "online"
+NETWORK_UNKNOWN = "unknown"
+NETWORK_WIFI = "wifi"
+NETWORK_WIRED = "wired"
+PROVIDES_ANY = "any"
+PROVIDES_CODEC = "codec"
+PROVIDES_FONT = "font"
+PROVIDES_HARDWARE_DRIVER = "driver"
+PROVIDES_LANGUAGE_SUPPORT = "language-support"
+PROVIDES_MIMETYPE = "mimetype"
+PROVIDES_MODALIAS = "modalias"
+PROVIDES_PLASMA_SERVICE = "plasma-service"
+PROVIDES_POSTSCRIPT_DRIVER = "postscript-driver"
+PROVIDES_PYTHON = "python-module"
+PROVIDES_SHARED_LIB = "shared-library"
+PROVIDES_UNKNOWN = "unknown"
+RESTART_APPLICATION = "application"
+RESTART_NONE = "none"
+RESTART_SECURITY_SESSION = "security-session"
+RESTART_SECURITY_SYSTEM = "security-system"
+RESTART_SESSION = "session"
+RESTART_SYSTEM = "system"
+RESTART_UNKNOWN = "unknown"
+ROLE_ACCEPT_EULA = "accept-eula"
+ROLE_CANCEL = "cancel"
+ROLE_DOWNLOAD_PACKAGES = "download-packages"
+ROLE_GET_CATEGORIES = "get-categories"
+ROLE_GET_DEPENDS = "get-depends"
+ROLE_GET_DETAILS = "get-details"
+ROLE_GET_DISTRO_UPGRADES = "get-distro-upgrades"
+ROLE_GET_FILES = "get-files"
+ROLE_GET_OLD_TRANSACTIONS = "get-old-transactions"
+ROLE_GET_PACKAGES = "get-packages"
+ROLE_GET_REPO_LIST = "get-repo-list"
+ROLE_GET_REQUIRES = "get-requires"
+ROLE_GET_UPDATES = "get-updates"
+ROLE_GET_UPDATE_DETAIL = "get-update-detail"
+ROLE_INSTALL_FILES = "install-files"
+ROLE_INSTALL_PACKAGES = "install-packages"
+ROLE_INSTALL_SIGNATURE = "install-signature"
+ROLE_REFRESH_CACHE = "refresh-cache"
+ROLE_REMOVE_PACKAGES = "remove-packages"
+ROLE_REPAIR_SYSTEM = "repair-system"
+ROLE_REPO_ENABLE = "repo-enable"
+ROLE_REPO_SET_DATA = "repo-set-data"
+ROLE_RESOLVE = "resolve"
+ROLE_SEARCH_DETAILS = "search-details"
+ROLE_SEARCH_FILE = "search-file"
+ROLE_SEARCH_GROUP = "search-group"
+ROLE_SEARCH_NAME = "search-name"
+ROLE_UNKNOWN = "unknown"
+ROLE_UPDATE_PACKAGES = "update-packages"
+ROLE_UPGRADE_SYSTEM = "upgrade-system"
+ROLE_WHAT_PROVIDES = "what-provides"
+SIGTYPE_GPG = "gpg"
+SIGTYPE_UNKNOWN = "unknown"
+STATUS_CANCEL = "cancel"
+STATUS_CHECK_EXECUTABLE_FILES = "check-executable-files"
+STATUS_CHECK_LIBRARIES = "check-libraries"
+STATUS_CLEANUP = "cleanup"
+STATUS_COMMIT = "commit"
+STATUS_COPY_FILES = "copy-files"
+STATUS_DEP_RESOLVE = "dep-resolve"
+STATUS_DOWNLOAD = "download"
+STATUS_DOWNLOAD_CHANGELOG = "download-changelog"
+STATUS_DOWNLOAD_FILELIST = "download-filelist"
+STATUS_DOWNLOAD_GROUP = "download-group"
+STATUS_DOWNLOAD_PACKAGELIST = "download-packagelist"
+STATUS_DOWNLOAD_REPOSITORY = "download-repository"
+STATUS_DOWNLOAD_UPDATEINFO = "download-updateinfo"
+STATUS_FINISHED = "finished"
+STATUS_GENERATE_PACKAGE_LIST = "generate-package-list"
+STATUS_INFO = "info"
+STATUS_INSTALL = "install"
+STATUS_LOADING_CACHE = "loading-cache"
+STATUS_OBSOLETE = "obsolete"
+STATUS_QUERY = "query"
+STATUS_REFRESH_CACHE = "refresh-cache"
+STATUS_REMOVE = "remove"
+STATUS_REPACKAGING = "repackaging"
+STATUS_REQUEST = "request"
+STATUS_RUNNING = "running"
+STATUS_SCAN_APPLICATIONS = "scan-applications"
+STATUS_SCAN_PROCESS_LIST = "scan-process-list"
+STATUS_SETUP = "setup"
+STATUS_SIG_CHECK = "sig-check"
+STATUS_TEST_COMMIT = "test-commit"
+STATUS_UNKNOWN = "unknown"
+STATUS_UPDATE = "update"
+STATUS_WAIT = "wait"
+STATUS_WAITING_FOR_AUTH = "waiting-for-auth"
+STATUS_WAITING_FOR_LOCK = "waiting-for-lock"
+TRANSACTION_FLAG_NONE = "none"
+TRANSACTION_FLAG_ONLY_DOWNLOAD = "only-download"
+TRANSACTION_FLAG_ONLY_TRUSTED = "only-trusted"
+TRANSACTION_FLAG_SIMULATE = "simulate"
+UPDATE_STATE_STABLE = "stable"
+UPDATE_STATE_TESTING = "testing"
+UPDATE_STATE_UNKNOWN = "unknown"
+UPDATE_STATE_UNSTABLE = "unstable"
+UPGRADE_KIND_COMPLETE = "complete"
+UPGRADE_KIND_DEFAULT = "default"
+UPGRADE_KIND_MINIMAL = "minimal"
+UPGRADE_KIND_UNKNOWN = "unknown"
+# This file was autogenerated from ../../lib/packagekit-glib2/pk-enum.c by enum-converter.py
+
+class PackageKitEnum:
+ exit = ( "unknown", "success", "failed", "cancelled", "key-required", "eula-required", "media-change-required", "killed", "need-untrusted", "cancelled-priority", "skip-transaction", "repair-required", )
+ status = ( "unknown", "wait", "setup", "running", "query", "info", "refresh-cache", "remove", "download", "install", "update", "cleanup", "obsolete", "dep-resolve", "sig-check", "test-commit", "commit", "request", "finished", "cancel", "download-repository", "download-packagelist", "download-filelist", "download-changelog", "download-group", "download-updateinfo", "repackaging", "loading-cache", "scan-applications", "generate-package-list", "waiting-for-lock", "waiting-for-auth", "scan-process-list", "check-executable-files", "check-libraries", "copy-files", )
+ role = ( "unknown", "cancel", "get-depends", "get-details", "get-files", "get-packages", "get-repo-list", "get-requires", "get-update-detail", "get-updates", "install-files", "install-packages", "install-signature", "refresh-cache", "remove-packages", "repo-enable", "repo-set-data", "resolve", "search-details", "search-file", "search-group", "search-name", "update-packages", "what-provides", "accept-eula", "download-packages", "get-distro-upgrades", "get-categories", "get-old-transactions", "upgrade-system", "repair-system", )
+ error = ( "unknown", "out-of-memory", "no-cache", "no-network", "not-supported", "internal-error", "gpg-failure", "filter-invalid", "package-id-invalid", "transaction-error", "transaction-cancelled", "package-not-installed", "package-not-found", "package-already-installed", "package-download-failed", "group-not-found", "group-list-invalid", "dep-resolution-failed", "create-thread-failed", "repo-not-found", "cannot-remove-system-package", "process-kill", "failed-initialization", "failed-finalise", "failed-config-parsing", "cannot-cancel", "cannot-get-lock", "no-packages-to-update", "cannot-write-repo-config", "local-install-failed", "bad-gpg-signature", "missing-gpg-signature", "cannot-install-source-package", "repo-configuration-error", "no-license-agreement", "file-conflicts", "package-conflicts", "repo-not-available", "invalid-package-file", "package-install-blocked", "package-corrupt", "all-packages-already-installed", "file-not-found", "no-more-mirrors-to-try", "no-distro-upgrade-data", "incompatible-architecture", "no-space-on-device", "media-change-required", "not-authorized", "update-not-found", "cannot-install-repo-unsigned", "cannot-update-repo-unsigned", "cannot-get-filelist", "cannot-get-requires", "cannot-disable-repository", "restricted-download", "package-failed-to-configure", "package-failed-to-build", "package-failed-to-install", "package-failed-to-remove", "failed-due-to-running-process", "package-database-changed", "provide-type-not-supported", "install-root-invalid", "cannot-fetch-sources", "cancelled-priority", "unfinished-transaction", "lock-required", )
+ restart = ( "unknown", "none", "system", "session", "application", "security-system", "security-session", )
+ message = ( "unknown", "broken-mirror", "connection-refused", "parameter-invalid", "priority-invalid", "backend-error", "daemon-error", "cache-being-rebuilt", "newer-package-exists", "could-not-find-package", "config-files-changed", "package-already-installed", "autoremove-ignored", "repo-metadata-download-failed", "repo-for-developers-only", "other-updates-held-back", )
+ filter = ( "unknown", "none", "installed", "~installed", "devel", "~devel", "gui", "~gui", "free", "~free", "visible", "~visible", "supported", "~supported", "basename", "~basename", "newest", "~newest", "arch", "~arch", "source", "~source", "collections", "~collections", "application", "~application", )
+ group = ( "unknown", "accessibility", "accessories", "education", "games", "graphics", "internet", "office", "other", "programming", "multimedia", "system", "desktop-gnome", "desktop-kde", "desktop-xfce", "desktop-other", "publishing", "servers", "fonts", "admin-tools", "legacy", "localization", "virtualization", "power-management", "security", "communication", "network", "maps", "repos", "science", "documentation", "electronics", "collections", "vendor", "newest", )
+ update_state = ( "unknown", "testing", "unstable", "stable", )
+ info = ( "unknown", "installed", "available", "low", "normal", "important", "security", "bugfix", "enhancement", "blocked", "downloading", "updating", "installing", "removing", "cleanup", "obsoleting", "collection-installed", "collection-available", "finished", "reinstalling", "downgrading", "preparing", "decompressing", "untrusted", "trusted", )
+ sig_type = ( "unknown", "gpg", )
+ upgrade = ( "unknown", "stable", "unstable", )
+ provides = ( "unknown", "any", "modalias", "codec", "mimetype", "driver", "font", "postscript-driver", "plasma-service", "shared-library", "python-module", "language-support", )
+ network = ( "unknown", "offline", "online", "wired", "wifi", "mobile", )
+ media_type = ( "unknown", "cd", "dvd", "disc", )
+ authorize_type = ( "unknown", "yes", "no", "interactive", )
+ upgrade_kind = ( "unknown", "minimal", "default", "complete", )
+ transaction_flag = ( "none", "only-trusted", "simulate", "only-download", )
+
+# Constants
+
+AUTHORIZE_INTERACTIVE = "interactive"
+AUTHORIZE_NO = "no"
+AUTHORIZE_UNKNOWN = "unknown"
+AUTHORIZE_YES = "yes"
+DISTRO_UPGRADE_STABLE = "stable"
+DISTRO_UPGRADE_UNKNOWN = "unknown"
+DISTRO_UPGRADE_UNSTABLE = "unstable"
+ERROR_ALL_PACKAGES_ALREADY_INSTALLED = "all-packages-already-installed"
+ERROR_BAD_GPG_SIGNATURE = "bad-gpg-signature"
+ERROR_CANCELLED_PRIORITY = "cancelled-priority"
+ERROR_CANNOT_CANCEL = "cannot-cancel"
+ERROR_CANNOT_DISABLE_REPOSITORY = "cannot-disable-repository"
+ERROR_CANNOT_FETCH_SOURCES = "cannot-fetch-sources"
+ERROR_CANNOT_GET_FILELIST = "cannot-get-filelist"
+ERROR_CANNOT_GET_LOCK = "cannot-get-lock"
+ERROR_CANNOT_GET_REQUIRES = "cannot-get-requires"
+ERROR_CANNOT_INSTALL_REPO_UNSIGNED = "cannot-install-repo-unsigned"
+ERROR_CANNOT_INSTALL_SOURCE_PACKAGE = "cannot-install-source-package"
+ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE = "cannot-remove-system-package"
+ERROR_CANNOT_UPDATE_REPO_UNSIGNED = "cannot-update-repo-unsigned"
+ERROR_CANNOT_WRITE_REPO_CONFIG = "cannot-write-repo-config"
+ERROR_CREATE_THREAD_FAILED = "create-thread-failed"
+ERROR_DEP_RESOLUTION_FAILED = "dep-resolution-failed"
+ERROR_FAILED_CONFIG_PARSING = "failed-config-parsing"
+ERROR_FAILED_FINALISE = "failed-finalise"
+ERROR_FAILED_INITIALIZATION = "failed-initialization"
+ERROR_FILE_CONFLICTS = "file-conflicts"
+ERROR_FILE_NOT_FOUND = "file-not-found"
+ERROR_FILTER_INVALID = "filter-invalid"
+ERROR_GPG_FAILURE = "gpg-failure"
+ERROR_GROUP_LIST_INVALID = "group-list-invalid"
+ERROR_GROUP_NOT_FOUND = "group-not-found"
+ERROR_INCOMPATIBLE_ARCHITECTURE = "incompatible-architecture"
+ERROR_INSTALL_ROOT_INVALID = "install-root-invalid"
+ERROR_INTERNAL_ERROR = "internal-error"
+ERROR_INVALID_PACKAGE_FILE = "invalid-package-file"
+ERROR_LOCAL_INSTALL_FAILED = "local-install-failed"
+ERROR_LOCK_REQUIRED = "lock-required"
+ERROR_MEDIA_CHANGE_REQUIRED = "media-change-required"
+ERROR_MISSING_GPG_SIGNATURE = "missing-gpg-signature"
+ERROR_NOT_AUTHORIZED = "not-authorized"
+ERROR_NOT_SUPPORTED = "not-supported"
+ERROR_NO_CACHE = "no-cache"
+ERROR_NO_DISTRO_UPGRADE_DATA = "no-distro-upgrade-data"
+ERROR_NO_LICENSE_AGREEMENT = "no-license-agreement"
+ERROR_NO_MORE_MIRRORS_TO_TRY = "no-more-mirrors-to-try"
+ERROR_NO_NETWORK = "no-network"
+ERROR_NO_PACKAGES_TO_UPDATE = "no-packages-to-update"
+ERROR_NO_SPACE_ON_DEVICE = "no-space-on-device"
+ERROR_OOM = "out-of-memory"
+ERROR_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+ERROR_PACKAGE_CONFLICTS = "package-conflicts"
+ERROR_PACKAGE_CORRUPT = "package-corrupt"
+ERROR_PACKAGE_DATABASE_CHANGED = "package-database-changed"
+ERROR_PACKAGE_DOWNLOAD_FAILED = "package-download-failed"
+ERROR_PACKAGE_FAILED_TO_BUILD = "package-failed-to-build"
+ERROR_PACKAGE_FAILED_TO_CONFIGURE = "package-failed-to-configure"
+ERROR_PACKAGE_FAILED_TO_INSTALL = "package-failed-to-install"
+ERROR_PACKAGE_FAILED_TO_REMOVE = "package-failed-to-remove"
+ERROR_PACKAGE_ID_INVALID = "package-id-invalid"
+ERROR_PACKAGE_INSTALL_BLOCKED = "package-install-blocked"
+ERROR_PACKAGE_NOT_FOUND = "package-not-found"
+ERROR_PACKAGE_NOT_INSTALLED = "package-not-installed"
+ERROR_PROCESS_KILL = "process-kill"
+ERROR_PROVIDE_TYPE_NOT_SUPPORTED = "provide-type-not-supported"
+ERROR_REPO_CONFIGURATION_ERROR = "repo-configuration-error"
+ERROR_REPO_NOT_AVAILABLE = "repo-not-available"
+ERROR_REPO_NOT_FOUND = "repo-not-found"
+ERROR_RESTRICTED_DOWNLOAD = "restricted-download"
+ERROR_TRANSACTION_CANCELLED = "transaction-cancelled"
+ERROR_TRANSACTION_ERROR = "transaction-error"
+ERROR_UNFINISHED_TRANSACTION = "unfinished-transaction"
+ERROR_UNKNOWN = "unknown"
+ERROR_UPDATE_FAILED_DUE_TO_RUNNING_PROCESS = "failed-due-to-running-process"
+ERROR_UPDATE_NOT_FOUND = "update-not-found"
+EXIT_CANCELLED = "cancelled"
+EXIT_CANCELLED_PRIORITY = "cancelled-priority"
+EXIT_EULA_REQUIRED = "eula-required"
+EXIT_FAILED = "failed"
+EXIT_KEY_REQUIRED = "key-required"
+EXIT_KILLED = "killed"
+EXIT_MEDIA_CHANGE_REQUIRED = "media-change-required"
+EXIT_NEED_UNTRUSTED = "need-untrusted"
+EXIT_REPAIR_REQUIRED = "repair-required"
+EXIT_SKIP_TRANSACTION = "skip-transaction"
+EXIT_SUCCESS = "success"
+EXIT_UNKNOWN = "unknown"
+FILTER_APPLICATION = "application"
+FILTER_ARCH = "arch"
+FILTER_BASENAME = "basename"
+FILTER_COLLECTIONS = "collections"
+FILTER_DEVELOPMENT = "devel"
+FILTER_FREE = "free"
+FILTER_GUI = "gui"
+FILTER_INSTALLED = "installed"
+FILTER_NEWEST = "newest"
+FILTER_NONE = "none"
+FILTER_NOT_APPLICATION = "~application"
+FILTER_NOT_ARCH = "~arch"
+FILTER_NOT_BASENAME = "~basename"
+FILTER_NOT_COLLECTIONS = "~collections"
+FILTER_NOT_DEVELOPMENT = "~devel"
+FILTER_NOT_FREE = "~free"
+FILTER_NOT_GUI = "~gui"
+FILTER_NOT_INSTALLED = "~installed"
+FILTER_NOT_NEWEST = "~newest"
+FILTER_NOT_SOURCE = "~source"
+FILTER_NOT_SUPPORTED = "~supported"
+FILTER_NOT_VISIBLE = "~visible"
+FILTER_SOURCE = "source"
+FILTER_SUPPORTED = "supported"
+FILTER_UNKNOWN = "unknown"
+FILTER_VISIBLE = "visible"
+GROUP_ACCESSIBILITY = "accessibility"
+GROUP_ACCESSORIES = "accessories"
+GROUP_ADMIN_TOOLS = "admin-tools"
+GROUP_COLLECTIONS = "collections"
+GROUP_COMMUNICATION = "communication"
+GROUP_DESKTOP_GNOME = "desktop-gnome"
+GROUP_DESKTOP_KDE = "desktop-kde"
+GROUP_DESKTOP_OTHER = "desktop-other"
+GROUP_DESKTOP_XFCE = "desktop-xfce"
+GROUP_DOCUMENTATION = "documentation"
+GROUP_EDUCATION = "education"
+GROUP_ELECTRONICS = "electronics"
+GROUP_FONTS = "fonts"
+GROUP_GAMES = "games"
+GROUP_GRAPHICS = "graphics"
+GROUP_INTERNET = "internet"
+GROUP_LEGACY = "legacy"
+GROUP_LOCALIZATION = "localization"
+GROUP_MAPS = "maps"
+GROUP_MULTIMEDIA = "multimedia"
+GROUP_NETWORK = "network"
+GROUP_NEWEST = "newest"
+GROUP_OFFICE = "office"
+GROUP_OTHER = "other"
+GROUP_POWER_MANAGEMENT = "power-management"
+GROUP_PROGRAMMING = "programming"
+GROUP_PUBLISHING = "publishing"
+GROUP_REPOS = "repos"
+GROUP_SCIENCE = "science"
+GROUP_SECURITY = "security"
+GROUP_SERVERS = "servers"
+GROUP_SYSTEM = "system"
+GROUP_UNKNOWN = "unknown"
+GROUP_VENDOR = "vendor"
+GROUP_VIRTUALIZATION = "virtualization"
+INFO_AVAILABLE = "available"
+INFO_BLOCKED = "blocked"
+INFO_BUGFIX = "bugfix"
+INFO_CLEANUP = "cleanup"
+INFO_COLLECTION_AVAILABLE = "collection-available"
+INFO_COLLECTION_INSTALLED = "collection-installed"
+INFO_DECOMPRESSING = "decompressing"
+INFO_DOWNGRADING = "downgrading"
+INFO_DOWNLOADING = "downloading"
+INFO_ENHANCEMENT = "enhancement"
+INFO_FINISHED = "finished"
+INFO_IMPORTANT = "important"
+INFO_INSTALLED = "installed"
+INFO_INSTALLING = "installing"
+INFO_LOW = "low"
+INFO_NORMAL = "normal"
+INFO_OBSOLETING = "obsoleting"
+INFO_PREPARING = "preparing"
+INFO_REINSTALLING = "reinstalling"
+INFO_REMOVING = "removing"
+INFO_SECURITY = "security"
+INFO_TRUSTED = "trusted"
+INFO_UNKNOWN = "unknown"
+INFO_UNTRUSTED = "untrusted"
+INFO_UPDATING = "updating"
+MEDIA_TYPE_CD = "cd"
+MEDIA_TYPE_DISC = "disc"
+MEDIA_TYPE_DVD = "dvd"
+MEDIA_TYPE_UNKNOWN = "unknown"
+MESSAGE_AUTOREMOVE_IGNORED = "autoremove-ignored"
+MESSAGE_BACKEND_ERROR = "backend-error"
+MESSAGE_BROKEN_MIRROR = "broken-mirror"
+MESSAGE_CACHE_BEING_REBUILT = "cache-being-rebuilt"
+MESSAGE_CONFIG_FILES_CHANGED = "config-files-changed"
+MESSAGE_CONNECTION_REFUSED = "connection-refused"
+MESSAGE_COULD_NOT_FIND_PACKAGE = "could-not-find-package"
+MESSAGE_DAEMON_ERROR = "daemon-error"
+MESSAGE_NEWER_PACKAGE_EXISTS = "newer-package-exists"
+MESSAGE_OTHER_UPDATES_HELD_BACK = "other-updates-held-back"
+MESSAGE_PACKAGE_ALREADY_INSTALLED = "package-already-installed"
+MESSAGE_PARAMETER_INVALID = "parameter-invalid"
+MESSAGE_PRIORITY_INVALID = "priority-invalid"
+MESSAGE_REPO_FOR_DEVELOPERS_ONLY = "repo-for-developers-only"
+MESSAGE_REPO_METADATA_DOWNLOAD_FAILED = "repo-metadata-download-failed"
+MESSAGE_UNKNOWN = "unknown"
+NETWORK_MOBILE = "mobile"
+NETWORK_OFFLINE = "offline"
+NETWORK_ONLINE = "online"
+NETWORK_UNKNOWN = "unknown"
+NETWORK_WIFI = "wifi"
+NETWORK_WIRED = "wired"
+PROVIDES_ANY = "any"
+PROVIDES_CODEC = "codec"
+PROVIDES_FONT = "font"
+PROVIDES_HARDWARE_DRIVER = "driver"
+PROVIDES_LANGUAGE_SUPPORT = "language-support"
+PROVIDES_MIMETYPE = "mimetype"
+PROVIDES_MODALIAS = "modalias"
+PROVIDES_PLASMA_SERVICE = "plasma-service"
+PROVIDES_POSTSCRIPT_DRIVER = "postscript-driver"
+PROVIDES_PYTHON = "python-module"
+PROVIDES_SHARED_LIB = "shared-library"
+PROVIDES_UNKNOWN = "unknown"
+RESTART_APPLICATION = "application"
+RESTART_NONE = "none"
+RESTART_SECURITY_SESSION = "security-session"
+RESTART_SECURITY_SYSTEM = "security-system"
+RESTART_SESSION = "session"
+RESTART_SYSTEM = "system"
+RESTART_UNKNOWN = "unknown"
+ROLE_ACCEPT_EULA = "accept-eula"
+ROLE_CANCEL = "cancel"
+ROLE_DOWNLOAD_PACKAGES = "download-packages"
+ROLE_GET_CATEGORIES = "get-categories"
+ROLE_GET_DEPENDS = "get-depends"
+ROLE_GET_DETAILS = "get-details"
+ROLE_GET_DISTRO_UPGRADES = "get-distro-upgrades"
+ROLE_GET_FILES = "get-files"
+ROLE_GET_OLD_TRANSACTIONS = "get-old-transactions"
+ROLE_GET_PACKAGES = "get-packages"
+ROLE_GET_REPO_LIST = "get-repo-list"
+ROLE_GET_REQUIRES = "get-requires"
+ROLE_GET_UPDATES = "get-updates"
+ROLE_GET_UPDATE_DETAIL = "get-update-detail"
+ROLE_INSTALL_FILES = "install-files"
+ROLE_INSTALL_PACKAGES = "install-packages"
+ROLE_INSTALL_SIGNATURE = "install-signature"
+ROLE_REFRESH_CACHE = "refresh-cache"
+ROLE_REMOVE_PACKAGES = "remove-packages"
+ROLE_REPAIR_SYSTEM = "repair-system"
+ROLE_REPO_ENABLE = "repo-enable"
+ROLE_REPO_SET_DATA = "repo-set-data"
+ROLE_RESOLVE = "resolve"
+ROLE_SEARCH_DETAILS = "search-details"
+ROLE_SEARCH_FILE = "search-file"
+ROLE_SEARCH_GROUP = "search-group"
+ROLE_SEARCH_NAME = "search-name"
+ROLE_UNKNOWN = "unknown"
+ROLE_UPDATE_PACKAGES = "update-packages"
+ROLE_UPGRADE_SYSTEM = "upgrade-system"
+ROLE_WHAT_PROVIDES = "what-provides"
+SIGTYPE_GPG = "gpg"
+SIGTYPE_UNKNOWN = "unknown"
+STATUS_CANCEL = "cancel"
+STATUS_CHECK_EXECUTABLE_FILES = "check-executable-files"
+STATUS_CHECK_LIBRARIES = "check-libraries"
+STATUS_CLEANUP = "cleanup"
+STATUS_COMMIT = "commit"
+STATUS_COPY_FILES = "copy-files"
+STATUS_DEP_RESOLVE = "dep-resolve"
+STATUS_DOWNLOAD = "download"
+STATUS_DOWNLOAD_CHANGELOG = "download-changelog"
+STATUS_DOWNLOAD_FILELIST = "download-filelist"
+STATUS_DOWNLOAD_GROUP = "download-group"
+STATUS_DOWNLOAD_PACKAGELIST = "download-packagelist"
+STATUS_DOWNLOAD_REPOSITORY = "download-repository"
+STATUS_DOWNLOAD_UPDATEINFO = "download-updateinfo"
+STATUS_FINISHED = "finished"
+STATUS_GENERATE_PACKAGE_LIST = "generate-package-list"
+STATUS_INFO = "info"
+STATUS_INSTALL = "install"
+STATUS_LOADING_CACHE = "loading-cache"
+STATUS_OBSOLETE = "obsolete"
+STATUS_QUERY = "query"
+STATUS_REFRESH_CACHE = "refresh-cache"
+STATUS_REMOVE = "remove"
+STATUS_REPACKAGING = "repackaging"
+STATUS_REQUEST = "request"
+STATUS_RUNNING = "running"
+STATUS_SCAN_APPLICATIONS = "scan-applications"
+STATUS_SCAN_PROCESS_LIST = "scan-process-list"
+STATUS_SETUP = "setup"
+STATUS_SIG_CHECK = "sig-check"
+STATUS_TEST_COMMIT = "test-commit"
+STATUS_UNKNOWN = "unknown"
+STATUS_UPDATE = "update"
+STATUS_WAIT = "wait"
+STATUS_WAITING_FOR_AUTH = "waiting-for-auth"
+STATUS_WAITING_FOR_LOCK = "waiting-for-lock"
+TRANSACTION_FLAG_NONE = "none"
+TRANSACTION_FLAG_ONLY_DOWNLOAD = "only-download"
+TRANSACTION_FLAG_ONLY_TRUSTED = "only-trusted"
+TRANSACTION_FLAG_SIMULATE = "simulate"
+UPDATE_STATE_STABLE = "stable"
+UPDATE_STATE_TESTING = "testing"
+UPDATE_STATE_UNKNOWN = "unknown"
+UPDATE_STATE_UNSTABLE = "unstable"
+UPGRADE_KIND_COMPLETE = "complete"
+UPGRADE_KIND_DEFAULT = "default"
+UPGRADE_KIND_MINIMAL = "minimal"
+UPGRADE_KIND_UNKNOWN = "unknown"
diff --git a/aptdaemon/pkutils.py b/aptdaemon/pkutils.py
new file mode 100644
index 0000000..2413ca4
--- /dev/null
+++ b/aptdaemon/pkutils.py
@@ -0,0 +1,46 @@
+# !/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Provides helper functions for the PackageKit layer
+
+Copyright (C) 2007 Ali Sabil <ali.sabil@gmail.com>
+Copyright (C) 2007 Tom Parker <palfrey@tevp.net>
+Copyright (C) 2008-2013 Sebastian Heinlein <glatzor@ubuntu.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.
+"""
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+
+def bitfield_summarize(*enums):
+ """Return the bitfield with the given PackageKit enums."""
+ field = 0
+ for enum in enums:
+ field |= 2 ** int(enum)
+ return field
+
+
+def bitfield_add(field, enum):
+ """Add a PackageKit enum to a given field"""
+ field |= 2 ** int(enum)
+ return field
+
+
+def bitfield_remove(field, enum):
+ """Remove a PackageKit enum to a given field"""
+ field = field ^ 2 ** int(enum)
+ return field
+
+
+def bitfield_contains(field, enum):
+ """Return True if a bitfield contains the given PackageKit enum"""
+ return field & 2 ** int(enum)
+
+
+# vim: ts=4 et sts=4
diff --git a/aptdaemon/policykit1.py b/aptdaemon/policykit1.py
new file mode 100644
index 0000000..9a15513
--- /dev/null
+++ b/aptdaemon/policykit1.py
@@ -0,0 +1,175 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides access to PolicyKit privilege mangement using gdefer Deferreds."""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("check_authorization_by_name", "check_authorization_by_pid",
+ "get_pid_from_dbus_name", "get_uid_from_dbus_name",
+ "CHECK_AUTH_ALLOW_USER_INTERACTION", "CHECK_AUTH_NONE",
+ "PK_ACTION_ADD_REMOVE_VENDOR_KEY", "PK_ACTION_CANCEL_FOREIGN",
+ "PK_ACTION_CHANGE_REPOSITORY",
+ "PK_ACTION_CHANGE_CONIFG",
+ "PK_ACTION_GET_TRUSTED_VENDOR_KEYS",
+ "PK_ACTION_INSTALL_FILE",
+ "PK_ACTION_INSTALL_OR_REMOVE_PACKAGES",
+ "PK_ACTION_INSTALL_PACKAGES_FROM_NEW_REPO",
+ "PK_ACTION_INSTALL_PACKAGES_FROM_HIGH_TRUST_REPO",
+ "PK_ACTION_INSTALL_PURCHASED_PACKAGES",
+ "PK_ACTION_UPDATE_CACHE", "PK_ACTION_UPGRADE_PACKAGES",
+ "PK_ACTION_SET_PROXY", "PK_ACTION_CLEAN")
+
+import dbus
+
+from defer import Deferred, inline_callbacks, return_value
+from .errors import NotAuthorizedError, AuthorizationFailed
+
+PK_ACTION_INSTALL_OR_REMOVE_PACKAGES = (
+ "org.debian.apt.install-or-remove-packages")
+PK_ACTION_INSTALL_PURCHASED_PACKAGES = (
+ "org.debian.apt.install-purchased-packages")
+PK_ACTION_INSTALL_PACKAGES_FROM_NEW_REPO = (
+ "org.debian.apt.install-packages-from-new-repo")
+PK_ACTION_INSTALL_PACKAGES_FROM_HIGH_TRUST_REPO = (
+ "org.debian.apt.install-packages.high-trust-repo")
+PK_ACTION_INSTALL_FILE = "org.debian.apt.install-file"
+PK_ACTION_UPGRADE_PACKAGES = "org.debian.apt.upgrade-packages"
+PK_ACTION_UPDATE_CACHE = "org.debian.apt.update-cache"
+PK_ACTION_CANCEL_FOREIGN = "org.debian.apt.cancel-foreign"
+PK_ACTION_GET_TRUSTED_VENDOR_KEYS = "org.debian.apt.get-trusted-vendor-keys"
+PK_ACTION_CHANGE_REPOSITORY = "org.debian.apt.change-repository"
+PK_ACTION_CHANGE_CONFIG = "org.debian.apt.change-config"
+PK_ACTION_SET_PROXY = "org.debian.apt.set-proxy"
+PK_ACTION_CLEAN = "org.debian.apt.clean"
+
+CHECK_AUTH_NONE = 0
+CHECK_AUTH_ALLOW_USER_INTERACTION = 1
+
+
+def check_authorization_by_name(dbus_name, action_id, timeout=86400, bus=None,
+ flags=None):
+ """Check if the given sender is authorized for the specified action.
+
+ If the sender is not authorized raise NotAuthorizedError.
+
+ Keyword arguments:
+ dbus_name -- D-Bus name of the subject
+ action_id -- the PolicyKit policy name of the action
+ timeout -- time in seconds for the user to authenticate
+ bus -- the D-Bus connection (defaults to the system bus)
+ flags -- optional flags to control the authentication process
+ """
+ subject = ("system-bus-name", {"name": dbus_name})
+ return _check_authorization(subject, action_id, timeout, bus, flags)
+
+
+def check_authorization_by_pid(pid, action_id, timeout=86400, bus=None,
+ flags=None):
+ """Check if the given process is authorized for the specified action.
+
+ If the sender is not authorized raise NotAuthorizedError.
+
+ Keyword arguments:
+ pid -- id of the process
+ action_id -- the PolicyKit policy name of the action
+ timeout -- time in seconds for the user to authenticate
+ bus -- the D-Bus connection (defaults to the system bus)
+ flags -- optional flags to control the authentication process
+ """
+ subject = ("unix-process", {"pid": pid})
+ return _check_authorization(subject, action_id, timeout, bus, flags)
+
+
+def _check_authorization(subject, action_id, timeout, bus, flags=None):
+ def policykit_done(xxx_todo_changeme):
+ (authorized, challenged, auth_details) = xxx_todo_changeme
+ if authorized:
+ deferred.callback(auth_details)
+ elif challenged:
+ deferred.errback(AuthorizationFailed(subject, action_id))
+ else:
+ deferred.errback(NotAuthorizedError(subject, action_id))
+ if not bus:
+ bus = dbus.SystemBus()
+ # Set the default flags
+ if flags is None:
+ flags = CHECK_AUTH_ALLOW_USER_INTERACTION
+ deferred = Deferred()
+ pk = bus.get_object("org.freedesktop.PolicyKit1",
+ "/org/freedesktop/PolicyKit1/Authority")
+ details = {}
+ pk.CheckAuthorization(
+ subject, action_id, details, flags, "",
+ dbus_interface="org.freedesktop.PolicyKit1.Authority",
+ timeout=timeout,
+ reply_handler=policykit_done,
+ error_handler=deferred.errback)
+ return deferred
+
+
+def get_pid_from_dbus_name(dbus_name, bus=None):
+ """Return a deferred that gets the id of process owning the given
+ system D-Bus name.
+ """
+ if not bus:
+ bus = dbus.SystemBus()
+ deferred = Deferred()
+ bus_obj = bus.get_object("org.freedesktop.DBus",
+ "/org/freedesktop/DBus/Bus")
+ bus_obj.GetConnectionUnixProcessID(dbus_name,
+ dbus_interface="org.freedesktop.DBus",
+ reply_handler=deferred.callback,
+ error_handler=deferred.errback)
+ return deferred
+
+
+@inline_callbacks
+def get_uid_from_dbus_name(dbus_name, bus=None):
+ """Return a deferred that gets the uid of the user owning the given
+ system D-Bus name.
+ """
+ if not bus:
+ bus = dbus.SystemBus()
+ pid = yield get_pid_from_dbus_name(dbus_name, bus)
+ with open("/proc/%s/status" % pid) as proc:
+ values = [v for v in proc.readlines() if v.startswith("Uid:")]
+ uid = int(values[0].split()[1])
+ return_value(uid)
+
+
+@inline_callbacks
+def get_proc_info_from_dbus_name(dbus_name, bus=None):
+ """Return a deferred that gets the pid, the uid of the user owning the
+ given system D-Bus name and its command line.
+ """
+ if not bus:
+ bus = dbus.SystemBus()
+ pid = yield get_pid_from_dbus_name(dbus_name, bus)
+ with open("/proc/%s/status" % pid) as proc:
+ lines = proc.readlines()
+ uid_values = [v for v in lines if v.startswith("Uid:")]
+ gid_values = [v for v in lines if v.startswith("Gid:")]
+ # instead of ", encoding='utf8'" we use the "rb"/decode() here for
+ # py2 compatibility
+ with open("/proc/%s/cmdline" % pid, "rb") as cmdline_file:
+ cmdline = cmdline_file.read().decode("utf-8")
+ uid = int(uid_values[0].split()[1])
+ gid = int(gid_values[0].split()[1])
+ return_value((pid, uid, gid, cmdline))
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/progress.py b/aptdaemon/progress.py
new file mode 100644
index 0000000..5312c5a
--- /dev/null
+++ b/aptdaemon/progress.py
@@ -0,0 +1,829 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Progress handlers for APT operations"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <glatzor@ubuntu.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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("DaemonAcquireProgress", "DaemonOpenProgress",
+ "DaemonInstallProgress", "DaemonDpkgInstallProgress",
+ "DaemonForkProgress", "DaemonDpkgRecoverProgress")
+
+import locale
+import logging
+import os
+import platform
+import re
+import signal
+import sys
+import termios
+import time
+import traceback
+import tty
+
+import apt_pkg
+import apt.progress.base
+import apt.debfile
+from gi.repository import GLib
+
+from . import enums
+from . import lock
+from .loop import mainloop
+from .utils import IsoCodes
+
+# Required to get translatable strings extraced by xgettext
+_ = lambda s: s
+
+log = logging.getLogger("AptDaemon.Worker")
+log_terminal = logging.getLogger("AptDaemon.Worker.Terminal")
+
+INSTALL_TIMEOUT = 10 * 60
+
+MAP_DPKG_STAGE = {"install": enums.PKG_INSTALLING,
+ "configure": enums.PKG_CONFIGURING,
+ "remove": enums.PKG_REMOVING,
+ "trigproc": enums.PKG_RUNNING_TRIGGER,
+ "purge": enums.PKG_PURGING,
+ "disappear": enums.PKG_DISAPPEARING,
+ "upgrade": enums.PKG_UPGRADING}
+
+REGEX_ANSI_ESCAPE_CODE = chr(27) + "\[[;?0-9]*[A-Za-z]"
+
+
+class DaemonOpenProgress(apt.progress.base.OpProgress):
+
+ """Handles the progress of the cache opening."""
+
+ def __init__(self, transaction, begin=0, end=100, quiet=False):
+ """Initialize a new DaemonOpenProgress instance.
+
+ Keyword arguments:
+ transaction -- corresponding transaction D-Bus object
+ begin -- begin of the progress range (defaults to 0)
+ end -- end of the progress range (defaults to 100)
+ quiet -- do not emit any progress information for the transaction
+ """
+ apt.progress.base.OpProgress.__init__(self)
+ self._transaction = transaction
+ self.steps = [begin + (end - begin) * modifier
+ # the final 1.00 will not be used but we still
+ # need it here for the final pop()
+ for modifier in [0.25, 0.50, 0.75, 1.00, 1.00]]
+ self.progress_begin = float(begin)
+ self.progress_end = self.steps.pop(0)
+ self.progress = 0
+ self.quiet = quiet
+
+ def update(self, percent=None):
+ """Callback for progress updates.
+
+ Keyword argument:
+ percent - current progress in percent
+ """
+ # python-apt 0.8 does not include "percent" anymore in the call
+ percent = percent or self.percent
+ if percent < 101:
+ progress = int(self.progress_begin + (percent / 100) *
+ (self.progress_end - self.progress_begin))
+ if self.progress == progress:
+ return
+ else:
+ progress = 101
+ self.progress = progress
+ if not self.quiet:
+ self._transaction.progress = progress
+
+ def done(self):
+ """Callback after completing a step.
+
+ Sets the progress range to the next interval."""
+ # ensure that progress is updated
+ self.progress = self.progress_end
+ # switch to new progress_{begin, end}
+ self.progress_begin = self.progress_end
+ try:
+ self.progress_end = self.steps.pop(0)
+ except:
+ log.warning("An additional step to open the cache is required")
+
+
+class DaemonAcquireProgress(apt.progress.base.AcquireProgress):
+ '''
+ Handle the package download process
+ '''
+ def __init__(self, transaction, begin=0, end=100):
+ apt.progress.base.AcquireProgress.__init__(self)
+ self.transaction = transaction
+ self.progress_end = end
+ self.progress_begin = begin
+ self.progress = 0
+
+ def _emit_acquire_item(self, item, total_size=0, current_size=0):
+ if item.owner.status == apt_pkg.AcquireItem.STAT_DONE:
+ status = enums.DOWNLOAD_DONE
+ # Workaround for a bug in python-apt, see lp: #581886
+ current_size = item.owner.filesize
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_AUTH_ERROR:
+ status = enums.DOWNLOAD_AUTH_ERROR
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_FETCHING:
+ status = enums.DOWNLOAD_FETCHING
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_ERROR:
+ status = enums.DOWNLOAD_ERROR
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_IDLE:
+ status = enums.DOWNLOAD_IDLE
+ else:
+ # Workaround: The StatTransientNetworkError status isn't mapped
+ # by python-apt, see LP #602578
+ status = enums.DOWNLOAD_NETWORK_ERROR
+ if (item.owner.status != apt_pkg.AcquireItem.STAT_DONE and
+ item.owner.error_text):
+ msg = item.owner.error_text
+ elif item.owner.mode:
+ msg = item.owner.mode
+ else:
+ msg = ""
+ self.transaction.progress_download = (
+ item.uri, status, item.shortdesc,
+ total_size | item.owner.filesize,
+ current_size | item.owner.partialsize,
+ msg)
+
+ def _emit_status_details(self, items):
+ """Emit the transaction status details."""
+ names = set()
+ for item in items:
+ if item.owner.id:
+ names.add(item.owner.id)
+ else:
+ names.add(item.shortdesc)
+ if names:
+ # TRANSLATORS: %s is a list of package names
+ msg = self.transaction.ngettext("Downloading %(files)s",
+ "Downloading %(files)s",
+ len(items)) % {"files":
+ " ".join(names)}
+ self.transaction.status_details = msg
+
+ def done(self, item):
+ """Invoked when an item is successfully and completely fetched."""
+ self._emit_acquire_item(item)
+
+ def fail(self, item):
+ """Invoked when an item could not be fetched."""
+ self._emit_acquire_item(item)
+
+ def fetch(self, item):
+ """Invoked when some of the item's data is fetched."""
+ self._emit_acquire_item(item)
+
+ def ims_hit(self, item):
+ """Invoked when an item is confirmed to be up-to-date.
+
+ Invoked when an item is confirmed to be up-to-date. For instance,
+ when an HTTP download is informed that the file on the server was
+ not modified.
+ """
+ self._emit_acquire_item(item)
+
+ def pulse(self, owner):
+ """Callback to update progress information"""
+ if self.transaction.cancelled:
+ return False
+ self.transaction.progress_details = (self.current_items,
+ self.total_items,
+ self.current_bytes,
+ self.total_bytes,
+ self.current_cps,
+ self.elapsed_time)
+ percent = (((self.current_bytes + self.current_items) * 100.0) /
+ float(self.total_bytes + self.total_items))
+ progress = int(self.progress_begin + percent / 100 *
+ (self.progress_end - self.progress_begin))
+ # If the progress runs backwards emit an illegal progress value
+ # e.g. during cache updates.
+ if self.progress > progress:
+ self.transaction.progress = 101
+ else:
+ self.transaction.progress = progress
+ self.progress = progress
+ # Show all currently downloaded files
+ items = []
+ for worker in owner.workers:
+ if not worker.current_item:
+ continue
+ self._emit_acquire_item(worker.current_item,
+ worker.total_size,
+ worker.current_size)
+ items.append(worker.current_item)
+ self._emit_status_details(items)
+ while GLib.main_context_default().pending():
+ GLib.main_context_default().iteration()
+ return True
+
+ def start(self):
+ """Callback at the beginning of the operation"""
+ self.transaction.status = enums.STATUS_DOWNLOADING
+ self.transaction.cancellable = True
+
+ def stop(self):
+ """Callback at the end of the operation"""
+ self.transaction.progress_details = (0, 0, 0, 0, 0.0, 0)
+ self.transaction.progress = self.progress_end
+ self.transaction.cancellable = False
+
+ def media_change(self, medium, drive):
+ """Callback for media changes"""
+ self.transaction.required_medium = medium, drive
+ self.transaction.paused = True
+ self.transaction.status = enums.STATUS_WAITING_MEDIUM
+ while self.transaction.paused:
+ GLib.main_context_default().iteration()
+ self.transaction.status = enums.STATUS_DOWNLOADING
+ if self.transaction.cancelled:
+ return False
+ return True
+
+
+class DaemonAcquireRepoProgress(DaemonAcquireProgress):
+
+ """Handle the repository information download"""
+
+ def __init__(self, transaction, begin=0, end=100):
+ DaemonAcquireProgress.__init__(self, transaction, begin, end)
+ self.languages = IsoCodes("iso_639", tag="iso_639_1_code",
+ fallback_tag="iso_639_2T_code")
+ self.regions = IsoCodes("iso_3166", "alpha_2_code")
+ self.progress = 101
+
+ def start(self):
+ """Callback at the beginning of the operation"""
+ self.transaction.status = enums.STATUS_DOWNLOADING_REPO
+ self.transaction.cancellable = True
+
+ def _emit_status_details(self, items):
+ """Emit the transaction status details."""
+ repos = set()
+ for item in items:
+ # We are only interested in the hostname currently
+ try:
+ repos.add(item.description.split()[0].split("://")[-1])
+ except IndexError:
+ # TRANSLATORS: the string is used as a fallback if we cannot
+ # get the URI of a local repository
+ repos.add(self.transaction.gettext("local repository"))
+ if repos:
+ # TRANSLATORS: %s is a list of repository names
+ msg = self.transaction.ngettext("Downloading from %s",
+ "Downloading from %s",
+ len(repos)) % " ".join(repos)
+ self.transaction.status_details = msg
+
+ def _emit_acquire_item(self, item, total_size=0, current_size=0):
+ if item.owner.status == apt_pkg.AcquireItem.STAT_DONE:
+ status = enums.DOWNLOAD_DONE
+ # Workaround for a bug in python-apt, see lp: #581886
+ current_size = item.owner.filesize
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_AUTH_ERROR:
+ status = enums.DOWNLOAD_AUTH_ERROR
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_FETCHING:
+ status = enums.DOWNLOAD_FETCHING
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_ERROR:
+ status = enums.DOWNLOAD_ERROR
+ elif item.owner.status == apt_pkg.AcquireItem.STAT_IDLE:
+ status = enums.DOWNLOAD_IDLE
+ else:
+ # Workaround: The StatTransientNetworkError status isn't mapped
+ # by python-apt, see LP #602578
+ status = enums.DOWNLOAD_NETWORK_ERROR
+ if (item.owner.status != apt_pkg.AcquireItem.STAT_DONE and
+ item.owner.error_text):
+ msg = item.owner.error_text
+ elif item.owner.mode:
+ msg = item.owner.mode
+ else:
+ msg = ""
+ # Get a better description than e.g. Packages or Sources
+ host, dist = item.description.split()[0:2]
+ try:
+ host = host.split("://")[1]
+ except IndexError:
+ # TRANSLATORS: the string is used as a fallback if we cannot
+ # get the URI of a local repository
+ desc = self.transaction.gettext("local repository")
+ repo = "%s %s" % (host, dist)
+ if item.shortdesc == "InRelease":
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext("Structure of %s") % repo
+ elif item.shortdesc == "Release":
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext("Description of %s") % repo
+ elif item.shortdesc == "Release.gpg":
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext("Description signature "
+ "of %s") % repo
+ elif item.shortdesc.startswith("Packages"):
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext(
+ "Available packages from %s") % repo
+ elif item.shortdesc.startswith("Sources"):
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext(
+ "Available sources from %s") % repo
+ elif item.shortdesc == "TranslationIndex":
+ # TRANSLATORS: repo is the name of a repository
+ desc = self.transaction.gettext("Available translations from "
+ "%s") % repo
+ elif item.shortdesc.startswith("Translation-"):
+ lang_code = item.shortdesc.split("-", 1)[-1]
+ try:
+ lang_code, region_code = lang_code.split("_")
+ except ValueError:
+ region_code = None
+ lang = self.languages.get_localised_name(lang_code,
+ self.transaction.locale)
+ region = self.regions.get_localised_name(region_code,
+ self.transaction.locale)
+ if lang and region:
+ # TRANSLATORS: The first %s is the name of a language. The
+ # second one the name of the region/country. Th
+ # third %s is the name of the repository
+ desc = self.transaction.gettext(
+ "Translations for %s (%s) from %s") % (lang, region, repo)
+ elif lang:
+ # TRANSLATORS: %s is the name of a language. The second one is
+ # the name of the repository
+ desc = self.transaction.gettext("Translations for %s from "
+ "%s") % (lang, repo)
+ else:
+ # TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+ # The second one is the name of the repository
+ desc = self.transaction.gettext("Translations (%s) from "
+ "%s") % (lang_code, repo)
+ else:
+ desc = item.shortdesc
+ self.transaction.progress_download = (
+ item.uri, status, desc, total_size | item.owner.filesize,
+ current_size | item.owner.partialsize, msg)
+
+
+class DaemonForkProgress(object):
+
+ """Forks and executes a given method in the child process while
+ monitoring the output and return state.
+
+ During the run() call the mainloop will be iterated.
+
+ Furthermore a status file descriptor is available to communicate
+ with the child process.
+ """
+
+ def __init__(self, transaction, begin=50, end=100):
+ self.transaction = transaction
+ self.status = ""
+ self.progress = 0
+ self.progress_begin = begin
+ self.progress_end = end
+ self._child_exit = -1
+ self.last_activity = 0
+ self.child_pid = 0
+ self.status_parent_fd, self.status_child_fd = os.pipe()
+ if hasattr(os, "set_inheritable"):
+ os.set_inheritable(self.status_parent_fd, True)
+ os.set_inheritable(self.status_child_fd, True)
+ self.output = ""
+ self._line_buffer = ""
+
+ def __enter__(self):
+ self.start_update()
+ return self
+
+ def __exit__(self, etype, evalue, etb):
+ self.finish_update()
+
+ def start_update(self):
+ log.debug("Start update")
+ self.transaction.status = enums.STATUS_COMMITTING
+ self.transaction.term_attached = True
+ self.last_activity = time.time()
+ self.start_time = time.time()
+
+ def finish_update(self):
+ """Callback at the end of the operation"""
+ self.transaction.term_attached = False
+
+ def _child(self, method, *args):
+ """Call the given method or function with the
+ corrsponding arguments in the child process.
+
+ This method should be replace in subclasses.
+ """
+ method(*args)
+ time.sleep(0.5)
+ os._exit(0)
+
+ def run(self, *args, **kwargs):
+ """Setup monitoring, fork and call the self._child() method in the
+ child process with the given arguments.
+ """
+ log.debug("Run")
+ terminal_fd = None
+ if self.transaction.terminal:
+ try:
+ # Save the settings of the transaction terminal and set to
+ # raw mode
+ terminal_fd = os.open(self.transaction.terminal,
+ os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
+ terminal_attr = termios.tcgetattr(terminal_fd)
+ tty.setraw(terminal_fd, termios.TCSANOW)
+ except (OSError, termios.error):
+ # Switch to non-interactive
+ self.transaction.terminal = ""
+ pid = self._fork()
+ if pid == 0:
+ os.close(self.status_parent_fd)
+ try:
+ self._setup_child()
+ self._child(*args, **kwargs)
+ except Exception:
+ traceback.print_exc()
+ finally:
+ # Give the parent process enough time to catch the output
+ time.sleep(1)
+ # Abort the subprocess immediatelly on any unhandled
+ # failure - otherwise the atexit methods would
+ # be called, e.g. the frozen status decorator
+ os._exit(apt_pkg.PackageManager.RESULT_FAILED)
+ else:
+ self.child_pid = pid
+ os.close(self.status_child_fd)
+ log.debug("Child pid: %s", pid)
+ watchers = []
+ flags = GLib.IO_IN | GLib.IO_ERR | GLib.IO_HUP
+ if self.transaction.terminal:
+ # Setup copying of i/o between the controlling terminals
+ watchers.append(GLib.io_add_watch(terminal_fd,
+ GLib.PRIORITY_HIGH_IDLE,
+ flags,
+ self._copy_io))
+ watchers.append(GLib.io_add_watch(self.master_fd,
+ GLib.PRIORITY_HIGH_IDLE, flags,
+ self._copy_io_master, terminal_fd))
+ # Monitor the child process
+ watchers.append(
+ GLib.child_watch_add(GLib.PRIORITY_HIGH_IDLE,
+ pid, self._on_child_exit))
+ # Watch for status updates
+ watchers.append(GLib.io_add_watch(self.status_parent_fd,
+ GLib.PRIORITY_HIGH_IDLE,
+ GLib.IO_IN,
+ self._on_status_update))
+ while self._child_exit == -1:
+ GLib.main_context_default().iteration()
+ for id in watchers:
+ GLib.source_remove(id)
+ # Restore the settings of the transaction terminal
+ if terminal_fd:
+ try:
+ termios.tcsetattr(terminal_fd, termios.TCSADRAIN,
+ terminal_attr)
+ except termios.error:
+ pass
+ # Make sure all file descriptors are closed
+ for fd in [self.master_fd, self.status_parent_fd, terminal_fd]:
+ try:
+ os.close(fd)
+ except (OSError, TypeError):
+ pass
+ return os.WEXITSTATUS(self._child_exit)
+
+ def _on_child_exit(self, pid, condition):
+ log.debug("Child exited: %s", condition)
+ self._child_exit = condition
+ return False
+
+ def _on_status_update(self, source, condition):
+ """Callback for changes on the status file descriptor.
+
+ The method has to return True to keep the monitoring alive. If
+ it returns False the monitoring will stop.
+
+ Replace this method in your subclass if you use the status fd.
+ """
+ return False
+
+ def _fork(self):
+ """Fork and create a master/slave pty pair by which the forked process
+ can be controlled.
+ """
+ pid, self.master_fd = os.forkpty()
+ return pid
+
+ def _setup_child(self):
+ """Setup the environment of the child process."""
+ def interrupt_handler(signum, frame):
+ # Exit the child immediately if we receive the interrupt
+ # signal or a Ctrl+C - otherwise the atexit methods would
+ # be called, e.g. the frozen status decorator
+ os._exit(apt_pkg.PackageManager.RESULT_FAILED)
+ signal.signal(signal.SIGINT, interrupt_handler)
+ # Make sure that exceptions of the child are not caught by apport
+ sys.excepthook = sys.__excepthook__
+
+ mainloop.quit()
+ # force terminal messages in dpkg to be untranslated, the
+ # status-fd or debconf prompts will not be affected
+ os.environ["DPKG_UNTRANSLATED_MESSAGES"] = "1"
+ # We also want untranslated status messages from apt
+ locale.setlocale(locale.LC_ALL, "C")
+ # Switch to the language of the user
+ if self.transaction.locale:
+ os.putenv("LANG", self.transaction.locale)
+ # Either connect to the controllong terminal or switch to
+ # non-interactive mode
+ if not self.transaction.terminal:
+ # FIXME: we should check for "mail" or "gnome" here
+ # and not unset in this case
+ os.putenv("APT_LISTCHANGES_FRONTEND", "none")
+ os.putenv("APT_LISTBUGS_FRONTEND", "none")
+ else:
+ os.putenv("TERM", "linux")
+ # Run debconf through a proxy if available
+ if self.transaction.debconf:
+ os.putenv("DEBCONF_PIPE", self.transaction.debconf)
+ os.putenv("DEBIAN_FRONTEND", "passthrough")
+ if log.level == logging.DEBUG:
+ os.putenv("DEBCONF_DEBUG", ".")
+ elif not self.transaction.terminal:
+ os.putenv("DEBIAN_FRONTEND", "noninteractive")
+ # Proxy configuration
+ if self.transaction.http_proxy:
+ apt_pkg.config.set("Acquire::http::Proxy",
+ self.transaction.http_proxy)
+ # Mark changes as being make by aptdaemon
+ cmd = "aptdaemon role='%s' sender='%s'" % (self.transaction.role,
+ self.transaction.sender)
+ apt_pkg.config.set("CommandLine::AsString", cmd)
+
+ def _copy_io_master(self, source, condition, target):
+ if condition == GLib.IO_IN:
+ self.last_activity = time.time()
+ try:
+ char_byte = os.read(source, 1)
+ except OSError:
+ log.debug("Faild to read from master")
+ return True
+ # Write all the output from dpkg to a log
+ char = char_byte.decode("UTF-8", "ignore")
+ if char == "\n":
+ # Skip ANSI characters from the console output
+ line = re.sub(REGEX_ANSI_ESCAPE_CODE, "", self._line_buffer)
+ if line:
+ log_terminal.debug(line)
+ self.output += line + "\n"
+ self._line_buffer = ""
+ else:
+ self._line_buffer += char
+ if target:
+ try:
+ os.write(target, char_byte)
+ except OSError:
+ log.debug("Failed to write to controlling terminal")
+ return True
+ try:
+ os.close(source)
+ except OSError:
+ # Could already be closed by the clean up in run()
+ pass
+ return False
+
+ def _copy_io(self, source, condition):
+ if condition == GLib.IO_IN:
+ try:
+ char = os.read(source, 1)
+ os.write(self.master_fd, char)
+ except OSError:
+ pass
+ else:
+ # Detect config file prompt answers on the console
+ if (self.transaction.paused and
+ self.transaction.config_file_conflict):
+ self.transaction.config_file_conflict_resolution = None
+ self.transaction.paused = False
+ return True
+ os.close(source)
+ return False
+
+
+class DaemonInstallProgress(DaemonForkProgress):
+
+ """Progress to execute APT package operations in a child process."""
+
+ def start_update(self):
+ DaemonForkProgress.start_update(self)
+ lock.status_lock.release()
+
+ def finish_update(self):
+ """Callback at the end of the operation"""
+ DaemonForkProgress.finish_update(self)
+ lock.wait_for_lock(self.transaction, lock.status_lock)
+
+ def _child(self, pm):
+ try:
+ res = pm.do_install(self.status_child_fd)
+ except:
+ os._exit(apt_pkg.PackageManager.RESULT_FAILED)
+ else:
+ os._exit(res)
+
+ def _on_status_update(self, source, condition):
+ """Parse messages from APT on the status fd."""
+ log.debug("UpdateInterface")
+ status_msg = ""
+ try:
+ while not status_msg.endswith("\n"):
+ self.last_activity = time.time()
+ status_msg += os.read(source, 1).decode("UTF-8", "ignore")
+ except:
+ return False
+ try:
+ (status, pkg, percent, message_raw) = status_msg.split(":", 3)
+ except ValueError:
+ # silently ignore lines that can't be parsed
+ return True
+ message = message_raw.strip()
+ # print "percent: %s %s" % (pkg, float(percent)/100.0)
+ if status == "pmerror":
+ self._error(pkg, message)
+ elif status == "pmconffile":
+ # we get a string like this:
+ # 'current-conffile' 'new-conffile' useredited distedited
+ match = re.match("\s*\'(.*)\'\s*\'(.*)\'.*", message_raw)
+ if match:
+ new, old = match.group(1), match.group(2)
+ self._conffile(new, old)
+ elif status == "pmstatus":
+ if message.startswith("Installing"):
+ status_enum = enums.PKG_INSTALLING
+ elif message.startswith("Installed"):
+ status_enum = enums.PKG_INSTALLED
+ elif message.startswith("Configuring"):
+ status_enum = enums.PKG_CONFIGURING
+ elif message.startswith("Preparing to configure"):
+ status_enum = enums.PKG_PREPARING_CONFIGURE
+ elif message.startswith("Preparing for removal of"):
+ status_enum = enums.PKG_PREPARING_REMOVE
+ elif message.startswith("Removing"):
+ status_enum = enums.PKG_REMOVING
+ elif message.startswith("Removed"):
+ status_enum = enums.PKG_REMOVED
+ elif message.startswith("Preparing to completely remove"):
+ status_enum = enums.PKG_PREPARING_PURGE
+ elif message.startswith("Completely removing"):
+ status_enum = enums.PKG_PURGING
+ elif message.startswith("Completely removed"):
+ status_enum = enums.PKG_PURGED
+ elif message.startswith("Unpacking"):
+ status_enum = enums.PKG_UNPACKING
+ elif message.startswith("Preparing"):
+ status_enum = enums.PKG_PREPARING_INSTALL
+ elif message.startswith("Noting disappearance of"):
+ status_enum = enums.PKG_DISAPPEARING
+ elif message.startswith("Running"):
+ status_enum = enums.PKG_RUNNING_TRIGGER
+ else:
+ status_enum = enums.PKG_UNKNOWN
+ self._status_changed(pkg, float(percent), status_enum)
+ # catch a time out by sending crtl+c
+ if (self.last_activity + INSTALL_TIMEOUT < time.time() and
+ self.child_pid):
+ log.critical("Killing child since timeout of %s s",
+ INSTALL_TIMEOUT)
+ os.kill(self.child_pid, 15)
+ return True
+
+ def _status_changed(self, pkg, percent, status_enum):
+ """Callback to update status information"""
+ log.debug("APT status: %s, %s, %s", pkg, percent, status_enum)
+ progress = self.progress_begin + percent / 100 * (self.progress_end -
+ self.progress_begin)
+ if self.progress < progress:
+ self.transaction.progress = int(progress)
+ self.progress = progress
+ # We use untranslated messages from apt.
+ # So convert them to an enum to allow translations, see LP #641262
+ # The strings are taken from apt-pkg/deb/dpkgpm.cc
+ desc = enums.get_package_status_from_enum(status_enum)
+ msg = self.transaction.gettext(desc) % pkg
+ self.transaction.status_details = msg
+ self.transaction.progress_package = (pkg, status_enum)
+
+ def _conffile(self, current, new):
+ """Callback for a config file conflict"""
+ log.warning("Config file prompt: '%s' (%s)" % (current, new))
+ self.transaction.config_file_conflict = (current, new)
+ self.transaction.paused = True
+ self.transaction.status = enums.STATUS_WAITING_CONFIG_FILE_PROMPT
+ while self.transaction.paused:
+ GLib.main_context_default().iteration()
+ log.debug("Sending config file answer: %s",
+ self.transaction.config_file_conflict_resolution)
+ if self.transaction.config_file_conflict_resolution == "replace":
+ os.write(self.master_fd, b"y\n")
+ elif self.transaction.config_file_conflict_resolution == "keep":
+ os.write(self.master_fd, b"n\n")
+ self.transaction.config_file_conflict_resolution = None
+ self.transaction.config_file_conflict = None
+ self.transaction.status = enums.STATUS_COMMITTING
+ return True
+
+ def _error(self, pkg, msg):
+ """Callback for an error"""
+ log.critical("%s: %s" % (pkg, msg))
+
+
+class DaemonDpkgInstallProgress(DaemonInstallProgress):
+
+ """Progress handler for a local Debian package installation."""
+
+ def __init__(self, transaction, begin=101, end=101):
+ DaemonInstallProgress.__init__(self, transaction, begin, end)
+
+ def _child(self, debfile):
+ args = [apt_pkg.config["Dir::Bin::DPkg"], "--status-fd",
+ str(self.status_child_fd)]
+ args.extend(apt_pkg.config.value_list("DPkg::Options"))
+ if not self.transaction.terminal:
+ args.extend(["--force-confdef", "--force-confold"])
+ args.extend(["-i", debfile])
+ os.execlp(apt_pkg.config["Dir::Bin::DPkg"], *args)
+
+ def _on_status_update(self, source, condition):
+ log.debug("UpdateInterface")
+ status_raw = ""
+ try:
+ while not status_raw.endswith("\n"):
+ status_raw += os.read(source, 1).decode("UTF-8", "ignore")
+ except:
+ return False
+ try:
+ status = [s.strip() for s in status_raw.split(":", 3)]
+ except ValueError:
+ # silently ignore lines that can't be parsed
+ return True
+ # Parse the status message. It can be of the following types:
+ # - "status: PACKAGE: STATUS"
+ # - "status: PACKAGE: error: MESSAGE"
+ # - "status: FILE: conffile: 'OLD' 'NEW' useredited distedited"
+ # - "processing: STAGE: PACKAGE" with STAGE is one of upgrade,
+ # install, configure, trigproc, remove, purge
+ if status[0] == "status":
+ # FIXME: Handle STATUS
+ if status[2] == "error":
+ self._error(status[1], status[3])
+ elif status[2] == "conffile":
+ match = re.match("\s*\'(.*)\'\s*\'(.*)\'.*", status[3])
+ if match:
+ new, old = match.group(1), match.group(2)
+ self._conffile(new, old)
+ elif status[0] == "processing":
+ try:
+ status_enum = MAP_DPKG_STAGE[status[1]]
+ except KeyError:
+ status_enum = enums.PKG_UNKONWN
+ self._status_changed(status[2], 101, status_enum)
+ return True
+
+
+class DaemonDpkgRecoverProgress(DaemonDpkgInstallProgress):
+
+ """Progress handler for dpkg --confiure -a call."""
+
+ def _child(self):
+ args = [apt_pkg.config["Dir::Bin::Dpkg"], "--status-fd",
+ str(self.status_child_fd), "--configure", "-a"]
+ args.extend(apt_pkg.config.value_list("Dpkg::Options"))
+ if not self.transaction.terminal:
+ args.extend(["--force-confdef", "--force-confold"])
+ os.execlp(apt_pkg.config["Dir::Bin::DPkg"], *args)
+
+
+class DaemonDpkgReconfigureProgress(DaemonDpkgInstallProgress):
+
+ """Progress handler for dpkg-reconfigure call."""
+
+ def _child(self, packages, priority, ):
+ args = ["/usr/sbin/dpkg-reconfigure"]
+ if priority != "default":
+ args.extend(["--priority", priority])
+ args.extend(packages)
+ os.execlp("/usr/sbin/dpkg-reconfigure", *args)
+
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/test.py b/aptdaemon/test.py
new file mode 100644
index 0000000..60d3587
--- /dev/null
+++ b/aptdaemon/test.py
@@ -0,0 +1,312 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Small helpers for the test suite."""
+# Copyright (C) 2011 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+__all__ = ("get_tests_dir", "Chroot", "AptDaemonTestCase")
+
+import inspect
+import os
+import shutil
+import subprocess
+import sys
+import time
+import tempfile
+import unittest
+
+if sys.version_info.major > 2:
+ from http.server import HTTPServer
+ from http.server import SimpleHTTPRequestHandler as HTTPRequestHandler
+else:
+ from BaseHTTPServer import HTTPServer
+ from SimpleHTTPServer import SimpleHTTPRequestHandler as HTTPRequestHandler
+
+import apt_pkg
+import apt.auth
+
+PY3K = sys.version_info.major > 2
+
+
+class MockQueue(object):
+
+ """A fake TransactionQueue which only provides a limbo attribute."""
+
+ def __init__(self):
+ self.limbo = {}
+
+
+class Chroot(object):
+
+ """Provides a chroot which can be used by APT."""
+
+ def __init__(self, prefix="tmp"):
+ self.path = tempfile.mkdtemp(prefix)
+
+ def setup(self):
+ """Setup the chroot and modify the apt configuration."""
+ for subdir in ["alternatives", "info", "parts", "updates", "triggers"]:
+ path = os.path.join(self.path, "var", "lib", "dpkg", subdir)
+ os.makedirs(path)
+ for fname in ["status", "available"]:
+ with open(os.path.join(self.path, "var", "lib", "dpkg", fname),
+ "w"):
+ pass
+ os.makedirs(os.path.join(self.path, "var/cache/apt/archives/partial"))
+ os.makedirs(os.path.join(self.path, "var/lib/apt/lists"))
+ os.makedirs(os.path.join(self.path, "var/lib/apt/lists/partial"))
+ os.makedirs(os.path.join(self.path, "etc/apt/apt.conf.d"))
+ os.makedirs(os.path.join(self.path, "etc/apt/sources.list.d"))
+ os.makedirs(os.path.join(self.path, "etc/apt/preferences.d"))
+ os.makedirs(os.path.join(self.path, "etc/apt/trusted.gpg.d"))
+ os.makedirs(os.path.join(self.path, "var/log"))
+ os.makedirs(os.path.join(self.path, "media"))
+
+ # Make apt use the new chroot
+ dpkg_wrapper = os.path.join(get_tests_dir(), "dpkg-wrapper.sh")
+ apt_key_wrapper = os.path.join(get_tests_dir(), "fakeroot-apt-key")
+ config_path = os.path.join(self.path, "etc/apt/apt.conf.d/10chroot")
+ with open(config_path, "w") as cnf:
+ cnf.write("Dir::Bin::DPkg %s;" % dpkg_wrapper)
+ cnf.write("Dir::Bin::Apt-Key %s;" % apt_key_wrapper)
+ apt_pkg.read_config_file(apt_pkg.config, config_path)
+ apt_pkg.init_system()
+ apt_pkg.config["Dir"] = self.path
+
+ def remove(self):
+ """Remove the files of the chroot."""
+ apt_pkg.config.clear("Dir")
+ apt_pkg.config.clear("Dir::State::Status")
+ apt_pkg.init()
+ shutil.rmtree(self.path)
+
+ def add_trusted_key(self):
+ """Add glatzor's key to the trusted ones."""
+ apt.auth.add_key_from_file(os.path.join(get_tests_dir(),
+ "repo/glatzor.gpg"))
+
+ def install_debfile(self, path, force_depends=False):
+ """Install a package file into the chroot."""
+ cmd_list = ["fakeroot", "dpkg", "--root", self.path,
+ "--log=%s/var/log/dpkg.log" % self.path]
+ if force_depends:
+ cmd_list.append("--force-depends")
+ cmd_list.extend(["--install", path])
+ cmd = subprocess.Popen(cmd_list,
+ env={"PATH": "/sbin:/bin:/usr/bin:/usr/sbin"})
+ cmd.communicate()
+
+ def add_test_repository(self, copy_list=True, copy_sig=True):
+ """Add the test repository to the to the chroot."""
+ return self.add_repository(os.path.join(get_tests_dir(), "repo"),
+ copy_list, copy_sig)
+
+ def add_cdrom_repository(self):
+ """Emulate a repository on removable device."""
+ # Create the content of a fake cdrom
+ media_path = os.path.join(self.path, "tmp/fake-cdrom")
+ # The cdom gets identified by the info file
+ os.makedirs(os.path.join(media_path, ".disk"))
+ with open(os.path.join(media_path, ".disk/info"), "w") as info:
+ info.write("This is a fake CDROM")
+ # Copy the test repository "on" the cdrom
+ shutil.copytree(os.path.join(get_tests_dir(), "repo"),
+ os.path.join(media_path, "repo"))
+
+ # Call apt-cdrom add
+ mount_point = self.mount_cdrom()
+ os.system("apt-cdrom add -m -d %s "
+ "-o 'Debug::Acquire::cdrom'=True "
+ "-o 'Acquire::cdrom::AutoDetect'=False "
+ "-o 'Dir'=%s" % (mount_point, self.path))
+ self.unmount_cdrom()
+
+ config_path = os.path.join(self.path, "etc/apt/apt.conf.d/11cdrom")
+ with open(config_path, "w") as cnf:
+ cnf.write('Debug::Acquire::cdrom True;\n'
+ 'Acquire::cdrom::AutoDetect False;\n'
+ 'Acquire::cdrom::NoMount True;\n'
+ 'Acquire::cdrom::mount "%s";' % mount_point)
+
+ def mount_cdrom(self):
+ """Copy the repo information to the CDROM mount point."""
+ mount_point = os.path.join(self.path, "media/cdrom")
+ os.symlink(os.path.join(self.path, "tmp/fake-cdrom"), mount_point)
+ return mount_point
+
+ def unmount_cdrom(self):
+ """Remove all files from the mount point."""
+ os.unlink(os.path.join(self.path, "media/cdrom"))
+
+ def add_repository(self, path, copy_list=True, copy_sig=True):
+ """Add a sources.list entry to the chroot."""
+ # Add a sources list
+ lst_path = os.path.join(self.path, "etc/apt/sources.list")
+ with open(lst_path, "w") as lst_file:
+ lst_file.write("deb file://%s ./ # Test repository" % path)
+ if copy_list:
+ filename = apt_pkg.uri_to_filename("file://%s/." % path)
+ shutil.copy(os.path.join(path, "Packages"),
+ "%s/var/lib/apt/lists/%s_Packages" % (self.path,
+ filename))
+ if os.path.exists(os.path.join(path, "Release")):
+ shutil.copy(os.path.join(path, "Release"),
+ "%s/var/lib/apt/lists/%s_Release" % (self.path,
+ filename))
+ if copy_sig and os.path.exists(os.path.join(path, "Release.gpg")):
+ shutil.copy(os.path.join(path, "Release.gpg"),
+ "%s/var/lib/apt/lists/%s_Release.gpg" % (self.path,
+ filename))
+
+
+class AptDaemonTestCase(unittest.TestCase):
+
+ @classmethod
+ def setupClass(cls):
+ # Start with a clean APT configuration to remove changes
+ # of previous tests
+ for key in set([key.split("::")[0] for key in apt_pkg.config.keys()]):
+ apt_pkg.config.clear(key)
+ apt_pkg.init_config()
+
+ def start_fake_polkitd(self, options="all"):
+ """Start a fake PolicyKit daemon.
+
+ :param allowed_actions: comma separated list of allowed actions.
+ Defaults to all
+ """
+ try:
+ env = os.environ.copy()
+ env["DBUS_SYSTEM_BUS_ADDRESS"] = self.dbus_address
+ except AttributeError:
+ env = None
+ dir = get_tests_dir()
+ proc = subprocess.Popen([os.path.join(dir, "fake-polkitd.py"),
+ "--allowed-actions", options],
+ env=env)
+ self.addCleanup(self._kill_process, proc)
+ return proc
+
+ def start_session_aptd(self, chroot="/", debug=True):
+ """Start an aptdaemon which listens on the session D-Bus.
+
+ :param chroot: path to the chroot
+ """
+ env = os.environ.copy()
+ try:
+ env["DBUS_SYSTEM_BUS_ADDRESS"] = self.dbus_address
+ except AttributeError:
+ pass
+ try:
+ env.pop("http_proxy") # Unset a local proxy, see LP #1050799
+ except KeyError:
+ pass
+ dir = get_tests_dir()
+ if dir == "/usr/share/aptdaemon/tests":
+ path = "/usr/sbin/aptd"
+ else:
+ path = os.path.join(dir, "../aptd")
+ cmd = ["python3", path, "--disable-plugins",
+ "--chroot", chroot]
+ if debug:
+ cmd.append("--debug")
+ proc = subprocess.Popen(cmd, env=env)
+ self.addCleanup(self._kill_process, proc)
+ return proc
+
+ def start_dbus_daemon(self):
+ """Start a private D-Bus daemon and return its process and address."""
+ proc, dbus_address = start_dbus_daemon()
+ self.addCleanup(self._kill_process, proc)
+ self.dbus_address = dbus_address
+
+ def start_keyserver(self, filename=None):
+ """Start a fake keyserver on hkp://localhost:19191
+
+ Keyword arguments:
+ filename -- Optional path to a GnuPG pulic key file which should
+ be returned by lookups. By default the key of the test repo
+ is used.
+ """
+ dir = tempfile.mkdtemp(prefix="keyserver-test-")
+ self.addCleanup(shutil.rmtree, dir)
+ os.mkdir(os.path.join(dir, "pks"))
+ if filename is None:
+ filename = os.path.join(get_tests_dir(), "repo/glatzor.gpg")
+ shutil.copy(filename, os.path.join(dir, "pks", "lookup"))
+
+ pid = os.fork()
+ if pid == 0:
+ # quiesce server log
+ os.dup2(os.open('/dev/null', os.O_WRONLY), sys.stderr.fileno())
+ os.chdir(dir)
+ httpd = HTTPServer(('localhost', 19191), HTTPRequestHandler)
+ httpd.serve_forever()
+ os._exit(0)
+ else:
+ self.addCleanup(self._kill_pid, pid)
+
+ # wait a bit until server is ready
+ time.sleep(0.5)
+
+ def _kill_pid(self, pid):
+ os.kill(pid, 15)
+ os.wait()
+
+ def _kill_process(self, proc):
+ proc.kill()
+ proc.wait()
+
+
+def get_tests_dir():
+ """Return the absolute path to the tests directory."""
+ # Try to detect a relative tests dir if we are running from the source
+ # directory
+ try:
+ path = inspect.getsourcefile(sys.modules["aptdaemon.test"])
+ except KeyError:
+ path = inspect.getsourcefile(inspect.currentframe())
+ path = os.path.realpath(path)
+ relative_path = os.path.join(os.path.dirname(path), "../tests")
+ if os.path.exists(os.path.join(relative_path, "repo/Packages")):
+ return os.path.normpath(relative_path)
+ # Fallback to an absolute path
+ elif os.path.exists("/usr/share/aptdaemon/tests/repo/Packages"):
+ return "/usr/share/aptdaemon/tests"
+ else:
+ raise Exception("Could not find tests direcotry")
+
+
+def start_dbus_daemon():
+ """Start a private D-Bus daemon and return its process and address."""
+ config_path = os.path.join(get_tests_dir(), "dbus.conf")
+ proc = subprocess.Popen(["dbus-daemon", "--nofork",
+ "--print-address", "--config-file",
+ config_path],
+ stdout=subprocess.PIPE)
+ output = proc.stdout.readline().strip()
+ if PY3K:
+ dbus_address = output.decode()
+ else:
+ dbus_address = output
+ return proc, dbus_address
+
+
+# vim: ts=4 et sts=4
diff --git a/aptdaemon/utils.py b/aptdaemon/utils.py
new file mode 100644
index 0000000..d7da9ce
--- /dev/null
+++ b/aptdaemon/utils.py
@@ -0,0 +1,131 @@
+"""Module with little helper functions and classes:
+
+deprecated - decorator to emit a warning if a depreacted function is used
+"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <sevel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("deprecated", "IsoCodes")
+
+import os
+import sys
+import contextlib
+import gettext
+import functools
+import warnings
+from xml.etree import ElementTree
+
+if sys.version >= '3':
+ _gettext_method = "gettext"
+else:
+ _gettext_method = "ugettext"
+
+
+def deprecated(func):
+ """This is a decorator which can be used to mark functions
+ as deprecated. It will result in a warning being emitted
+ when the function is used.
+
+ Taken from http://wiki.python.org/moin/PythonDecoratorLibrary
+ #GeneratingDeprecationWarnings
+ """
+ @functools.wraps(func)
+ def new_func(*args, **kwargs):
+ warnings.warn_explicit(
+ "Call to deprecated function %(funcname)s." % {
+ 'funcname': func.__name__,
+ },
+ category=DeprecationWarning,
+ filename=func.__code__.co_filename,
+ lineno=func.__code__.co_firstlineno + 1
+ )
+ return func(*args, **kwargs)
+ return new_func
+
+
+@contextlib.contextmanager
+def set_euid_egid(uid, gid):
+ # no need to drop privs
+ if os.getuid() != 0 and os.getgid() != 0:
+ yield
+ return
+ # temporary drop privs
+ os.setegid(gid)
+ old_groups = os.getgroups()
+ os.setgroups([gid])
+ os.seteuid(uid)
+ try:
+ yield
+ finally:
+ os.seteuid(os.getuid())
+ os.setegid(os.getgid())
+ os.setgroups(old_groups)
+
+
+class IsoCodes(object):
+
+ """Provides access to the iso-codes language, script and country
+ database.
+ """
+
+ def __init__(self, norm, tag, fallback_tag=None):
+ filename = "/usr/share/xml/iso-codes/%s.xml" % norm
+ et = ElementTree.ElementTree(file=filename)
+ self._dict = {}
+ self.norm = norm
+ for element in list(et.iter()):
+ iso_code = element.get(tag)
+ if not iso_code and fallback_tag:
+ iso_code = element.get(fallback_tag)
+ if iso_code:
+ self._dict[iso_code] = element.get("name")
+
+ def get_localised_name(self, value, locale):
+ try:
+ name = self._dict[value]
+ except KeyError:
+ return None
+ trans = gettext.translation(domain=self.norm, fallback=True,
+ languages=[locale])
+ return getattr(trans, _gettext_method)(name)
+
+ def get_name(self, value):
+ try:
+ return self._dict[value]
+ except KeyError:
+ return None
+
+
+def split_package_id(package):
+ """Return the name, the version number and the release of the
+ specified package."""
+ if "=" in package:
+ name, version = package.split("=", 1)
+ release = None
+ elif "/" in package:
+ name, release = package.split("/", 1)
+ version = None
+ else:
+ name = package
+ version = release = None
+ return name, version, release
+
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/worker/__init__.py b/aptdaemon/worker/__init__.py
new file mode 100644
index 0000000..3cfd97f
--- /dev/null
+++ b/aptdaemon/worker/__init__.py
@@ -0,0 +1,334 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides AptWorker which processes transactions."""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("BaseWorker", "DummyWorker")
+
+import logging
+import os
+import pkg_resources
+import time
+import traceback
+
+from gi.repository import GObject, GLib
+
+from .. import enums
+from .. import errors
+
+log = logging.getLogger("AptDaemon.Worker")
+
+# Just required to detect translatable strings. The translation is done by
+# core.Transaction.gettext
+_ = lambda s: s
+
+
+class BaseWorker(GObject.GObject):
+
+ """Worker which processes transactions from the queue."""
+
+ __gsignals__ = {"transaction-done": (GObject.SignalFlags.RUN_FIRST,
+ None,
+ (GObject.TYPE_PYOBJECT,)),
+ "transaction-simulated": (GObject.SignalFlags.RUN_FIRST,
+ None,
+ (GObject.TYPE_PYOBJECT,))}
+ NATIVE_ARCH = None
+
+ def __init__(self, chroot=None, load_plugins=True):
+ """Initialize a new AptWorker instance."""
+ GObject.GObject.__init__(self)
+ self.trans = None
+ self.last_action_timestamp = time.time()
+ self.chroot = chroot
+ # Store the the tid of the transaction whose changes are currently
+ # marked in the cache
+ self.marked_tid = None
+ self.plugins = {}
+
+ @staticmethod
+ def _split_package_id(package):
+ """Return the name, the version number and the release of the
+ specified package."""
+ if "=" in package:
+ name, version = package.split("=", 1)
+ release = None
+ elif "/" in package:
+ name, release = package.split("/", 1)
+ version = None
+ else:
+ name = package
+ version = release = None
+ return name, version, release
+
+ def run(self, transaction):
+ """Process the given transaction in the background.
+
+ Keyword argument:
+ transaction -- core.Transcation instance to run
+ """
+ log.info("Processing transaction %s", transaction.tid)
+ if self.trans:
+ raise Exception("There is already a running transaction")
+ self.trans = transaction
+ GLib.idle_add(self._run_transaction_idle, transaction)
+
+ def simulate(self, trans):
+ """Return the dependencies which will be installed by the transaction,
+ the content of the dpkg status file after the transaction would have
+ been applied, the download size and the required disk space.
+
+ Keyword arguments:
+ trans -- the transaction which should be simulated
+ """
+ log.info("Simulating trans: %s" % trans.tid)
+ trans.status = enums.STATUS_RESOLVING_DEP
+ GLib.idle_add(self._simulate_transaction_idle, trans)
+
+ def _emit_transaction_simulated(self, trans):
+ """Emit the transaction-simulated signal.
+
+ Keyword argument:
+ trans -- the simulated transaction
+ """
+ log.debug("Emitting transaction-simulated: %s", trans.tid)
+ self.emit("transaction-simulated", trans)
+
+ def _emit_transaction_done(self, trans):
+ """Emit the transaction-done signal.
+
+ Keyword argument:
+ trans -- the finished transaction
+ """
+ log.debug("Emitting transaction-done: %s", trans.tid)
+ self.emit("transaction-done", trans)
+
+ def _run_transaction_idle(self, trans):
+ """Run the transaction"""
+ self.last_action_timestamp = time.time()
+ trans.status = enums.STATUS_RUNNING
+ trans.progress = 11
+ try:
+ self._run_transaction(trans)
+ except errors.TransactionCancelled:
+ trans.exit = enums.EXIT_CANCELLED
+ except errors.TransactionFailed as excep:
+ trans.error = excep
+ trans.exit = enums.EXIT_FAILED
+ except (KeyboardInterrupt, SystemExit):
+ trans.exit = enums.EXIT_CANCELLED
+ except Exception as excep:
+ tbk = traceback.format_exc()
+ trans.error = errors.TransactionFailed(enums.ERROR_UNKNOWN, tbk)
+ trans.exit = enums.EXIT_FAILED
+ try:
+ from . import crash
+ except ImportError:
+ pass
+ else:
+ crash.create_report("%s: %s" % (type(excep), str(excep)),
+ tbk, trans)
+ else:
+ trans.exit = enums.EXIT_SUCCESS
+ finally:
+ trans.progress = 100
+ self.last_action_timestamp = time.time()
+ tid = trans.tid[:]
+ self.trans = None
+ self.marked_tid = None
+ self._emit_transaction_done(trans)
+ log.info("Finished transaction %s", tid)
+ return False
+
+ def _simulate_transaction_idle(self, trans):
+ try:
+ (trans.depends, trans.download, trans.space,
+ trans.unauthenticated,
+ trans.high_trust_packages) = self._simulate_transaction(trans)
+ except errors.TransactionFailed as excep:
+ trans.error = excep
+ trans.exit = enums.EXIT_FAILED
+ except Exception as excep:
+ tbk = traceback.format_exc()
+ trans.error = errors.TransactionFailed(enums.ERROR_UNKNOWN, tbk)
+ try:
+ from . import crash
+ except ImportError:
+ pass
+ else:
+ crash.create_report("%s: %s" % (type(excep), str(excep)),
+ tbk, trans)
+ trans.exit = enums.EXIT_FAILED
+ else:
+ trans.status = enums.STATUS_SETTING_UP
+ trans.simulated = time.time()
+ self.marked_tid = trans.tid
+ finally:
+ self._emit_transaction_simulated(trans)
+ self.last_action_timestamp = time.time()
+ return False
+
+ def _load_plugins(self, plugins, entry_point="aptdaemon.plugins"):
+ """Load the plugins from setuptools' entry points."""
+ plugin_dirs = [os.path.join(os.path.dirname(__file__), "plugins")]
+ env = pkg_resources.Environment(plugin_dirs)
+ dists, errors = pkg_resources.working_set.find_plugins(env)
+ for dist in dists:
+ pkg_resources.working_set.add(dist)
+ for name in plugins:
+ for ept in pkg_resources.iter_entry_points(entry_point,
+ name):
+ try:
+ self.plugins.setdefault(name, []).append(ept.load())
+ except:
+ log.critical("Failed to load %s plugin: "
+ "%s" % (name, ept.dist))
+ else:
+ log.debug("Loaded %s plugin: %s", name, ept.dist)
+
+ def _simulate_transaction(self, trans):
+ """This method needs to be implemented by the backends."""
+ depends = [[], [], [], [], [], [], []]
+ unauthenticated = []
+ high_trust_packages = []
+ skip_pkgs = []
+ size = 0
+ installs = reinstalls = removals = purges = upgrades = upgradables = \
+ downgrades = []
+
+ return depends, 0, 0, [], []
+
+ def _run_transaction(self, trans):
+ """This method needs to be implemented by the backends."""
+ raise errors.TransactionFailed(enums.ERROR_NOT_SUPPORTED)
+
+ def set_config(self, option, value, filename):
+ """Set a configuration option.
+
+ This method needs to be implemented by the backends."""
+ raise NotImplementedError
+
+ def get_config(self, option):
+ """Get a configuration option.
+
+ This method needs to be implemented by the backends."""
+ raise NotImplementedError
+
+ def get_trusted_vendor_keys(self):
+ """This method needs to be implemented by the backends."""
+ return []
+
+ def is_reboot_required(self):
+ """This method needs to be implemented by the backends."""
+ return False
+
+
+class DummyWorker(BaseWorker):
+
+ """Allows to test the daemon without making any changes to the system."""
+
+ def run(self, transaction):
+ """Process the given transaction in the background.
+
+ Keyword argument:
+ transaction -- core.Transcation instance to run
+ """
+ log.info("Processing transaction %s", transaction.tid)
+ if self.trans:
+ raise Exception("There is already a running transaction")
+ self.trans = transaction
+ self.last_action_timestamp = time.time()
+ self.trans.status = enums.STATUS_RUNNING
+ self.trans.progress = 0
+ self.trans.cancellable = True
+ GLib.timeout_add(200, self._run_transaction_idle, transaction)
+
+ def _run_transaction_idle(self, trans):
+ """Run the worker"""
+ if trans.cancelled:
+ trans.exit = enums.EXIT_CANCELLED
+ elif trans.progress == 100:
+ trans.exit = enums.EXIT_SUCCESS
+ elif trans.role == enums.ROLE_UPDATE_CACHE:
+ trans.exit = enums.EXIT_FAILED
+ elif trans.role == enums.ROLE_UPGRADE_PACKAGES:
+ trans.exit = enums.EXIT_SUCCESS
+ elif trans.role == enums.ROLE_UPGRADE_SYSTEM:
+ trans.exit = enums.EXIT_CANCELLED
+ else:
+ if trans.role == enums.ROLE_INSTALL_PACKAGES:
+ if trans.progress == 1:
+ trans.status = enums.STATUS_RESOLVING_DEP
+ elif trans.progress == 5:
+ trans.status = enums.STATUS_DOWNLOADING
+ elif trans.progress == 50:
+ trans.status = enums.STATUS_COMMITTING
+ trans.status_details = "Heyas!"
+ elif trans.progress == 55:
+ trans.paused = True
+ trans.status = enums.STATUS_WAITING_CONFIG_FILE_PROMPT
+ trans.config_file_conflict = "/etc/fstab", "/etc/mtab"
+ while trans.paused:
+ GLib.main_context_default().iteration()
+ trans.config_file_conflict_resolution = None
+ trans.config_file_conflict = None
+ trans.status = enums.STATUS_COMMITTING
+ elif trans.progress == 60:
+ trans.required_medium = ("Debian Lenny 5.0 CD 1",
+ "USB CD-ROM")
+ trans.paused = True
+ trans.status = enums.STATUS_WAITING_MEDIUM
+ while trans.paused:
+ GLib.main_context_default().iteration()
+ trans.status = enums.STATUS_DOWNLOADING
+ elif trans.progress == 70:
+ trans.status_details = "Servus!"
+ elif trans.progress == 90:
+ trans.status_deatils = ""
+ trans.status = enums.STATUS_CLEANING_UP
+ elif trans.role == enums.ROLE_REMOVE_PACKAGES:
+ if trans.progress == 1:
+ trans.status = enums.STATUS_RESOLVING_DEP
+ elif trans.progress == 5:
+ trans.status = enums.STATUS_COMMITTING
+ trans.status_details = "Heyas!"
+ elif trans.progress == 50:
+ trans.status_details = "Hola!"
+ elif trans.progress == 70:
+ trans.status_details = "Servus!"
+ elif trans.progress == 90:
+ trans.status_deatils = ""
+ trans.status = enums.STATUS_CLEANING_UP
+ trans.progress += 1
+ return True
+ trans.status = enums.STATUS_FINISHED
+ self.last_action_timestamp = time.time()
+ tid = self.trans.tid[:]
+ trans = self.trans
+ self.trans = None
+ self._emit_transaction_done(trans)
+ log.info("Finished transaction %s", tid)
+ return False
+
+ def simulate(self, trans):
+ depends = [[], [], [], [], [], [], []]
+ return depends, 0, 0, [], []
+
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/worker/aptworker.py b/aptdaemon/worker/aptworker.py
new file mode 100644
index 0000000..447534f
--- /dev/null
+++ b/aptdaemon/worker/aptworker.py
@@ -0,0 +1,1537 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides AptWorker which processes transactions."""
+# Copyright (C) 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+__all__ = ("AptWorker")
+
+import contextlib
+import errno
+import glob
+import logging
+import netrc
+import os
+import re
+import shutil
+import stat
+import sys
+import tempfile
+import time
+import traceback
+try:
+ from urllib.parse import urlsplit, urlunsplit
+except ImportError:
+ from urlparse import urlsplit, urlunsplit
+
+try:
+ from configparser import ConfigParser
+except ImportError:
+ from ConfigParser import ConfigParser
+
+import apt
+import apt.auth
+import apt.cache
+import apt.debfile
+import apt_pkg
+import aptsources
+import aptsources.distro
+from aptsources.sourceslist import SourcesList
+from gi.repository import GObject, GLib
+
+from . import BaseWorker
+from ..enums import *
+from ..errors import *
+from .. import lock
+from ..utils import set_euid_egid
+from ..progress import (
+ DaemonOpenProgress,
+ DaemonInstallProgress,
+ DaemonAcquireProgress,
+ DaemonAcquireRepoProgress,
+ DaemonDpkgInstallProgress,
+ DaemonDpkgReconfigureProgress,
+ DaemonDpkgRecoverProgress,
+ DaemonForkProgress)
+
+log = logging.getLogger("AptDaemon.Worker")
+
+# Just required to detect translatable strings. The translation is done by
+# core.Transaction.gettext
+_ = lambda s: s
+
+_POPCON_PATH = "/etc/popularity-contest.conf"
+_POPCON_DEFAULT = """# Config file for Debian's popularity-contest package.
+#
+# To change this file, use:
+# dpkg-reconfigure popularity-contest
+#
+# You can also edit it by hand, if you so choose.
+#
+# See /usr/share/popularity-contest/default.conf for more info
+# on the options.
+MY_HOSTID="%(host_id)s"
+PARTICIPATE="%(participate)s"
+USE_HTTP="yes"
+"""
+
+
+def trans_only_installs_pkgs_from_high_trust_repos(trans,
+ whitelist=set()):
+ """Return True if this transaction only touches packages in the
+ aptdaemon repoisotry high trust repository whitelist
+ """
+ # the transaction *must* be simulated before
+ if not trans.simulated:
+ return False
+ # we never allow unauthenticated ones
+ if trans.unauthenticated:
+ return False
+ # paranoia: wrong role
+ if trans.role not in (ROLE_INSTALL_PACKAGES, ROLE_COMMIT_PACKAGES):
+ return False
+ # if there is anything touched that is not a install bail out
+ for enum in (PKGS_REINSTALL, PKGS_REMOVE, PKGS_PURGE, PKGS_DOWNGRADE,
+ PKGS_UPGRADE):
+ if trans.packages[enum]:
+ return False
+ # paranoia(2): we must want to install something
+ if not trans.packages[PKGS_INSTALL]:
+ return False
+ # we only care about the name, not the version
+ pkgs = [pkg.split("=")[0] for pkg in trans.packages[PKGS_INSTALL]]
+ # if the install packages matches the whitelisted set we are good
+ return set(pkgs) == set(trans.high_trust_packages)
+
+
+def read_high_trust_repository_dir(whitelist_cfg_d):
+ """Return a set of (origin, component, pkgname-regexp) from a
+ high-trust-repository-whitelist.d directory
+ """
+ whitelist = set()
+ for path in glob.glob(os.path.join(whitelist_cfg_d, "*.cfg")):
+ whitelist |= _read_high_trust_repository_whitelist_file(path)
+ return whitelist
+
+
+def _read_high_trust_repository_whitelist_file(path):
+ """Read a individual high-trust-repository whitelist file and return
+ a set of tuples (origin, component, pkgname-regexp)
+ """
+ parser = ConfigParser()
+ whitelist = set()
+ try:
+ parser.read(path)
+ except Exception as e:
+ log.error("Failed to read repository whitelist '%s' (%s)" % (path, e))
+ return whitelist
+ for section in parser.sections():
+ origin = parser.get(section, "origin")
+ component = parser.get(section, "component")
+ pkgnames = parser.get(section, "pkgnames")
+ whitelist.add((origin, component, pkgnames))
+ return whitelist
+
+
+class AptWorker(BaseWorker):
+
+ """Worker which processes transactions from the queue."""
+
+ NATIVE_ARCH = apt_pkg.get_architectures()[0]
+
+ # the basedir under which license keys can be stored
+ LICENSE_KEY_ROOTDIR = "/opt/"
+
+ def __init__(self, chroot=None, load_plugins=True):
+ """Initialize a new AptWorker instance."""
+ BaseWorker.__init__(self, chroot, load_plugins)
+ self._cache = None
+
+ # Change to a given chroot
+ if self.chroot:
+ apt_conf_file = os.path.join(chroot, "etc/apt/apt.conf")
+ if os.path.exists(apt_conf_file):
+ apt_pkg.read_config_file(apt_pkg.config, apt_conf_file)
+ apt_conf_dir = os.path.join(chroot, "etc/apt/apt.conf.d")
+ if os.path.isdir(apt_conf_dir):
+ apt_pkg.read_config_dir(apt_pkg.config, apt_conf_dir)
+ apt_pkg.config["Dir"] = chroot
+ apt_pkg.config["Dir::State::Status"] = os.path.join(
+ chroot, "var/lib/dpkg/status")
+ apt_pkg.config.clear("DPkg::Post-Invoke")
+ apt_pkg.config.clear("DPkg::Options")
+ apt_pkg.config["DPkg::Options::"] = "--root=%s" % chroot
+ apt_pkg.config["DPkg::Options::"] = ("--log=%s/var/log/dpkg.log" %
+ chroot)
+ status_file = apt_pkg.config.find_file("Dir::State::status")
+ lock.frontend_lock.path = os.path.join(os.path.dirname(status_file),
+ "lock-frontend")
+ lock.status_lock.path = os.path.join(os.path.dirname(status_file),
+ "lock")
+ archives_dir = apt_pkg.config.find_dir("Dir::Cache::Archives")
+ lock.archive_lock.path = os.path.join(archives_dir, "lock")
+ lists_dir = apt_pkg.config.find_dir("Dir::State::lists")
+ lock.lists_lock.path = os.path.join(lists_dir, "lock")
+ apt_pkg.init_system()
+
+ # a set of tuples of the type (origin, component, pkgname-regexp)
+ # that on install will trigger a different kind of polkit
+ # authentication request (see LP: #1035207), useful for e.g.
+ # webapps/company repos
+ self._high_trust_repositories = read_high_trust_repository_dir(
+ os.path.join(apt_pkg.config.find_dir("Dir"),
+ "etc/aptdaemon/high-trust-repository-whitelist.d"))
+ log.debug(
+ "using high-trust whitelist: '%s'" % self._high_trust_repositories)
+
+ self._status_orig = apt_pkg.config.find_file("Dir::State::status")
+ self._status_frozen = None
+ if load_plugins:
+ self._load_plugins(["modify_cache_after", "modify_cache_before",
+ "get_license_key"])
+
+ def _call_plugins(self, name, resolver=None):
+ """Call all plugins of a given type."""
+ if not resolver:
+ # If the resolver of the original task isn't available we create
+ # a new one and protect the already marked changes
+ resolver = apt.cache.ProblemResolver(self._cache)
+ for pkg in self._cache.get_changes():
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+ if pkg.marked_delete:
+ resolver.remove(pkg)
+ if name not in self.plugins:
+ log.debug("There isn't any registered %s plugin" % name)
+ return False
+ for plugin in self.plugins[name]:
+ log.debug("Calling %s plugin: %s", name, plugin)
+ try:
+ plugin(resolver, self._cache)
+ except Exception as error:
+ log.critical("Failed to call %s plugin:\n%s" % (plugin, error))
+ return True
+
+ def _run_transaction(self, trans):
+ """Run the worker"""
+ try:
+ lock.wait_for_lock(trans)
+ # Prepare the package cache
+ if (trans.role == ROLE_FIX_INCOMPLETE_INSTALL or
+ not self.is_dpkg_journal_clean()):
+ self.fix_incomplete_install(trans)
+ # Process transaction which don't require a cache
+ if trans.role == ROLE_ADD_VENDOR_KEY_FILE:
+ self.add_vendor_key_from_file(trans, **trans.kwargs)
+ elif trans.role == ROLE_ADD_VENDOR_KEY_FROM_KEYSERVER:
+ self.add_vendor_key_from_keyserver(trans, **trans.kwargs)
+ elif trans.role == ROLE_REMOVE_VENDOR_KEY:
+ self.remove_vendor_key(trans, **trans.kwargs)
+ elif trans.role == ROLE_ADD_REPOSITORY:
+ self.add_repository(trans, **trans.kwargs)
+ elif trans.role == ROLE_ENABLE_DISTRO_COMP:
+ self.enable_distro_comp(trans, **trans.kwargs)
+ elif trans.role == ROLE_RECONFIGURE:
+ self.reconfigure(trans, trans.packages[PKGS_REINSTALL],
+ **trans.kwargs)
+ elif trans.role == ROLE_CLEAN:
+ self.clean(trans)
+ # Check if the transaction has been just simulated. So we could
+ # skip marking the changes a second time.
+ elif (trans.role in (ROLE_REMOVE_PACKAGES, ROLE_INSTALL_PACKAGES,
+ ROLE_UPGRADE_PACKAGES, ROLE_COMMIT_PACKAGES,
+ ROLE_UPGRADE_SYSTEM,
+ ROLE_FIX_BROKEN_DEPENDS) and
+ self.marked_tid == trans.tid):
+ self._apply_changes(trans)
+ trans.exit = EXIT_SUCCESS
+ return False
+ else:
+ self._open_cache(trans)
+ # Process transaction which can handle a broken dep cache
+ if trans.role == ROLE_FIX_BROKEN_DEPENDS:
+ self.fix_broken_depends(trans)
+ elif trans.role == ROLE_UPDATE_CACHE:
+ self.update_cache(trans, **trans.kwargs)
+ # Process the transactions which require a consistent cache
+ elif trans.role == ROLE_ADD_LICENSE_KEY:
+ self.add_license_key(trans, **trans.kwargs)
+ elif self._cache and self._cache.broken_count:
+ raise TransactionFailed(ERROR_CACHE_BROKEN,
+ self._get_broken_details(trans))
+ if trans.role == ROLE_PK_QUERY:
+ self.query(trans)
+ elif trans.role == ROLE_INSTALL_FILE:
+ self.install_file(trans, **trans.kwargs)
+ elif trans.role in [ROLE_REMOVE_PACKAGES, ROLE_INSTALL_PACKAGES,
+ ROLE_UPGRADE_PACKAGES, ROLE_COMMIT_PACKAGES]:
+ self.commit_packages(trans, *trans.packages)
+ elif trans.role == ROLE_UPGRADE_SYSTEM:
+ self.upgrade_system(trans, **trans.kwargs)
+ finally:
+ lock.release()
+
+ def commit_packages(self, trans, install, reinstall, remove, purge,
+ upgrade, downgrade, simulate=False):
+ """Perform a complex package operation.
+
+ Keyword arguments:
+ trans - the transaction
+ install - list of package names to install
+ reinstall - list of package names to reinstall
+ remove - list of package names to remove
+ purge - list of package names to purge including configuration files
+ upgrade - list of package names to upgrade
+ downgrade - list of package names to upgrade
+ simulate -- if True the changes won't be applied
+ """
+ log.info("Committing packages: %s, %s, %s, %s, %s, %s",
+ install, reinstall, remove, purge, upgrade, downgrade)
+ with self._cache.actiongroup():
+ resolver = apt.cache.ProblemResolver(self._cache)
+ self._mark_packages_for_installation(install, resolver)
+ self._mark_packages_for_installation(reinstall, resolver,
+ reinstall=True)
+ self._mark_packages_for_removal(remove, resolver)
+ self._mark_packages_for_removal(purge, resolver, purge=True)
+ self._mark_packages_for_upgrade(upgrade, resolver)
+ self._mark_packages_for_downgrade(downgrade, resolver)
+ self._resolve_depends(trans, resolver)
+ self._check_obsoleted_dependencies(trans, resolver)
+ if not simulate:
+ self._apply_changes(trans)
+
+ def _resolve_depends(self, trans, resolver):
+ """Resolve the dependencies using the given ProblemResolver."""
+ self._call_plugins("modify_cache_before", resolver)
+ try:
+ resolver.resolve()
+ except SystemError:
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED,
+ self._get_broken_details(trans, now=False))
+ if self._call_plugins("modify_cache_after", resolver):
+ try:
+ resolver.resolve()
+ except SystemError:
+ details = self._get_broken_details(trans, now=False)
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED, details)
+
+ def _get_high_trust_packages(self):
+ """ Return a list of packages that come from a high-trust repo """
+ def _in_high_trust_repository(pkgname, pkgorigin):
+ for origin, component, regexp in self._high_trust_repositories:
+ if (origin == pkgorigin.origin and
+ component == pkgorigin.component and
+ re.match(regexp, pkgname)):
+ return True
+ return False
+ # loop
+ from_high_trust_repo = []
+ for pkg in self._cache.get_changes():
+ if pkg.marked_install:
+ for origin in pkg.candidate.origins:
+ if _in_high_trust_repository(pkg.name, origin):
+ from_high_trust_repo.append(pkg.name)
+ break
+ return from_high_trust_repo
+
+ def _get_unauthenticated(self):
+ """Return a list of unauthenticated package names """
+ unauthenticated = []
+ for pkg in self._cache.get_changes():
+ if (pkg.marked_install or
+ pkg.marked_downgrade or
+ pkg.marked_upgrade or
+ pkg.marked_reinstall):
+ trusted = False
+ for origin in pkg.candidate.origins:
+ trusted |= origin.trusted
+ if not trusted:
+ unauthenticated.append(pkg.name)
+ return unauthenticated
+
+ def _mark_packages_for_installation(self, packages, resolver,
+ reinstall=False):
+ """Mark packages for installation."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+ for pkg in packages]:
+ pkg_name, sep, auto_marker = pkg_name.partition("#")
+ from_user = (auto_marker != "auto")
+ try:
+ pkg = self._cache[pkg_name]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("Package %s isn't available"),
+ pkg_name)
+ if reinstall:
+ if not pkg.is_installed:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("Package %s isn't installed"),
+ pkg.name)
+ if pkg_ver and pkg.installed.version != pkg_ver:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("The version %s of %s isn't "
+ "installed"),
+ pkg_ver, pkg_name)
+ else:
+ # Fail if the user requests to install the same version
+ # of an already installed package.
+ if (pkg.is_installed and
+ # Compare version numbers
+ pkg_ver and pkg_ver == pkg.installed.version and
+ # Optionally compare the origin if specified
+ (not pkg_rel or
+ pkg_rel in [origin.archive for
+ origin in pkg.installed.origins])):
+ raise TransactionFailed(
+ ERROR_PACKAGE_ALREADY_INSTALLED,
+ _("Package %s is already installed"), pkg_name)
+
+ if pkg_ver:
+ try:
+ pkg.candidate = pkg.versions[pkg_ver]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("The version %s of %s isn't "
+ "available."), pkg_ver, pkg_name)
+ elif pkg_rel:
+ self._set_candidate_release(pkg, pkg_rel)
+
+ pkg.mark_install(False, False, from_user)
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+
+ def enable_distro_comp(self, trans, component):
+ """Enable given component in the sources list.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ component -- a component, e.g. main or universe
+ """
+ trans.progress = 101
+ trans.status = STATUS_COMMITTING
+ old_umask = os.umask(0o022)
+ try:
+ sourceslist = SourcesList()
+ distro = aptsources.distro.get_distro()
+ distro.get_sources(sourceslist)
+ distro.enable_component(component)
+ sourceslist.save()
+ finally:
+ os.umask(old_umask)
+
+ def add_repository(self, trans, src_type, uri, dist, comps, comment,
+ sourcesfile):
+ """Add given repository to the sources list.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ src_type -- the type of the entry (deb, deb-src)
+ uri -- the main repository uri (e.g. http://archive.ubuntu.com/ubuntu)
+ dist -- the distribution to use (e.g. karmic, "/")
+ comps -- a (possible empty) list of components (main, restricted)
+ comment -- an (optional) comment
+ sourcesfile -- an (optinal) filename in sources.list.d
+ """
+ trans.progress = 101
+ trans.status = STATUS_COMMITTING
+
+ if sourcesfile:
+ if not sourcesfile.endswith(".list"):
+ sourcesfile += ".list"
+ dir = apt_pkg.config.find_dir("Dir::Etc::sourceparts")
+ sourcesfile = os.path.join(dir, os.path.basename(sourcesfile))
+ else:
+ sourcesfile = None
+ # Store any private login information in a separate auth.conf file
+ if re.match("(http|https|ftp)://\S+?:\S+?@\S+", uri):
+ uri = self._store_and_strip_password_from_uri(uri)
+ auth_conf_path = apt_pkg.config.find_file("Dir::etc::netrc")
+ if not comment:
+ comment = "credentials stored in %s" % auth_conf_path
+ else:
+ comment += "; credentials stored in %s" % auth_conf_path
+ try:
+ sources = SourcesList()
+ entry = sources.add(src_type, uri, dist, comps, comment,
+ file=sourcesfile)
+ if entry.invalid:
+ # FIXME: Introduce new error codes
+ raise RepositoryInvalidError()
+ except:
+ log.exception("adding repository")
+ raise
+ else:
+ sources.save()
+
+ def _store_and_strip_password_from_uri(self, uri, auth_conf_path=None):
+ """Extract the credentials from an URI. Store the password in
+ auth.conf and return the URI without any password information.
+ """
+ try:
+ res = urlsplit(uri)
+ except ValueError as error:
+ log.warning("Failed to urlsplit '%s'", error)
+ return uri
+ netloc_public = res.netloc.replace("%s:%s@" % (res.username,
+ res.password),
+ "")
+ machine = netloc_public + res.path
+ # find auth.conf
+ if auth_conf_path is None:
+ auth_conf_path = apt_pkg.config.find_file("Dir::etc::netrc")
+
+ # read all "machine"s from the auth.conf "netrc" file
+ netrc_hosts = {}
+ netrc_hosts_as_text = ""
+ if os.path.exists(auth_conf_path):
+ netrc_hosts = netrc.netrc(auth_conf_path).hosts
+ with open(auth_conf_path, "rb") as f:
+ netrc_hosts_as_text = f.read().decode("UTF-8")
+
+ # the new entry
+ new_netrc_entry = "\nmachine %s login %s password %s\n" % (
+ machine, res.username, res.password)
+ # if there is the same machine already defined, update it
+ # using a regexp this will ensure order/comments remain
+ if machine in netrc_hosts:
+ sub_regexp = r'machine\s+%s\s+login\s+%s\s+password\s+%s' % (
+ re.escape(machine),
+ re.escape(netrc_hosts[machine][0]),
+ re.escape(netrc_hosts[machine][2]))
+ replacement = 'machine %s login %s password %s' % (
+ machine, res.username, res.password)
+ # this may happen if e.g. the order is unexpected
+ if not re.search(sub_regexp, netrc_hosts_as_text):
+ log.warning("can not replace existing netrc entry for '%s' "
+ "prepending it instead" % machine)
+ netrc_hosts_as_text = new_netrc_entry + netrc_hosts_as_text
+ else:
+ netrc_hosts_as_text = re.sub(
+ sub_regexp, replacement, netrc_hosts_as_text)
+ else:
+ netrc_hosts_as_text += new_netrc_entry
+
+ # keep permssion bits of the file
+ mode = 0o640
+ try:
+ mode = os.stat(auth_conf_path)[stat.ST_MODE]
+ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+ # write out, tmp file first plus rename to be atomic
+ try:
+ auth_conf_tmp = tempfile.NamedTemporaryFile(
+ dir=os.path.dirname(auth_conf_path),
+ prefix=os.path.basename(auth_conf_path),
+ delete=False)
+ auth_conf_tmp.write(netrc_hosts_as_text.encode('UTF-8'))
+ auth_conf_tmp.close()
+ os.rename(auth_conf_tmp.name, auth_conf_path)
+ # and restore permissions (or set default ones)
+ os.chmod(auth_conf_path, mode)
+ except OSError as error:
+ log.warning("Failed to write auth.conf: '%s'" % error)
+
+ # Return URI without user/pass
+ return urlunsplit((res.scheme, netloc_public, res.path, res.query,
+ res.fragment))
+
+ def add_vendor_key_from_keyserver(self, trans, keyid, keyserver):
+ """Add the signing key from the given (keyid, keyserver) to the
+ trusted vendors.
+
+ Keyword argument:
+ trans -- the corresponding transaction
+ keyid - the keyid of the key (e.g. 0x0EB12F05)
+ keyserver - the keyserver (e.g. keyserver.ubuntu.com)
+ """
+ log.info("Adding vendor key from keyserver: %s %s", keyid, keyserver)
+ # Perform some sanity checks
+ try:
+ res = urlsplit(keyserver)
+ except ValueError:
+ raise TransactionFailed(ERROR_KEY_NOT_INSTALLED,
+ # TRANSLATORS: %s is the URL of GnuPG
+ # keyserver
+ _("The keyserver URL is invalid: %s"),
+ keyserver)
+ if res.scheme not in ["hkp", "ldap", "ldaps", "http", "https"]:
+ raise TransactionFailed(ERROR_KEY_NOT_INSTALLED,
+ # TRANSLATORS: %s is the URL of GnuPG
+ # keyserver
+ _("Invalid protocol of the server: %s"),
+ keyserver)
+ try:
+ int(keyid, 16)
+ except ValueError:
+ raise TransactionFailed(ERROR_KEY_NOT_INSTALLED,
+ # TRANSLATORS: %s is the id of a GnuPG key
+ # e.g. E08ADE95
+ _("Invalid key id: %s"), keyid)
+ trans.status = STATUS_DOWNLOADING
+ trans.progress = 101
+ with DaemonForkProgress(trans) as progress:
+ progress.run(apt.auth.add_key_from_keyserver, keyid, keyserver)
+ if progress._child_exit != 0:
+ # TRANSLATORS: The first %s is the key id and the second the server
+ raise TransactionFailed(ERROR_KEY_NOT_INSTALLED,
+ _("Failed to download and install the key "
+ "%s from %s:\n%s"),
+ keyid, keyserver, progress.output)
+
+ def add_vendor_key_from_file(self, trans, path):
+ """Add the signing key from the given file to the trusted vendors.
+
+ Keyword argument:
+ path -- absolute path to the key file
+ """
+ log.info("Adding vendor key from file: %s", path)
+ trans.progress = 101
+ trans.status = STATUS_COMMITTING
+ with DaemonForkProgress(trans) as progress:
+ progress.run(apt.auth.add_key_from_file, path)
+ if progress._child_exit != 0:
+ raise TransactionFailed(ERROR_KEY_NOT_INSTALLED,
+ _("Key file %s couldn't be installed: %s"),
+ path, progress.output)
+
+ def remove_vendor_key(self, trans, fingerprint):
+ """Remove repository key.
+
+ Keyword argument:
+ trans -- the corresponding transaction
+ fingerprint -- fingerprint of the key to remove
+ """
+ log.info("Removing vendor key: %s", fingerprint)
+ trans.progress = 101
+ trans.status = STATUS_COMMITTING
+ try:
+ int(fingerprint, 16)
+ except ValueError:
+ raise TransactionFailed(ERROR_KEY_NOT_REMOVED,
+ # TRANSLATORS: %s is the id of a GnuPG key
+ # e.g. E08ADE95
+ _("Invalid key id: %s"), fingerprint)
+ with DaemonForkProgress(trans) as progress:
+ progress.run(apt.auth.remove_key, fingerprint)
+ if progress._child_exit != 0:
+ raise TransactionFailed(ERROR_KEY_NOT_REMOVED,
+ _("Key with fingerprint %s couldn't be "
+ "removed: %s"),
+ fingerprint, progress.output)
+
+ def install_file(self, trans, path, force, simulate=False):
+ """Install local package file.
+
+ Keyword argument:
+ trans -- the corresponding transaction
+ path -- absolute path to the package file
+ force -- if installing an invalid package is allowed
+ simulate -- if True the changes won't be committed but the debfile
+ instance will be returned
+ """
+ log.info("Installing local package file: %s", path)
+ # Check if the dpkg can be installed at all
+ trans.status = STATUS_RESOLVING_DEP
+ deb = self._check_deb_file(trans, path, force)
+ # Check for required changes and apply them before
+ (install, remove, unauth) = deb.required_changes
+ self._call_plugins("modify_cache_after")
+ if simulate:
+ return deb
+ with self._frozen_status():
+ if len(install) > 0 or len(remove) > 0:
+ self._apply_changes(trans, fetch_range=(15, 33),
+ install_range=(34, 63))
+ # Install the dpkg file
+ deb_progress = DaemonDpkgInstallProgress(trans, begin=64, end=95)
+ res = deb.install(deb_progress)
+ trans.output += deb_progress.output
+ if res:
+ raise TransactionFailed(ERROR_PACKAGE_MANAGER_FAILED,
+ trans.output)
+
+ def _mark_packages_for_removal(self, packages, resolver, purge=False):
+ """Mark packages for installation."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+ for pkg in packages]:
+ try:
+ pkg = self._cache[pkg_name]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("Package %s isn't available"),
+ pkg_name)
+ if not pkg.is_installed and not pkg.installed_files:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("Package %s isn't installed"),
+ pkg_name)
+ if not self.is_deletable(pkg):
+ raise TransactionFailed(ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE,
+ _("Package %s cannot be removed."),
+ pkg_name)
+ if pkg_ver and pkg.installed != pkg_ver:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("The version %s of %s is not "
+ "installed"), pkg_ver, pkg_name)
+ pkg.mark_delete(False, purge)
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+ resolver.remove(pkg)
+
+ def is_deletable(self, pkg):
+ if pkg.name == "aptdaemon":
+ return False
+
+ if pkg.essential == True or (pkg.installed and pkg.installed.priority == "required"):
+ # Package is essential or required
+ is_orphan = False
+ if pkg.candidate == None or (not pkg.candidate.downloadable):
+ is_orphan = True
+ for version in pkg.versions:
+ if version.downloadable:
+ is_orphan = False
+ break
+ # only allow to delete it if it's an orphan
+ return is_orphan
+
+ return True
+
+ def _check_obsoleted_dependencies(self, trans, resolver=None):
+ """Mark obsoleted dependencies of to be removed packages
+ for removal.
+ """
+ if not trans.remove_obsoleted_depends:
+ return
+ if not resolver:
+ resolver = apt.cache.ProblemResolver(self._cache)
+ installed_deps = set()
+ with self._cache.actiongroup():
+ for pkg in self._cache.get_changes():
+ if pkg.marked_delete:
+ installed_deps = self._installed_dependencies(
+ pkg.name, installed_deps)
+ for dep_name in installed_deps:
+ if dep_name in self._cache:
+ pkg = self._cache[dep_name]
+ if pkg.is_installed and pkg.is_auto_removable:
+ pkg.mark_delete(False)
+ # do an additional resolver run to ensure that the autoremove
+ # never leaves the cache in an inconsistent state, see bug
+ # LP: #659111 for the rational, essentially this may happen
+ # if a package is marked install during problem resolving but
+ # is later no longer required. the resolver deals with that
+ self._resolve_depends(trans, resolver)
+
+ def _installed_dependencies(self, pkg_name, all_deps=None):
+ """Recursively return all installed dependencies of a given package."""
+ # FIXME: Should be part of python-apt, since it makes use of non-public
+ # API. Perhaps by adding a recursive argument to
+ # apt.package.Version.get_dependencies()
+ if not all_deps:
+ all_deps = set()
+ if pkg_name not in self._cache:
+ return all_deps
+ cur = self._cache[pkg_name]._pkg.current_ver
+ if not cur:
+ return all_deps
+ for sec in ("PreDepends", "Depends", "Recommends"):
+ try:
+ for dep in cur.depends_list[sec]:
+ dep_name = dep[0].target_pkg.name
+ if dep_name not in all_deps:
+ all_deps.add(dep_name)
+ all_deps |= self._installed_dependencies(dep_name,
+ all_deps)
+ except KeyError:
+ pass
+ return all_deps
+
+ def _mark_packages_for_downgrade(self, packages, resolver):
+ """Mark packages for downgrade."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+ for pkg in packages]:
+ try:
+ pkg = self._cache[pkg_name]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("Package %s isn't available"),
+ pkg_name)
+ if not pkg.is_installed:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("Package %s isn't installed"),
+ pkg_name)
+ auto = pkg.is_auto_installed
+
+ if pkg_ver:
+ if pkg.installed and pkg.installed.version < pkg_ver:
+ # FIXME: We need a new error enum
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("The former version %s of %s "
+ "is already installed"),
+ pkg.installed.version, pkg.name)
+ elif pkg.installed and pkg.installed.version == pkg_ver:
+ raise TransactionFailed(ERROR_PACKAGE_ALREADY_INSTALLED,
+ _("The version %s of %s "
+ "is already installed"),
+ pkg.installed.version, pkg.name)
+ try:
+ pkg.candidate = pkg.versions[pkg_ver]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("The version %s of %s isn't "
+ "available"), pkg_ver, pkg_name)
+ else:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("You need to specify a version to "
+ "downgrade %s to"),
+ pkg_name)
+
+ pkg.mark_install(False, False, True)
+ pkg.mark_auto(auto)
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+
+ def _mark_packages_for_upgrade(self, packages, resolver):
+ """Mark packages for upgrade."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+ for pkg in packages]:
+ try:
+ pkg = self._cache[pkg_name]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("Package %s isn't available"),
+ pkg_name)
+ if not pkg.is_installed:
+ raise TransactionFailed(ERROR_PACKAGE_NOT_INSTALLED,
+ _("Package %s isn't installed"),
+ pkg_name)
+ auto = pkg.is_auto_installed
+
+ if pkg_ver:
+ if (pkg.installed and
+ apt_pkg.version_compare(pkg.installed.version,
+ pkg_ver) == 1):
+ raise TransactionFailed(ERROR_PACKAGE_UPTODATE,
+ _("The later version %s of %s "
+ "is already installed"),
+ pkg.installed.version, pkg.name)
+ elif (pkg.installed and
+ apt_pkg.version_compare(pkg.installed.version,
+ pkg_ver) == 0):
+ raise TransactionFailed(ERROR_PACKAGE_UPTODATE,
+ _("The version %s of %s "
+ "is already installed"),
+ pkg.installed.version, pkg.name)
+ try:
+ pkg.candidate = pkg.versions[pkg_ver]
+ except KeyError:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("The version %s of %s isn't "
+ "available."), pkg_ver, pkg_name)
+
+ elif pkg_rel:
+ self._set_candidate_release(pkg, pkg_rel)
+
+ pkg.mark_install(False, False, True)
+ pkg.mark_auto(auto)
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+
+ @staticmethod
+ def _set_candidate_release(pkg, release):
+ """Set the candidate of a package to the one from the given release."""
+ # FIXME: Should be moved to python-apt
+ # Check if the package is provided in the release
+ for version in pkg.versions:
+ if [origin for origin in version.origins
+ if origin.archive == release]:
+ break
+ else:
+ raise TransactionFailed(ERROR_NO_PACKAGE,
+ _("The package %s isn't available in "
+ "the %s release."), pkg.name, release)
+ pkg._pcache.cache_pre_change()
+ pkg._pcache._depcache.set_candidate_release(pkg._pkg, version._cand,
+ release)
+ pkg._pcache.cache_post_change()
+
+ def update_cache(self, trans, sources_list):
+ """Update the cache.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ sources_list -- only update the repositories found in the sources.list
+ snippet by the given file name.
+ """
+
+ def compare_pathes(first, second):
+ """Small helper to compare two pathes."""
+ return os.path.normpath(first) == os.path.normpath(second)
+
+ log.info("Updating cache")
+
+ progress = DaemonAcquireRepoProgress(trans, begin=10, end=90)
+ if sources_list and not sources_list.startswith("/"):
+ dir = apt_pkg.config.find_dir("Dir::Etc::sourceparts")
+ sources_list = os.path.join(dir, sources_list)
+ if sources_list:
+ # For security reasons (LP #722228) we only allow files inside
+ # sources.list.d as basedir
+ basedir = apt_pkg.config.find_dir("Dir::Etc::sourceparts")
+ system_sources = apt_pkg.config.find_file("Dir::Etc::sourcelist")
+ if "/" in sources_list:
+ sources_list = os.path.abspath(sources_list)
+ # Check if the sources_list snippet is in the sourceparts
+ # directory
+ common_prefix = os.path.commonprefix([sources_list, basedir])
+ if not (compare_pathes(common_prefix, basedir) or
+ compare_pathes(sources_list, system_sources)):
+ raise AptDaemonError("Only alternative sources.list files "
+ "inside '%s' are allowed (not '%s')" %
+ (basedir, sources_list))
+ else:
+ sources_list = os.path.join(basedir, sources_list)
+ try:
+ self._cache.update(progress, sources_list=sources_list)
+ except apt.cache.FetchFailedException as error:
+ # ListUpdate() method of apt handles a cancelled operation
+ # as a failed one, see LP #162441
+ if trans.cancelled:
+ raise TransactionCancelled()
+ else:
+ raise TransactionFailed(ERROR_REPO_DOWNLOAD_FAILED,
+ str(error))
+ except apt.cache.FetchCancelledException:
+ raise TransactionCancelled()
+ except apt.cache.LockFailedException:
+ raise TransactionFailed(ERROR_NO_LOCK)
+ self._open_cache(trans, begin=91, end=95)
+
+ def upgrade_system(self, trans, safe_mode=True, simulate=False):
+ """Upgrade the system.
+
+ Keyword argument:
+ trans -- the corresponding transaction
+ safe_mode -- if additional software should be installed or removed to
+ satisfy the dependencies the an updates
+ simulate -- if the changes should not be applied
+ """
+ log.info("Upgrade system with safe mode: %s" % safe_mode)
+ trans.status = STATUS_RESOLVING_DEP
+ # FIXME: What to do if already uptotdate? Add error code?
+ self._call_plugins("modify_cache_before")
+ try:
+ self._cache.upgrade(dist_upgrade=not safe_mode)
+ except SystemError as excep:
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED, str(excep))
+ self._call_plugins("modify_cache_after")
+ self._check_obsoleted_dependencies(trans)
+ if not simulate:
+ self._apply_changes(trans)
+
+ def fix_incomplete_install(self, trans):
+ """Run dpkg --configure -a to recover from a failed installation.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ """
+ log.info("Fixing incomplete installs")
+ trans.status = STATUS_CLEANING_UP
+ with self._frozen_status():
+ with DaemonDpkgRecoverProgress(trans) as progress:
+ progress.run()
+ trans.output += progress.output
+ if progress._child_exit != 0:
+ raise TransactionFailed(ERROR_PACKAGE_MANAGER_FAILED,
+ trans.output)
+
+ def reconfigure(self, trans, packages, priority):
+ """Run dpkg-reconfigure to reconfigure installed packages.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ packages -- list of packages to reconfigure
+ priority -- the lowest priority of question which should be asked
+ """
+ log.info("Reconfiguring packages")
+ with self._frozen_status():
+ with DaemonDpkgReconfigureProgress(trans) as progress:
+ progress.run(packages, priority)
+ trans.output += progress.output
+ if progress._child_exit != 0:
+ raise TransactionFailed(ERROR_PACKAGE_MANAGER_FAILED,
+ trans.output)
+
+ def fix_broken_depends(self, trans, simulate=False):
+ """Try to fix broken dependencies.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ simualte -- if the changes should not be applied
+ """
+ log.info("Fixing broken depends")
+ trans.status = STATUS_RESOLVING_DEP
+ try:
+ self._cache._depcache.fix_broken()
+ except SystemError:
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED,
+ self._get_broken_details(trans))
+ if not simulate:
+ self._apply_changes(trans)
+
+ def _open_cache(self, trans, begin=1, end=5, quiet=False, status=None):
+ """Open the APT cache.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ start -- the begin of the progress range
+ end -- the end of the the progress range
+ quiet -- if True do no report any progress
+ status -- an alternative dpkg status file
+ """
+ self.marked_tid = None
+ trans.status = STATUS_LOADING_CACHE
+ if not status:
+ status = self._status_orig
+ apt_pkg.config.set("Dir::State::status", status)
+ apt_pkg.init_system()
+ progress = DaemonOpenProgress(trans, begin=begin, end=end,
+ quiet=quiet)
+ try:
+ if not isinstance(self._cache, apt.cache.Cache):
+ self._cache = apt.cache.Cache(progress)
+ else:
+ self._cache.open(progress)
+ except SystemError as excep:
+ raise TransactionFailed(ERROR_NO_CACHE, str(excep))
+
+ def is_dpkg_journal_clean(self):
+ """Return False if there are traces of incomplete dpkg status
+ updates."""
+ status_updates = os.path.join(os.path.dirname(self._status_orig),
+ "updates/")
+ for dentry in os.listdir(status_updates):
+ if dentry.isdigit():
+ return False
+ return True
+
+ def _apply_changes(self, trans, fetch_range=(15, 50),
+ install_range=(50, 90)):
+ """Apply previously marked changes to the system.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ fetch_range -- tuple containing the start and end point of the
+ download progress
+ install_range -- tuple containing the start and end point of the
+ install progress
+ """
+ changes = self._cache.get_changes()
+ if not changes:
+ return
+ # Do not allow to remove essential packages
+ for pkg in changes:
+ if pkg.marked_delete and not self.is_deletable(pkg):
+ raise TransactionFailed(ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE,
+ _("Package %s cannot be removed"),
+ pkg.name)
+ # Check if any of the cache changes get installed from an
+ # unauthenticated repository""
+ if not trans.allow_unauthenticated and trans.unauthenticated:
+ raise TransactionFailed(ERROR_PACKAGE_UNAUTHENTICATED,
+ " ".join(sorted(trans.unauthenticated)))
+ if trans.cancelled:
+ raise TransactionCancelled()
+ trans.cancellable = False
+ fetch_progress = DaemonAcquireProgress(trans, begin=fetch_range[0],
+ end=fetch_range[1])
+ inst_progress = DaemonInstallProgress(trans, begin=install_range[0],
+ end=install_range[1])
+ with self._frozen_status():
+ try:
+ # This was backported as
+ if "allow_unauthenticated" in apt.Cache.commit.__doc__:
+ self._cache.commit(fetch_progress, inst_progress,
+ allow_unauthenticated=trans.allow_unauthenticated)
+ else:
+ self._cache.commit(fetch_progress, inst_progress)
+ except apt.cache.FetchFailedException as error:
+ raise TransactionFailed(ERROR_PACKAGE_DOWNLOAD_FAILED,
+ str(error))
+ except apt.cache.FetchCancelledException:
+ raise TransactionCancelled()
+ except SystemError as excep:
+ # Run dpkg --configure -a to recover from a failed transaction
+ trans.status = STATUS_CLEANING_UP
+ with DaemonDpkgRecoverProgress(trans, begin=90, end=95) as pro:
+ pro.run()
+ output = inst_progress.output + pro.output
+ trans.output += output
+ raise TransactionFailed(ERROR_PACKAGE_MANAGER_FAILED,
+ "%s: %s" % (excep, trans.output))
+ else:
+ trans.output += inst_progress.output
+
+ @contextlib.contextmanager
+ def _frozen_status(self):
+ """Freeze the status file to allow simulate operations during
+ a dpkg call."""
+ frozen_dir = tempfile.mkdtemp(prefix="aptdaemon-frozen-status")
+ shutil.copy(self._status_orig, frozen_dir)
+ self._status_frozen = os.path.join(frozen_dir, "status")
+ try:
+ yield
+ finally:
+ shutil.rmtree(frozen_dir)
+ self._status_frozen = None
+
+ def query(self, trans):
+ """Process a PackageKit query transaction."""
+ raise NotImplementedError
+
+ def _simulate_transaction(self, trans):
+ depends = [[], [], [], [], [], [], []]
+ unauthenticated = []
+ high_trust_packages = []
+ skip_pkgs = []
+ size = 0
+ installs = reinstalls = removals = purges = upgrades = upgradables = \
+ downgrades = []
+
+ # Only handle transaction which change packages
+ # FIXME: Add support for ROLE_FIX_INCOMPLETE_INSTALL
+ if trans.role not in [ROLE_INSTALL_PACKAGES, ROLE_UPGRADE_PACKAGES,
+ ROLE_UPGRADE_SYSTEM, ROLE_REMOVE_PACKAGES,
+ ROLE_COMMIT_PACKAGES, ROLE_INSTALL_FILE,
+ ROLE_FIX_BROKEN_DEPENDS]:
+ return depends, 0, 0, [], []
+
+ # If a transaction is currently running use the former status file
+ if self._status_frozen:
+ status_path = self._status_frozen
+ else:
+ status_path = self._status_orig
+ self._open_cache(trans, quiet=True, status=status_path)
+ if trans.role == ROLE_FIX_BROKEN_DEPENDS:
+ self.fix_broken_depends(trans, simulate=True)
+ elif self._cache.broken_count:
+ raise TransactionFailed(ERROR_CACHE_BROKEN,
+ self._get_broken_details(trans))
+ elif trans.role == ROLE_UPGRADE_SYSTEM:
+ for pkg in self._iterate_packages():
+ if pkg.is_upgradable:
+ upgradables.append(pkg)
+ self.upgrade_system(trans, simulate=True, **trans.kwargs)
+ elif trans.role == ROLE_INSTALL_FILE:
+ deb = self.install_file(trans, simulate=True, **trans.kwargs)
+ skip_pkgs.append(deb.pkgname)
+ try:
+ # Sometimes a thousands comma is used in packages
+ # See LP #656633
+ size = int(deb["Installed-Size"].replace(",", "")) * 1024
+ # Some packages ship really large install sizes e.g.
+ # openvpn access server, see LP #758837
+ if size > sys.maxsize:
+ raise OverflowError("Size is too large: %s Bytes" % size)
+ except (KeyError, AttributeError, ValueError, OverflowError):
+ if not trans.kwargs["force"]:
+ msg = trans.gettext("The package doesn't provide a "
+ "valid Installed-Size control "
+ "field. See Debian Policy 5.6.20.")
+ raise TransactionFailed(ERROR_INVALID_PACKAGE_FILE, msg)
+ try:
+ pkg = self._cache[deb.pkgname]
+ except KeyError:
+ trans.packages = [[deb.pkgname], [], [], [], [], []]
+ else:
+ if pkg.is_installed:
+ # if we failed to get the size from the deb file do nor
+ # try to get the delta
+ if size != 0:
+ size -= pkg.installed.installed_size
+ trans.packages = [[], [deb.pkgname], [], [], [], []]
+ else:
+ trans.packages = [[deb.pkgname], [], [], [], [], []]
+ else:
+ # FIXME: ugly code to get the names of the packages
+ (installs, reinstalls, removals, purges,
+ upgrades, downgrades) = [[re.split("(=|/)", entry, 1)[0]
+ for entry in lst]
+ for lst in trans.packages]
+ self.commit_packages(trans, *trans.packages, simulate=True)
+
+ changes = self._cache.get_changes()
+ changes_names = []
+ # get the additional dependencies
+ for pkg in changes:
+ if (pkg.marked_upgrade and pkg.is_installed and
+ pkg.name not in upgrades):
+ pkg_str = "%s=%s" % (pkg.name, pkg.candidate.version)
+ depends[PKGS_UPGRADE].append(pkg_str)
+ elif pkg.marked_reinstall and pkg.name not in reinstalls:
+ pkg_str = "%s=%s" % (pkg.name, pkg.candidate.version)
+ depends[PKGS_REINSTALL].append(pkg_str)
+ elif pkg.marked_downgrade and pkg.name not in downgrades:
+ pkg_str = "%s=%s" % (pkg.name, pkg.candidate.version)
+ depends[PKGS_DOWNGRADE].append(pkg_str)
+ elif pkg.marked_install and pkg.name not in installs:
+ pkg_str = "%s=%s" % (pkg.name, pkg.candidate.version)
+ depends[PKGS_INSTALL].append(pkg_str)
+ elif pkg.marked_delete and pkg.name not in removals:
+ pkg_str = "%s=%s" % (pkg.name, pkg.installed.version)
+ depends[PKGS_REMOVE].append(pkg_str)
+ # FIXME: add support for purges
+ changes_names.append(pkg.name)
+ # get the unauthenticated packages
+ unauthenticated = self._get_unauthenticated()
+ high_trust_packages = self._get_high_trust_packages()
+ # Check for skipped upgrades
+ for pkg in upgradables:
+ if pkg.marked_keep:
+ pkg_str = "%s=%s" % (pkg.name, pkg.candidate.version)
+ depends[PKGS_KEEP].append(pkg_str)
+
+ # apt.cache.Cache.required_download requires a clean cache. Under some
+ # strange circumstances it can fail (most likely an interrupted
+ # debconf question), see LP#659438
+ # Running dpkg --configure -a fixes the situation
+ try:
+ required_download = self._cache.required_download
+ except SystemError as error:
+ raise TransactionFailed(ERROR_INCOMPLETE_INSTALL, str(error))
+
+ required_space = size + self._cache.required_space
+
+ return (depends, required_download, required_space, unauthenticated,
+ high_trust_packages)
+
+ def _check_deb_file(self, trans, path, force):
+ """Perform some basic checks for the Debian package.
+
+ :param trans: The transaction instance.
+
+ :returns: An apt.debfile.Debfile instance.
+ """
+ # This code runs as root for simulate and simulate requires no
+ # authentication - so we need to ensure we do not leak information
+ # about files here (LP: #1449587, CVE-2015-1323)
+ with set_euid_egid(trans.uid, trans.gid):
+ if not os.path.isfile(path):
+ raise TransactionFailed(ERROR_UNREADABLE_PACKAGE_FILE, path)
+
+ try:
+ deb = apt.debfile.DebPackage(path, self._cache)
+ except IOError:
+ raise TransactionFailed(ERROR_UNREADABLE_PACKAGE_FILE, path)
+ except Exception as error:
+ raise TransactionFailed(ERROR_INVALID_PACKAGE_FILE, str(error))
+ try:
+ ret = deb.check()
+ except Exception as error:
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED, str(error))
+ if not ret:
+ raise TransactionFailed(ERROR_DEP_RESOLUTION_FAILED,
+ deb._failure_string)
+ return deb
+
+ def clean(self, trans):
+ """Clean the download directories.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ """
+ # FIXME: Use pkgAcquire.Clean(). Currently not part of python-apt.
+ trans.status = STATUS_CLEANING_UP
+ archive_path = apt_pkg.config.find_dir("Dir::Cache::archives")
+ for dir in [archive_path, os.path.join(archive_path, "partial")]:
+ for filename in os.listdir(dir):
+ if filename == "lock":
+ continue
+ path = os.path.join(dir, filename)
+ if os.path.isfile(path):
+ log.debug("Removing file %s", path)
+ os.remove(path)
+
+ def add_license_key(self, trans, pkg_name, json_token, server_name):
+ """Add a license key data to the given package.
+
+ Keyword arguemnts:
+ trans -- the coresponding transaction
+ pkg_name -- the name of the corresponding package
+ json_token -- the oauth token as json
+ server_name -- the server to use (ubuntu-production, ubuntu-staging)
+ """
+ # set transaction state to downloading
+ trans.status = STATUS_DOWNLOADING
+ try:
+ license_key, license_key_path = (
+ self.plugins["get_license_key"][0](trans.uid, pkg_name,
+ json_token, server_name))
+ except Exception as error:
+ logging.exception("get_license_key plugin failed")
+ raise TransactionFailed(ERROR_LICENSE_KEY_DOWNLOAD_FAILED,
+ str(error))
+ # ensure stuff is good
+ if not license_key_path or not license_key:
+ raise TransactionFailed(ERROR_LICENSE_KEY_DOWNLOAD_FAILED,
+ _("The license key is empty"))
+
+ # add license key if we have one
+ self._add_license_key_to_system(pkg_name, license_key,
+ license_key_path)
+
+ def _add_license_key_to_system(self, pkg_name, license_key,
+ license_key_path):
+ # fixup path
+ license_key_path = os.path.join(apt_pkg.config.find_dir("Dir"),
+ license_key_path.lstrip("/"))
+
+ # Check content of the key
+ if (license_key.strip().startswith("#!") or
+ license_key.startswith("\x7fELF")):
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("The license key is not allowed to "
+ "contain executable code."))
+ # Check the path of the license
+ license_key_path = os.path.normpath(license_key_path)
+ license_key_path_rootdir = os.path.join(
+ apt_pkg.config["Dir"], self.LICENSE_KEY_ROOTDIR.lstrip("/"),
+ pkg_name)
+ if not license_key_path.startswith(license_key_path_rootdir):
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("The license key path %s is invalid"),
+ license_key_path)
+ if os.path.lexists(license_key_path):
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("The license key already exists: %s"),
+ license_key_path)
+ # Symlink attacks!
+ if os.path.realpath(license_key_path) != license_key_path:
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("The location of the license key is "
+ "unsecure since it contains symbolic "
+ "links. The path %s maps to %s"),
+ license_key_path,
+ os.path.realpath(license_key_path))
+ # Check if the directory already exists
+ if not os.path.isdir(os.path.dirname(license_key_path)):
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("The directory where to install the key "
+ "to doesn't exist yet: %s"),
+ license_key_path)
+ # write it
+ log.info("Writing license key to '%s'" % license_key_path)
+ old_umask = os.umask(18)
+ try:
+ with open(license_key_path, "w") as license_file:
+ license_file.write(license_key)
+ except IOError:
+ raise TransactionFailed(ERROR_LICENSE_KEY_INSTALL_FAILED,
+ _("Failed to write key file to: %s"),
+ license_key_path)
+ finally:
+ os.umask(old_umask)
+
+ def _iterate_mainloop(self):
+ """Process pending actions on the main loop."""
+ while GLib.main_context_default().pending():
+ GLib.main_context_default().iteration()
+
+ def _iterate_packages(self, interval=1000):
+ """Itarte von the packages of the cache and iterate on the
+ GObject main loop time for more responsiveness.
+
+ Keyword arguments:
+ interval - the number of packages after which we iterate on the
+ mainloop
+ """
+ for enum, pkg in enumerate(self._cache):
+ if not enum % interval:
+ self._iterate_mainloop()
+ yield pkg
+
+ def _get_broken_details(self, trans, now=True):
+ """Return a message which provides debugging information about
+ broken packages.
+
+ This method is basically a Python implementation of apt-get.cc's
+ ShowBroken.
+
+ Keyword arguments:
+ trans -- the corresponding transaction
+ now -- if we check currently broken dependecies or the installation
+ candidate
+ """
+ msg = trans.gettext("The following packages have unmet dependencies:")
+ msg += "\n\n"
+ for pkg in self._cache:
+ if not ((now and pkg.is_now_broken) or
+ (not now and pkg.is_inst_broken)):
+ continue
+ msg += "%s: " % pkg.name
+ if now:
+ version = pkg.installed
+ else:
+ version = pkg.candidate
+ indent = " " * (len(pkg.name) + 2)
+ dep_msg = ""
+ for dep in version.dependencies:
+ or_msg = ""
+ for base_dep in dep.or_dependencies:
+ if or_msg:
+ or_msg += "or\n"
+ or_msg += indent
+ # Check if it's an important dependency
+ # See apt-pkg/depcache.cc IsImportantDep
+ # See apt-pkg/pkgcache.cc IsCritical()
+ if not (base_dep.rawtype in ["Depends", "PreDepends",
+ "Obsoletes", "DpkgBreaks",
+ "Conflicts"] or
+ (apt_pkg.config.find_b("APT::Install-Recommends",
+ False) and
+ base_dep.rawtype == "Recommends") or
+ (apt_pkg.config.find_b("APT::Install-Suggests",
+ False) and
+ base_dep.rawtype == "Suggests")):
+ continue
+ # Get the version of the target package
+ try:
+ pkg_dep = self._cache[base_dep.name]
+ except KeyError:
+ dep_version = None
+ else:
+ if now:
+ dep_version = pkg_dep.installed
+ else:
+ dep_version = pkg_dep.candidate
+ # We only want to display dependencies which cannot
+ # be satisfied
+ if dep_version and not apt_pkg.check_dep(base_dep.version,
+ base_dep.relation,
+ version.version):
+ break
+ or_msg = "%s: %s " % (base_dep.rawtype, base_dep.name)
+ if base_dep.version:
+ or_msg += "(%s %s) " % (base_dep.relation,
+ base_dep.version)
+ if self._cache.is_virtual_package(base_dep.name):
+ or_msg += trans.gettext("but it is a virtual package")
+ elif not dep_version:
+ if now:
+ or_msg += trans.gettext("but it is not installed")
+ else:
+ or_msg += trans.gettext("but it is not going to "
+ "be installed")
+ elif now:
+ # TRANSLATORS: %s is a version number
+ or_msg += (trans.gettext("but %s is installed") %
+ dep_version.version)
+ else:
+ # TRANSLATORS: %s is a version number
+ or_msg += (trans.gettext("but %s is to be installed") %
+ dep_version.version)
+ else:
+ # Only append an or-group if at least one of the
+ # dependencies cannot be satisfied
+ if dep_msg:
+ dep_msg += indent
+ dep_msg += or_msg
+ dep_msg += "\n"
+ msg += dep_msg
+ return msg
+
+ def is_reboot_required(self):
+ """If a reboot is required to get all changes into effect."""
+ return os.path.exists(os.path.join(apt_pkg.config.find_dir("Dir"),
+ "var/run/reboot-required"))
+
+ def set_config(self, option, value, filename=None):
+ """Write a configuration value to file."""
+ if option in ["AutoUpdateInterval", "AutoDownload",
+ "AutoCleanInterval", "UnattendedUpgrade"]:
+ self._set_apt_config(option, value, filename)
+ elif option == "PopConParticipation":
+ self._set_popcon_pariticipation(value)
+
+ def _set_apt_config(self, option, value, filename):
+ config_writer = ConfigWriter()
+ cw.set_value(option, value, filename)
+ apt_pkg.init_config()
+
+ def _set_popcon_participation(self, participate):
+ if participate in [True, 1, "yes"]:
+ value = "yes"
+ else:
+ value = "no"
+ if os.path.exists(_POPCON_PATH):
+ # read the current config and replace the corresponding settings
+ # FIXME: Check if the config file is a valid bash script and
+ # contains the host_id
+ with open(_POPCON_PATH) as conf_file:
+ old_config = conf_file.read()
+ config = re.sub(r'(PARTICIPATE=*)(".+?")',
+ '\\1"%s"' % value,
+ old_config)
+ else:
+ # create a new popcon config file
+ m = md5()
+ m.update(open("/dev/urandom", "r").read(1024))
+ config = _POPCON_DEFAULT % {"host_id": m.hexdigest(),
+ "participate": value}
+
+ with open(_POPCON_PATH, "w") as conf_file:
+ conf_file.write(config)
+
+ def get_config(self, option):
+ """Return a configuration value."""
+ if option == "AutoUpdateInterval":
+ key = "APT::Periodic::Update-Package-Lists"
+ return apt_pkg.config.find_i(key, 0)
+ elif option == "AutoDownload":
+ key = "APT::Periodic::Download-Upgradeable-Packages"
+ return apt_pkg.config.find_b(key, False)
+ elif option == "AutoCleanInterval":
+ key = "APT::Periodic::AutocleanInterval"
+ return apt_pkg.config.find_i(key, 0)
+ elif option == "UnattendedUpgrade":
+ key = "APT::Periodic::Unattended-Upgrade"
+ return apt_pkg.config.find_b(key, False)
+ elif option == "GetPopconParticipation":
+ return self._get_popcon_pariticipation()
+
+ def _get_popcon_participation(self):
+ # FIXME: Use a script to evaluate the configuration:
+ # #!/bin/sh
+ # . /etc/popularitiy-contest.conf
+ # . /usr/share/popularitiy-contest/default.conf
+ # echo $PARTICIAPTE $HOST_ID
+ if os.path.exists(_POPCON_PATH):
+ with open(_POPCON_PATH) as conf_file:
+ config = conf_file.read()
+ match = re.match("\nPARTICIPATE=\"(yes|no)\"", config)
+ if match and match[0] == "yes":
+ return True
+ return False
+
+ def get_trusted_vendor_keys(self):
+ """Return a list of trusted GPG keys."""
+ return [key.keyid for key in apt.auth.list_keys()]
+
+
+# vim:ts=4:sw=4:et
diff --git a/aptdaemon/worker/pkworker.py b/aptdaemon/worker/pkworker.py
new file mode 100644
index 0000000..addfe9a
--- /dev/null
+++ b/aptdaemon/worker/pkworker.py
@@ -0,0 +1,1353 @@
+# !/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Provides a compatibility layer to PackageKit
+
+Copyright (C) 2007 Ali Sabil <ali.sabil@gmail.com>
+Copyright (C) 2007 Tom Parker <palfrey@tevp.net>
+Copyright (C) 2008-2011 Sebastian Heinlein <glatzor@ubuntu.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.
+"""
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import datetime
+import glob
+import gzip
+import locale
+import logging
+import os
+import platform
+import re
+import subprocess
+import tempfile
+import time
+
+import apt_pkg
+
+
+import gi
+gi.require_version('PackageKitGlib', '1.0')
+
+from gi.repository import GObject
+from gi.repository import PackageKitGlib as pk
+
+# for optional plugin support
+try:
+ import pkg_resources
+except ImportError:
+ pkg_resources = None
+
+from ..pkutils import (bitfield_add, bitfield_remove, bitfield_summarize,
+ bitfield_contains)
+from . import enums as aptd_enums
+from ..errors import TransactionFailed
+from ..progress import DaemonAcquireProgress
+from . import aptworker
+
+
+pklog = logging.getLogger("AptDaemon.PackageKitWorker")
+
+# Check if update-manager-core is installed to get aware of the
+# latest distro releases
+try:
+ from UpdateManager.Core.MetaRelease import MetaReleaseCore
+except ImportError:
+ META_RELEASE_SUPPORT = False
+else:
+ META_RELEASE_SUPPORT = True
+
+# Xapian database is optionally used to speed up package description search
+XAPIAN_DB_PATH = os.environ.get("AXI_DB_PATH", "/var/lib/apt-xapian-index")
+XAPIAN_DB = XAPIAN_DB_PATH + "/index"
+XAPIAN_DB_VALUES = XAPIAN_DB_PATH + "/values"
+XAPIAN_SUPPORT = False
+try:
+ import xapian
+except ImportError:
+ pass
+else:
+ if os.access(XAPIAN_DB, os.R_OK):
+ pklog.debug("Use XAPIAN for the search")
+ XAPIAN_SUPPORT = True
+
+# Regular expressions to detect bug numbers in changelogs according to the
+# Debian Policy Chapter 4.4. For details see the footnote 16:
+# http://www.debian.org/doc/debian-policy/footnotes.html#f16
+MATCH_BUG_CLOSES_DEBIAN = (
+ r"closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*")
+MATCH_BUG_NUMBERS = r"\#?\s?(\d+)"
+# URL pointing to a bug in the Debian bug tracker
+HREF_BUG_DEBIAN = "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%s"
+
+MATCH_BUG_CLOSES_UBUNTU = r"lp:\s+\#\d+(?:,\s*\#\d+)*"
+HREF_BUG_UBUNTU = "https://bugs.launchpad.net/bugs/%s"
+
+# Regular expression to find cve references
+MATCH_CVE = "CVE-\d{4}-\d{4}"
+HREF_CVE = "http://web.nvd.nist.gov/view/vuln/detail?vulnId=%s"
+
+# Map Debian sections to the PackageKit group name space
+SECTION_GROUP_MAP = {
+ "admin": pk.GroupEnum.ADMIN_TOOLS,
+ "base": pk.GroupEnum.SYSTEM,
+ "cli-mono": pk.GroupEnum.PROGRAMMING,
+ "comm": pk.GroupEnum.COMMUNICATION,
+ "database": pk.GroupEnum.SERVERS,
+ "debian-installer": pk.GroupEnum.SYSTEM,
+ "debug": pk.GroupEnum.PROGRAMMING,
+ "devel": pk.GroupEnum.PROGRAMMING,
+ "doc": pk.GroupEnum.DOCUMENTATION,
+ "editors": pk.GroupEnum.PUBLISHING,
+ "education": pk.GroupEnum.EDUCATION,
+ "electronics": pk.GroupEnum.ELECTRONICS,
+ "embedded": pk.GroupEnum.SYSTEM,
+ "fonts": pk.GroupEnum.FONTS,
+ "games": pk.GroupEnum.GAMES,
+ "gnome": pk.GroupEnum.DESKTOP_GNOME,
+ "gnu-r": pk.GroupEnum.PROGRAMMING,
+ "gnustep": pk.GroupEnum.DESKTOP_OTHER,
+ "graphics": pk.GroupEnum.GRAPHICS,
+ "hamradio": pk.GroupEnum.COMMUNICATION,
+ "haskell": pk.GroupEnum.PROGRAMMING,
+ "httpd": pk.GroupEnum.SERVERS,
+ "interpreters": pk.GroupEnum.PROGRAMMING,
+ "introspection": pk.GroupEnum.PROGRAMMING,
+ "java": pk.GroupEnum.PROGRAMMING,
+ "kde": pk.GroupEnum.DESKTOP_KDE,
+ "kernel": pk.GroupEnum.SYSTEM,
+ "libdevel": pk.GroupEnum.PROGRAMMING,
+ "libs": pk.GroupEnum.SYSTEM,
+ "lisp": pk.GroupEnum.PROGRAMMING,
+ "localization": pk.GroupEnum.LOCALIZATION,
+ "mail": pk.GroupEnum.INTERNET,
+ "math": pk.GroupEnum.SCIENCE,
+ "misc": pk.GroupEnum.OTHER,
+ "net": pk.GroupEnum.NETWORK,
+ "news": pk.GroupEnum.INTERNET,
+ "ocaml": pk.GroupEnum.PROGRAMMING,
+ "oldlibs": pk.GroupEnum.LEGACY,
+ "otherosfs": pk.GroupEnum.SYSTEM,
+ "perl": pk.GroupEnum.PROGRAMMING,
+ "php": pk.GroupEnum.PROGRAMMING,
+ "python": pk.GroupEnum.PROGRAMMING,
+ "ruby": pk.GroupEnum.PROGRAMMING,
+ "science": pk.GroupEnum.SCIENCE,
+ "shells": pk.GroupEnum.ADMIN_TOOLS,
+ "sound": pk.GroupEnum.MULTIMEDIA,
+ "tex": pk.GroupEnum.PUBLISHING,
+ "text": pk.GroupEnum.PUBLISHING,
+ "utils": pk.GroupEnum.ACCESSORIES,
+ "vcs": pk.GroupEnum.PROGRAMMING,
+ "video": pk.GroupEnum.MULTIMEDIA,
+ "virtual": pk.GroupEnum.COLLECTIONS,
+ "web": pk.GroupEnum.INTERNET,
+ "xfce": pk.GroupEnum.DESKTOP_OTHER,
+ "x11": pk.GroupEnum.DESKTOP_OTHER,
+ "zope": pk.GroupEnum.PROGRAMMING,
+ "unknown": pk.GroupEnum.UNKNOWN,
+ "alien": pk.GroupEnum.UNKNOWN,
+ "translations": pk.GroupEnum.LOCALIZATION,
+ "metapackages": pk.GroupEnum.COLLECTIONS,
+ "tasks": pk.GroupEnum.COLLECTIONS}
+
+
+class AptPackageKitWorker(aptworker.AptWorker):
+
+ _plugins = None
+
+ """Process PackageKit Query transactions."""
+
+ def __init__(self, chroot=None, load_plugins=True):
+ aptworker.AptWorker.__init__(self, chroot, load_plugins)
+
+ self.roles = bitfield_summarize(pk.RoleEnum.REFRESH_CACHE,
+ pk.RoleEnum.UPDATE_PACKAGES,
+ pk.RoleEnum.INSTALL_PACKAGES,
+ pk.RoleEnum.INSTALL_FILES,
+ pk.RoleEnum.REMOVE_PACKAGES,
+ pk.RoleEnum.GET_UPDATES,
+ pk.RoleEnum.GET_UPDATE_DETAIL,
+ pk.RoleEnum.GET_PACKAGES,
+ pk.RoleEnum.GET_DETAILS,
+ pk.RoleEnum.SEARCH_NAME,
+ pk.RoleEnum.SEARCH_DETAILS,
+ pk.RoleEnum.SEARCH_GROUP,
+ pk.RoleEnum.SEARCH_FILE,
+ pk.RoleEnum.WHAT_PROVIDES,
+ pk.RoleEnum.REPO_ENABLE,
+ pk.RoleEnum.INSTALL_SIGNATURE,
+ pk.RoleEnum.REPAIR_SYSTEM,
+ pk.RoleEnum.CANCEL,
+ pk.RoleEnum.DOWNLOAD_PACKAGES)
+ if META_RELEASE_SUPPORT:
+ self.roles = bitfield_add(self.roles,
+ pk.RoleEnum.GET_DISTRO_UPGRADES)
+ self.filters = bitfield_summarize(pk.FilterEnum.INSTALLED,
+ pk.FilterEnum.NOT_INSTALLED,
+ pk.FilterEnum.FREE,
+ pk.FilterEnum.NOT_FREE,
+ pk.FilterEnum.GUI,
+ pk.FilterEnum.NOT_GUI,
+ pk.FilterEnum.COLLECTIONS,
+ pk.FilterEnum.NOT_COLLECTIONS,
+ pk.FilterEnum.SUPPORTED,
+ pk.FilterEnum.NOT_SUPPORTED,
+ pk.FilterEnum.ARCH,
+ pk.FilterEnum.NOT_ARCH,
+ pk.FilterEnum.NEWEST)
+ self.groups = bitfield_summarize(*SECTION_GROUP_MAP.values())
+ # FIXME: Add support for Plugins
+ self.provides = (pk.ProvidesEnum.ANY)
+ self.mime_types = ["application/x-deb"]
+
+ def _run_transaction(self, trans):
+ if (hasattr(trans, "pktrans") and
+ bitfield_contains(trans.pktrans.flags,
+ pk.TransactionFlagEnum.SIMULATE)):
+ self._simulate_and_emit_packages(trans)
+ return False
+ else:
+ return aptworker.AptWorker._run_transaction(self, trans)
+
+ def _simulate_and_emit_packages(self, trans):
+ trans.status = aptd_enums.STATUS_RUNNING
+
+ self._simulate_transaction_idle(trans)
+
+ # The simulate method lets the transaction fail in the case of an
+ # error
+ if trans.exit == aptd_enums.EXIT_UNFINISHED:
+ # It is a little bit complicated to get the packages but avoids
+ # a larger refactoring of apt.AptWorker._simulate()
+ for pkg in trans.depends[aptd_enums.PKGS_INSTALL]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.INSTALLING)
+ for pkg in trans.depends[aptd_enums.PKGS_REINSTALL]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.REINSTALLING)
+ for pkg in trans.depends[aptd_enums.PKGS_REMOVE]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.REMOVING)
+ for pkg in trans.depends[aptd_enums.PKGS_PURGE]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.REMOVING)
+ for pkg in trans.depends[aptd_enums.PKGS_UPGRADE]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.UPDATING, force_candidate=True)
+ for pkg in trans.depends[aptd_enums.PKGS_DOWNGRADE]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.DOWNGRADING,
+ force_candidate=True)
+ for pkg in trans.depends[aptd_enums.PKGS_KEEP]:
+ self._emit_package(trans,
+ self._cache[self._split_package_id(pkg)[0]],
+ pk.InfoEnum.BLOCKED, force_candidate=True)
+ for pkg in trans.unauthenticated:
+ self._emit_package(trans, self._cache[pkg],
+ pk.InfoEnum.UNTRUSTED, force_candidate=True)
+ trans.status = aptd_enums.STATUS_FINISHED
+ trans.progress = 100
+ trans.exit = aptd_enums.EXIT_SUCCESS
+ tid = trans.tid[:]
+ self.trans = None
+ self.marked_tid = None
+ self._emit_transaction_done(trans)
+ pklog.info("Finished transaction %s", tid)
+
+ def query(self, trans):
+ """Run the worker"""
+ if trans.role != aptd_enums.ROLE_PK_QUERY:
+ raise TransactionFailed(aptd_enums.ERROR_UNKNOWN,
+ "The transaction doesn't seem to be "
+ "a query")
+ if trans.pktrans.role == pk.RoleEnum.RESOLVE:
+ self.resolve(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_UPDATES:
+ self.get_updates(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_UPDATE_DETAIL:
+ self.get_update_detail(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_PACKAGES:
+ self.get_packages(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_FILES:
+ self.get_files(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.SEARCH_NAME:
+ self.search_names(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.SEARCH_GROUP:
+ self.search_groups(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.SEARCH_DETAILS:
+ self.search_details(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.SEARCH_FILE:
+ self.search_files(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_DETAILS:
+ self.get_details(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.DOWNLOAD_PACKAGES:
+ self.download_packages(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.WHAT_PROVIDES:
+ self.what_provides(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.REPO_ENABLE:
+ self.repo_enable(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.INSTALL_SIGNATURE:
+ self.install_signature(trans, **trans.kwargs)
+ else:
+ raise TransactionFailed(aptd_enums.ERROR_UNKNOWN,
+ "Role %s isn't supported",
+ trans.pktrans.role)
+
+ def search_files(self, trans, filters, values):
+ """Implement org.freedesktop.PackageKit.Transaction.SearchFiles()
+
+ Works only for installed file if apt-file isn't installed.
+ """
+ trans.progress = 101
+
+ result_names = set()
+ # Optionally make use of apt-file's Contents cache to search for not
+ # installed files. But still search for installed files additionally
+ # to make sure that we provide up-to-date results
+ if (os.path.exists("/usr/bin/apt-file") and
+ not bitfield_contains(filters, pk.FilterEnum.INSTALLED)):
+ # FIXME: use rapt-file on Debian if the network is available
+ # FIXME: Show a warning to the user if the apt-file cache is
+ # several weeks old
+ pklog.debug("Using apt-file")
+ filenames_regex = []
+ for filename in values:
+ if filename.startswith("/"):
+ pattern = "^%s$" % filename[1:].replace("/", "\/")
+ else:
+ pattern = "\/%s$" % filename
+ filenames_regex.append(pattern)
+ cmd = ["/usr/bin/apt-file", "--regexp", "--non-interactive",
+ "--package-only", "find", "|".join(filenames_regex)]
+ pklog.debug("Calling: %s" % cmd)
+ apt_file = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ stdout, stderr = apt_file.communicate()
+ if apt_file.returncode == 0:
+ # FIXME: Actually we should check if the file is part of the
+ # candidate, e.g. if unstable and experimental are
+ # enabled and a file would only be part of the
+ # experimental version
+ result_names.update(stdout.split())
+ self._emit_visible_packages_by_name(trans, filters,
+ result_names)
+ else:
+ raise TransactionFailed(aptd_enums.ERROR_INTERNAL_ERROR,
+ "%s %s" % (stdout, stderr))
+ # Search for installed files
+ filenames_regex = []
+ for filename in values:
+ if filename.startswith("/"):
+ pattern = "^%s$" % filename.replace("/", "\/")
+ else:
+ pattern = ".*\/%s$" % filename
+ filenames_regex.append(pattern)
+ files_pattern = re.compile("|".join(filenames_regex))
+ for pkg in self._iterate_packages():
+ if pkg.name in result_names:
+ continue
+ for installed_file in self._get_installed_files(pkg):
+ if files_pattern.match(installed_file):
+ self._emit_visible_package(trans, filters, pkg)
+ break
+
+ def search_groups(self, trans, filters, values):
+ """Implement org.freedesktop.PackageKit.Transaction.SearchGroups()"""
+ # FIXME: Handle repo and category search
+ trans.progress = 101
+
+ for pkg in self._iterate_packages():
+ group_str = pk.group_enum_to_string(self._get_package_group(pkg))
+ if group_str in values:
+ self._emit_visible_package(trans, filters, pkg)
+
+ def search_names(self, trans, filters, values):
+ """Implement org.freedesktop.PackageKit.Transaction.SearchNames()"""
+ def matches(searches, text):
+ for search in searches:
+ if search not in text:
+ return False
+ return True
+ trans.progress = 101
+
+ for pkg_name in list(self._cache.keys()):
+ if matches(values, pkg_name):
+ self._emit_all_visible_pkg_versions(trans, filters,
+ self._cache[pkg_name])
+
+ def search_details(self, trans, filters, values):
+ """Implement org.freedesktop.PackageKit.Transaction.SearchDetails()"""
+ trans.progress = 101
+
+ if XAPIAN_SUPPORT is True:
+ search_flags = (xapian.QueryParser.FLAG_BOOLEAN |
+ xapian.QueryParser.FLAG_PHRASE |
+ xapian.QueryParser.FLAG_LOVEHATE |
+ xapian.QueryParser.FLAG_BOOLEAN_ANY_CASE)
+ pklog.debug("Performing xapian db based search")
+ db = xapian.Database(XAPIAN_DB)
+ parser = xapian.QueryParser()
+ parser.set_default_op(xapian.Query.OP_AND)
+ query = parser.parse_query(" ".join(values), search_flags)
+ enquire = xapian.Enquire(db)
+ enquire.set_query(query)
+ matches = enquire.get_mset(0, 1000)
+ for pkg_name in (match.document.get_data()
+ for match in enquire.get_mset(0, 1000)):
+ if pkg_name in self._cache:
+ self._emit_visible_package(trans, filters,
+ self._cache[pkg_name])
+ else:
+ def matches(searches, text):
+ for search in searches:
+ if search not in text:
+ return False
+ return True
+ pklog.debug("Performing apt cache based search")
+ values = [val.lower() for val in values]
+ for pkg in self._iterate_packages():
+ txt = pkg.name
+ try:
+ txt += pkg.candidate.raw_description.lower()
+ txt += pkg.candidate._translated_records.long_desc.lower()
+ except AttributeError:
+ pass
+ if matches(values, txt):
+ self._emit_visible_package(trans, filters, pkg)
+
+ def get_updates(self, trans, filters):
+ """Only report updates which can be installed safely: Which can depend
+ on the installation of additional packages but which don't require
+ the removal of already installed packages or block any other update.
+ """
+ def succeeds_security_update(pkg):
+ """
+ Return True if an update succeeds a previous security update
+
+ An example would be a package with version 1.1 in the security
+ archive and 1.1.1 in the archive of proposed updates or the
+ same version in both archives.
+ """
+ for version in pkg.versions:
+ # Only check versions between the installed and the candidate
+ if (pkg.installed and
+ apt_pkg.version_compare(version.version,
+ pkg.installed.version) <= 0 and
+ apt_pkg.version_compare(version.version,
+ pkg.candidate.version) > 0):
+ continue
+ for origin in version.origins:
+ if (origin.origin in ["Debian", "Ubuntu"] and
+ (origin.archive.endswith("-security") or
+ origin.label == "Debian-Security") and
+ origin.trusted):
+ return True
+ return False
+ # FIXME: Implment the basename filter
+ self.cancellable = False
+ self.progress = 101
+ # Start with a safe upgrade
+ try:
+ self._cache.upgrade(dist_upgrade=True)
+ except SystemError:
+ pass
+ for pkg in self._iterate_packages():
+ if not pkg.is_upgradable:
+ continue
+ # This may occur on pinned packages which have been updated to
+ # later version than the pinned one
+ if not pkg.candidate.origins:
+ continue
+ if not pkg.marked_upgrade:
+ # FIXME: Would be nice to all show why
+ self._emit_package(trans, pkg, pk.InfoEnum.BLOCKED,
+ force_candidate=True)
+ continue
+ # The update can be safely installed
+ info = pk.InfoEnum.NORMAL
+ # Detect the nature of the upgrade (e.g. security, enhancement)
+ candidate_origin = pkg.candidate.origins[0]
+ archive = candidate_origin.archive
+ origin = candidate_origin.origin
+ trusted = candidate_origin.trusted
+ label = candidate_origin.label
+ if origin in ["Debian", "Ubuntu"] and trusted is True:
+ if archive.endswith("-security") or label == "Debian-Security":
+ info = pk.InfoEnum.SECURITY
+ elif succeeds_security_update(pkg):
+ pklog.debug("Update of %s succeeds a security update. "
+ "Raising its priority." % pkg.name)
+ info = pk.InfoEnum.SECURITY
+ elif archive.endswith("-backports"):
+ info = pk.InfoEnum.ENHANCEMENT
+ elif archive.endswith("-updates"):
+ info = pk.InfoEnum.BUGFIX
+ if origin in ["Backports.org archive"] and trusted is True:
+ info = pk.InfoEnum.ENHANCEMENT
+ self._emit_package(trans, pkg, info, force_candidate=True)
+ self._emit_require_restart(trans)
+
+ def _emit_require_restart(self, trans):
+ """Emit RequireRestart if required."""
+ # Check for a system restart
+ if self.is_reboot_required():
+ trans.pktrans.RequireRestart(pk.RestartEnum.SYSTEM, "")
+
+ def get_update_detail(self, trans, package_ids):
+ """
+ Implement the {backend}-get-update-details functionality
+ """
+ def get_bug_urls(changelog):
+ """
+ Create a list of urls pointing to closed bugs in the changelog
+ """
+ urls = []
+ for r in re.findall(MATCH_BUG_CLOSES_DEBIAN, changelog,
+ re.IGNORECASE | re.MULTILINE):
+ urls.extend([HREF_BUG_DEBIAN % bug for bug in
+ re.findall(MATCH_BUG_NUMBERS, r)])
+ for r in re.findall(MATCH_BUG_CLOSES_UBUNTU, changelog,
+ re.IGNORECASE | re.MULTILINE):
+ urls.extend([HREF_BUG_UBUNTU % bug for bug in
+ re.findall(MATCH_BUG_NUMBERS, r)])
+ return urls
+
+ def get_cve_urls(changelog):
+ """
+ Create a list of urls pointing to cves referred in the changelog
+ """
+ return [HREF_CVE % c for c in re.findall(MATCH_CVE, changelog,
+ re.MULTILINE)]
+
+ trans.progress = 0
+ trans.cancellable = False
+ trans.pktrans.status = pk.StatusEnum.DOWNLOAD_CHANGELOG
+ total = len(package_ids)
+ count = 1
+ old_locale = locale.getlocale(locale.LC_TIME)
+ locale.setlocale(locale.LC_TIME, "C")
+ for pkg_id in package_ids:
+ self._iterate_mainloop()
+ trans.progress = count * 100 / total
+ count += 1
+ pkg = self._get_package_by_id(pkg_id)
+ # FIXME add some real data
+ if pkg.installed.origins:
+ installed_origin = pkg.installed.origins[0].label
+ # APT returns a str with Python 2
+ if isinstance(installed_origin, bytes):
+ installed_origin = installed_origin.decode("UTF-8")
+ else:
+ installed_origin = ""
+ updates = ["%s;%s;%s;%s" % (pkg.name, pkg.installed.version,
+ pkg.installed.architecture,
+ installed_origin)]
+ # Get the packages which will be replaced by the update
+ obsoletes = set()
+ if pkg.candidate:
+ for dep_group in pkg.candidate.get_dependencies("Replaces"):
+ for dep in dep_group:
+ try:
+ obs = self._cache[dep.name]
+ except KeyError:
+ continue
+ if not obs.installed:
+ continue
+ if dep.relation:
+ cmp = apt_pkg.version_compare(
+ obs.candidate.version,
+ dep.version)
+ # Same version
+ if cmp == 0 and dep.relation in [">", "<"]:
+ continue
+ # Installed version higer
+ elif cmp < 0 and dep.relation in ["<"]:
+ continue
+ # Installed version lower
+ elif cmp > 0 and dep.relation in [">"]:
+ continue
+ obs_id = self._get_id_from_version(obs.installed)
+ obsoletes.add(obs_id)
+ vendor_urls = []
+ restart = pk.RestartEnum.NONE
+ update_text = ""
+ state = pk.UpdateStateEnum.UNKNOWN
+ # FIXME: Add support for Ubuntu and a better one for Debian
+ if (pkg.candidate and pkg.candidate.origins[0].trusted and
+ pkg.candidate.origins[0].label == "Debian"):
+ archive = pkg.candidate.origins[0].archive
+ if archive == "stable":
+ state = pk.UpdateStateEnum.STABLE
+ elif archive == "testing":
+ state = pk.UpdateStateEnum.TESTING
+ elif archive == "unstable":
+ state = pk.UpdateStateEnum.UNSTABLE
+ issued = ""
+ updated = ""
+ # FIXME: make this more configurable. E.g. a dbus update requires
+ # a reboot on Ubuntu but not on Debian
+ if (pkg.name.startswith("linux-image-") or
+ pkg.name in ["libc6", "dbus"]):
+ restart == pk.RestartEnum.SYSTEM
+ changelog_dir = apt_pkg.config.find_dir("Dir::Cache::Changelogs")
+ if changelog_dir == "/":
+ changelog_dir = os.path.join(apt_pkg.config.find_dir("Dir::"
+ "Cache"),
+ "Changelogs")
+ filename = os.path.join(changelog_dir,
+ "%s_%s.gz" % (pkg.name,
+ pkg.candidate.version))
+ changelog_raw = ""
+ if os.path.exists(filename):
+ pklog.debug("Reading changelog from cache")
+ changelog_file = gzip.open(filename, "rb")
+ try:
+ changelog_raw = changelog_file.read().decode("UTF-8")
+ except:
+ pass
+ finally:
+ changelog_file.close()
+ if not changelog_raw:
+ pklog.debug("Downloading changelog")
+ changelog_raw = pkg.get_changelog()
+ # The internal download error string of python-apt ist not
+ # provided as unicode object
+ if not isinstance(changelog_raw, str):
+ changelog_raw = changelog_raw.decode("UTF-8")
+ # Cache the fetched changelog
+ if not os.path.exists(changelog_dir):
+ os.makedirs(changelog_dir)
+ # Remove old cached changelogs
+ pattern = os.path.join(changelog_dir, "%s_*" % pkg.name)
+ for old_changelog in glob.glob(pattern):
+ os.remove(os.path.join(changelog_dir, old_changelog))
+ changelog_file = gzip.open(filename, mode="wb")
+ try:
+ changelog_file.write(changelog_raw.encode("UTF-8"))
+ finally:
+ changelog_file.close()
+ # Convert the changelog to markdown syntax
+ changelog = ""
+ for line in changelog_raw.split("\n"):
+ if line == "":
+ changelog += " \n"
+ else:
+ changelog += " %s \n" % line
+ if line.startswith(pkg.candidate.source_name):
+ match = re.match(r"(?P<source>.+) \((?P<version>.*)\) "
+ "(?P<dist>.+); urgency=(?P<urgency>.+)",
+ line)
+ update_text += "%s\n%s\n\n" % (match.group("version"),
+ "=" *
+ len(match.group("version")))
+ elif line.startswith(" "):
+ # FIXME: The GNOME PackageKit markup parser doesn't support
+ # monospaced yet
+ # update_text += " %s \n" % line
+ update_text += "%s\n\n" % line
+ elif line.startswith(" --"):
+ # FIXME: Add %z for the time zone - requires Python 2.6
+ update_text += " \n"
+ match = re.match("^ -- (?P<maintainer>.+) (?P<mail><.+>) "
+ "(?P<date>.+) (?P<offset>[-\+][0-9]+)$",
+ line)
+ if not match:
+ continue
+ try:
+ date = datetime.datetime.strptime(match.group("date"),
+ "%a, %d %b %Y "
+ "%H:%M:%S")
+ except ValueError:
+ continue
+ issued = date.isoformat()
+ if not updated:
+ updated = date.isoformat()
+ if issued == updated:
+ updated = ""
+ bugzilla_urls = get_bug_urls(changelog)
+ cve_urls = get_cve_urls(changelog)
+ trans.emit_update_detail(pkg_id, updates, obsoletes, vendor_urls,
+ bugzilla_urls, cve_urls, restart,
+ update_text, changelog,
+ state, issued, updated)
+ locale.setlocale(locale.LC_TIME, old_locale)
+
+ def get_details(self, trans, package_ids):
+ """Implement org.freedesktop.PackageKit.Transaction.GetDetails()"""
+ trans.progress = 101
+
+ for pkg_id in package_ids:
+ version = self._get_version_by_id(pkg_id)
+ # FIXME: We need more fine grained license information!
+ origins = version.origins
+ if (origins and
+ origins[0].component in ["main", "universe"] and
+ origins[0].origin in ["Debian", "Ubuntu"]):
+ license = "free"
+ else:
+ license = "unknown"
+ group = self._get_package_group(version.package)
+ trans.emit_details(pkg_id, license, group, version.description,
+ version.homepage, version.size)
+
+ def get_packages(self, trans, filters):
+ """Implement org.freedesktop.PackageKit.Transaction.GetPackages()"""
+ self.progress = 101
+
+ for pkg in self._iterate_packages():
+ if self._is_package_visible(pkg, filters):
+ self._emit_package(trans, pkg)
+
+ def resolve(self, trans, filters, packages):
+ """Implement org.freedesktop.PackageKit.Transaction.Resolve()"""
+ trans.status = aptd_enums.STATUS_QUERY
+ trans.progress = 101
+ self.cancellable = False
+
+ for name in packages:
+ try:
+ # Check if the name is a valid package id
+ version = self._get_version_by_id(name)
+ except ValueError:
+ pass
+ else:
+ if self._is_version_visible(version, filters):
+ self._emit_pkg_version(trans, version)
+ continue
+ # The name seems to be a normal name
+ try:
+ pkg = self._cache[name]
+ except KeyError:
+ raise TransactionFailed(aptd_enums.ERROR_NO_PACKAGE,
+ "Package name %s could not be "
+ "resolved.", name)
+ else:
+ self._emit_all_visible_pkg_versions(trans, filters, pkg)
+
+ def get_depends(self, trans, filters, package_ids, recursive):
+ """Emit all dependencies of the given package ids.
+
+ Doesn't support recursive dependency resolution.
+ """
+ def emit_blocked_dependency(base_dependency, pkg=None,
+ filters=pk.FilterEnum.NONE):
+ """Send a blocked package signal for the given
+ apt.package.BaseDependency.
+ """
+ if pk.FilterEnum.INSTALLED in filters:
+ return
+ if pkg:
+ summary = pkg.candidate.summary
+ filters = bitfield_remove(filters, pk.FilterEnum.NOT_INSTALLED)
+ if not self._is_package_visible(pkg, filters):
+ return
+ else:
+ summary = ""
+ if base_dependency.relation:
+ version = "%s%s" % (base_dependency.relation,
+ base_dependency.version)
+ else:
+ version = base_dependency.version
+ trans.emit_package("%s;%s;;" % (base_dependency.name, version),
+ pk.InfoEnum.BLOCKED, summary)
+
+ def check_dependency(pkg, base_dep):
+ """Check if the given apt.package.Package can satisfy the
+ BaseDepenendcy and emit the corresponding package signals.
+ """
+ if not self._is_package_visible(pkg, filters):
+ return
+ if base_dep.version:
+ satisfied = False
+ # Sort the version list to check the installed
+ # and candidate before the other ones
+ ver_list = list(pkg.versions)
+ if pkg.installed:
+ ver_list.remove(pkg.installed)
+ ver_list.insert(0, pkg.installed)
+ if pkg.candidate:
+ ver_list.remove(pkg.candidate)
+ ver_list.insert(0, pkg.candidate)
+ for dep_ver in ver_list:
+ if apt_pkg.check_dep(dep_ver.version,
+ base_dep.relation,
+ base_dep.version):
+ self._emit_pkg_version(trans, dep_ver)
+ satisfied = True
+ break
+ if not satisfied:
+ emit_blocked_dependency(base_dep, pkg, filters)
+ else:
+ self._emit_package(trans, pkg)
+
+ # Setup the transaction
+ self.status = aptd_enums.STATUS_RESOLVING_DEP
+ trans.progress = 101
+ self.cancellable = True
+
+ dependency_types = ["PreDepends", "Depends"]
+ if apt_pkg.config["APT::Install-Recommends"]:
+ dependency_types.append("Recommends")
+ for id in package_ids:
+ version = self._get_version_by_id(id)
+ for dependency in version.get_dependencies(*dependency_types):
+ # Walk through all or_dependencies
+ for base_dep in dependency.or_dependencies:
+ if self._cache.is_virtual_package(base_dep.name):
+ # Check each proivider of a virtual package
+ for provider in self._cache.get_providing_packages(
+ base_dep.name):
+ check_dependency(provider, base_dep)
+ elif base_dep.name in self._cache:
+ check_dependency(self._cache[base_dep.name], base_dep)
+ else:
+ # The dependency does not exist
+ emit_blocked_dependency(trans, base_dep,
+ filters=filters)
+
+ def get_requires(self, trans, filters, package_ids, recursive):
+ """Emit all packages which depend on the given ids.
+
+ Recursive searching is not supported.
+ """
+ self.status = aptd_enums.STATUS_RESOLVING_DEP
+ self.progress = 101
+ self.cancellable = True
+ for id in package_ids:
+ version = self._get_version_by_id(id)
+ for pkg in self._iterate_packages():
+ if not self._is_package_visible(pkg, filters):
+ continue
+ if pkg.is_installed:
+ pkg_ver = pkg.installed
+ elif pkg.candidate:
+ pkg_ver = pkg.candidate
+ for dependency in pkg_ver.dependencies:
+ satisfied = False
+ for base_dep in dependency.or_dependencies:
+ if (version.package.name == base_dep.name or
+ base_dep.name in version.provides):
+ satisfied = True
+ break
+ if satisfied:
+ self._emit_package(trans, pkg)
+ break
+
+ def download_packages(self, trans, store_in_cache, package_ids):
+ """Implement the DownloadPackages functionality.
+
+ The store_in_cache parameter gets ignored.
+ """
+ def get_download_details(ids):
+ """Calculate the start and end point of a package download
+ progress.
+ """
+ total = 0
+ downloaded = 0
+ versions = []
+ # Check if all ids are vaild and calculate the total download size
+ for id in ids:
+ pkg_ver = self._get_version_by_id(id)
+ if not pkg_ver.downloadable:
+ raise TransactionFailed(
+ aptd_enums.ERROR_PACKAGE_DOWNLOAD_FAILED,
+ "package %s isn't downloadable" % id)
+ total += pkg_ver.size
+ versions.append((id, pkg_ver))
+ for id, ver in versions:
+ start = downloaded * 100 / total
+ end = start + ver.size * 100 / total
+ yield id, ver, start, end
+ downloaded += ver.size
+ trans.status = aptd_enums.STATUS_DOWNLOADING
+ trans.cancellable = True
+ trans.progress = 10
+ # Check the destination directory
+ if store_in_cache:
+ dest = apt_pkg.config.find_dir("Dir::Cache::archives")
+ else:
+ dest = tempfile.mkdtemp(prefix="aptdaemon-download")
+ if not os.path.isdir(dest) or not os.access(dest, os.W_OK):
+ raise TransactionFailed(aptd_enums.ERROR_INTERNAL_ERROR,
+ "The directory '%s' is not writable" %
+ dest)
+ # Start the download
+ for id, ver, start, end in get_download_details(package_ids):
+ progress = DaemonAcquireProgress(trans, start, end)
+ self._emit_pkg_version(trans, ver, pk.InfoEnum.DOWNLOADING)
+ try:
+ ver.fetch_binary(dest, progress)
+ except Exception as error:
+ raise TransactionFailed(
+ aptd_enums.ERROR_PACKAGE_DOWNLOAD_FAILED, str(error))
+ else:
+ path = os.path.join(dest, os.path.basename(ver.filename))
+ trans.emit_files(id, [path])
+ self._emit_pkg_version(trans, ver, pk.InfoEnum.FINISHED)
+
+ def get_files(self, trans, package_ids):
+ """Emit the Files signal which includes the files included in a package
+ Apt only supports this for installed packages
+ """
+ for id in package_ids:
+ pkg = self._get_package_by_id(id)
+ trans.emit_files(id, self._get_installed_files(pkg))
+
+ def what_provides(self, trans, filters, provides_type, values):
+ """Emit all packages which provide the given type and search value."""
+ self._init_plugins()
+
+ supported_type = False
+ provides_type_str = pk.provides_enum_to_string(provides_type)
+
+ # run plugins
+ for plugin in self._plugins.get("what_provides", []):
+ pklog.debug("calling what_provides plugin %s %s",
+ str(plugin), str(filters))
+ for search_item in values:
+ try:
+ for package in plugin(self._cache, provides_type_str,
+ search_item):
+ self._emit_visible_package(trans, filters, package)
+ supported_type = True
+ except NotImplementedError:
+ # keep supported_type as False
+ pass
+
+ if not supported_type and provides_type != pk.ProvidesEnum.ANY:
+ # none of the plugins felt responsible for this type
+ raise TransactionFailed(aptd_enums.ERROR_NOT_SUPPORTED,
+ "Query type '%s' is not supported" %
+ pk.provides_enum_to_string(provides_type))
+
+ def repo_enable(self, trans, repo_id, enabled):
+ """Enable or disable a repository."""
+ if not enabled:
+ raise TransactionFailed(aptd_enums.ERROR_NOT_SUPPORTED,
+ "Disabling repositories is not "
+ "implemented")
+
+ fields = repo_id.split()
+ if len(fields) < 3 or fields[0] not in ('deb', 'deb-src'):
+ raise TransactionFailed(
+ aptd_enums.ERROR_NOT_SUPPORTED,
+ "Unknown repository ID format: %s" % repo_id)
+
+ self.add_repository(trans, fields[0], fields[1], fields[2],
+ fields[3:], '', None)
+
+ def install_signature(self, trans, sig_type, key_id, package_id):
+ """Install an archive key."""
+ if sig_type != pk.SigTypeEnum.GPG:
+ raise TransactionFailed(aptd_enums.ERROR_NOT_SUPPORTED,
+ "Type %s is not supported" % sig_type)
+ try:
+ keyserver = os.environ["APTDAEMON_KEYSERVER"]
+ except KeyError:
+ if platform.dist()[0] == "Ubuntu":
+ keyserver = "hkp://keyserver.ubuntu.com:80"
+ else:
+ keyserver = "hkp://keys.gnupg.net"
+ self.add_vendor_key_from_keyserver(trans, key_id, keyserver)
+
+ # Helpers
+
+ def _get_id_from_version(self, version):
+ """Return the package id of an apt.package.Version instance."""
+ if version.origins:
+ origin = version.origins[0].label
+ # APT returns a str with Python 2
+ if isinstance(origin, bytes):
+ origin = origin.decode("UTF-8")
+ else:
+ origin = ""
+ if version.architecture in [self.NATIVE_ARCH, "all"]:
+ name = version.package.name
+ else:
+ name = version.package.name.split(":")[0]
+ id = "%s;%s;%s;%s" % (name, version.version,
+ version.architecture, origin)
+ return id
+
+ def _emit_package(self, trans, pkg, info=None, force_candidate=False):
+ """
+ Send the Package signal for a given apt package
+ """
+ if (not pkg.is_installed or force_candidate) and pkg.candidate:
+ self._emit_pkg_version(trans, pkg.candidate, info)
+ elif pkg.is_installed:
+ self._emit_pkg_version(trans, pkg.installed, info)
+ else:
+ pklog.debug("Package %s hasn't got any version." % pkg.name)
+
+ def _emit_pkg_version(self, trans, version, info=None):
+ """Emit the Package signal of the given apt.package.Version."""
+ id = self._get_id_from_version(version)
+ section = version.section.split("/")[-1]
+ if not info:
+ if version == version.package.installed:
+ if section == "metapackages":
+ info = pk.InfoEnum.COLLECTION_INSTALLED
+ else:
+ info = pk.InfoEnum.INSTALLED
+ else:
+ if section == "metapackages":
+ info = pk.InfoEnum.COLLECTION_AVAILABLE
+ else:
+ info = pk.InfoEnum.AVAILABLE
+ trans.emit_package(info, id, version.summary)
+
+ def _emit_all_visible_pkg_versions(self, trans, filters, pkg):
+ """Emit all available versions of a package."""
+ for version in pkg.versions:
+ if self._is_version_visible(version, filters):
+ self._emit_pkg_version(trans, version)
+
+ def _emit_visible_package(self, trans, filters, pkg, info=None):
+ """
+ Filter and emit a package
+ """
+ if self._is_package_visible(pkg, filters):
+ self._emit_package(trans, pkg, info)
+
+ def _emit_visible_packages(self, trans, filters, pkgs, info=None):
+ """
+ Filter and emit packages
+ """
+ for pkg in pkgs:
+ if self._is_package_visible(pkg, filters):
+ self._emit_package(trans, pkg, info)
+
+ def _emit_visible_packages_by_name(self, trans, filters, pkgs, info=None):
+ """
+ Find the packages with the given namens. Afterwards filter and emit
+ them
+ """
+ for name in pkgs:
+ if (name in self._cache and
+ self._is_package_visible(self._cache[name], filters)):
+ self._emit_package(trans, self._cache[name], info)
+
+ def _is_version_visible(self, version, filters):
+ """Return True if the package version is matched by the given
+ filters.
+ """
+ if filters == pk.FilterEnum.NONE:
+ return True
+ if (bitfield_contains(filters, pk.FilterEnum.NEWEST) and
+ version.package.candidate != version):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.INSTALLED) and
+ version.package.installed != version):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_INSTALLED) and
+ version.package.installed == version):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.SUPPORTED) and
+ not self._is_package_supported(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_SUPPORTED) and
+ self._is_package_supported(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.FREE) and
+ not self._is_version_free(version)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_FREE) and
+ self._is_version_free(version)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.GUI) and
+ not self._has_package_gui(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_GUI) and
+ self._has_package_gui(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.COLLECTIONS) and
+ not self._is_package_collection(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_COLLECTIONS) and
+ self._is_package_collection(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.DEVELOPMENT) and
+ not self._is_package_devel(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_DEVELOPMENT) and
+ self._is_package_devel(version.package)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.ARCH) and
+ version.architecture not in [self.NATIVE_ARCH, "all"]):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_ARCH) and
+ version.architecture in [self.NATIVE_ARCH, "all"]):
+ return False
+ return True
+
+ def _is_package_visible(self, pkg, filters):
+ """Return True if the package is matched by the given filters."""
+ if filters == pk.FilterEnum.NONE:
+ return True
+ if (bitfield_contains(filters, pk.FilterEnum.INSTALLED) and
+ not pkg.is_installed):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_INSTALLED) and
+ pkg.is_installed):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.SUPPORTED) and
+ not self._is_package_supported(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_SUPPORTED) and
+ self._is_package_supported(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.FREE) and
+ not self._is_package_free(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_FREE) and
+ self._is_package_free(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.GUI) and
+ not self._has_package_gui(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_GUI) and
+ self._has_package_gui(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.COLLECTIONS) and
+ not self._is_package_collection(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_COLLECTIONS) and
+ self._is_package_collection(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.DEVELOPMENT) and
+ not self._is_package_devel(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_DEVELOPMENT) and
+ self._is_package_devel(pkg)):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.ARCH) and
+ ":" in pkg.name):
+ return False
+ if (bitfield_contains(filters, pk.FilterEnum.NOT_ARCH) and
+ ":" not in pkg.name):
+ return False
+ return True
+
+ def _is_package_free(self, pkg):
+ """Return True if we can be sure that the package's license is a
+ free one
+ """
+ if not pkg.candidate:
+ return False
+ return self._is_version_free(pkg.candidate)
+
+ def _is_version_free(self, version):
+ """Return True if we can be sure that the package version has got
+ a free license.
+ """
+ origins = version.origins
+ return (origins and
+ ((origins[0].origin == "Ubuntu" and
+ origins[0].component in ["main", "universe"]) or
+ (origins[0].origin == "Debian" and
+ origins[0].component == "main")) and
+ origins[0].trusted)
+
+ def _is_package_collection(self, pkg):
+ """Return True if the package is a metapackge
+ """
+ section = pkg.section.split("/")[-1]
+ return section == "metapackages"
+
+ def _has_package_gui(self, pkg):
+ # FIXME: take application data into account. perhaps checking for
+ # property in the xapian database
+ return pkg.section.split('/')[-1].lower() in ['x11', 'gnome', 'kde']
+
+ def _is_package_devel(self, pkg):
+ return (pkg.name.endswith("-dev") or pkg.name.endswith("-dbg") or
+ pkg.section.split('/')[-1].lower() in ['devel', 'libdevel'])
+
+ def _is_package_supported(self, pkg):
+ if not pkg.candidate:
+ return False
+ origins = pkg.candidate.origins
+ return (origins and
+ ((origins[0].origin == "Ubuntu" and
+ origins[0].component in ["main", "restricted"]) or
+ (origins[0].origin == "Debian" and
+ origins[0].component == "main")) and
+ origins[0].trusted)
+
+ def _get_package_by_id(self, id):
+ """Return the apt.package.Package corresponding to the given
+ package id.
+
+ If the package isn't available error out.
+ """
+ version = self._get_version_by_id(id)
+ return version.package
+
+ def _get_version_by_id(self, id):
+ """Return the apt.package.Version corresponding to the given
+ package id.
+
+ If the version isn't available error out.
+ """
+ name, version_string, arch, data = id.split(";", 4)
+ if arch and arch not in [self.NATIVE_ARCH, "all"]:
+ name += ":%s" % arch
+ try:
+ pkg = self._cache[name]
+ except KeyError:
+ raise TransactionFailed(aptd_enums.ERROR_NO_PACKAGE,
+ "There isn't any package named %s",
+ name)
+ try:
+ version = pkg.versions[version_string]
+ except:
+ raise TransactionFailed(aptd_enums.ERROR_NO_PACKAGE,
+ "Verion %s doesn't exist",
+ version_string)
+ if version.architecture != arch:
+ raise TransactionFailed(aptd_enums.ERROR_NO_PACKAGE,
+ "Version %s of %s isn't available "
+ "for architecture %s",
+ pkg.name, version.version, arch)
+ return version
+
+ def _get_installed_files(self, pkg):
+ """
+ Return the list of unicode names of the files which have
+ been installed by the package
+
+ This method should be obsolete by the
+ apt.package.Package.installedFiles attribute as soon as the
+ consolidate branch of python-apt gets merged
+ """
+ path = os.path.join(apt_pkg.config["Dir"],
+ "var/lib/dpkg/info/%s.list" % pkg.name)
+ try:
+ with open(path, 'rb') as f:
+ files = f.read().decode('UTF-8').split("\n")
+ except IOError:
+ return []
+ return files
+
+ def _get_package_group(self, pkg):
+ """
+ Return the packagekit group corresponding to the package's section
+ """
+ section = pkg.section.split("/")[-1]
+ if section in SECTION_GROUP_MAP:
+ return SECTION_GROUP_MAP[section]
+ else:
+ pklog.warning("Unkown package section %s of %s" % (pkg.section,
+ pkg.name))
+ return pk.GroupEnum.UNKNOWN
+
+ def _init_plugins(self):
+ """Initialize PackageKit apt backend plugins.
+ Do nothing if plugins are already initialized.
+ """
+ if self._plugins is not None:
+ return
+
+ if not pkg_resources:
+ return
+
+ self._plugins = {} # plugin_name -> [plugin_fn1, ...]
+
+ # just look in standard Python paths for now
+ dists, errors = pkg_resources.working_set.find_plugins(
+ pkg_resources.Environment())
+ for dist in dists:
+ pkg_resources.working_set.add(dist)
+ for plugin_name in ["what_provides"]:
+ for entry_point in pkg_resources.iter_entry_points(
+ "packagekit.apt.plugins", plugin_name):
+ try:
+ plugin = entry_point.load()
+ except Exception as e:
+ pklog.warning("Failed to load %s from plugin %s: %s" % (
+ plugin_name, str(entry_point.dist), str(e)))
+ continue
+ pklog.debug("Loaded %s from plugin %s" % (
+ plugin_name, str(entry_point.dist)))
+ self._plugins.setdefault(plugin_name, []).append(plugin)
+
+ def _apply_changes(self, trans, fetch_range=(15, 50),
+ install_range=(50, 90)):
+ """Apply changes and emit RequireRestart accordingly."""
+ if hasattr(trans, "pktrans"):
+ # Cache the ids of the to be changed packages, since we will
+ # only get the package name during download/install time
+ for pkg in self._cache.get_changes():
+ if pkg.marked_delete or pkg.marked_reinstall:
+ pkg_id = self._get_id_from_version(pkg.installed)
+ else:
+ pkg_id = self._get_id_from_version(pkg.candidate)
+ trans.pktrans.pkg_id_cache[pkg.name] = pkg_id
+
+ aptworker.AptWorker._apply_changes(self, trans, fetch_range,
+ install_range)
+
+ if (hasattr(trans, "pktrans") and
+ (trans.role == aptd_enums.ROLE_UPGRADE_SYSTEM or
+ trans.packages[aptd_enums.PKGS_UPGRADE] or
+ trans.depends[aptd_enums.PKGS_UPGRADE])):
+ self._emit_require_restart(trans)
+
+
+if META_RELEASE_SUPPORT:
+
+ class GMetaRelease(GObject.GObject, MetaReleaseCore):
+
+ __gsignals__ = {"download-done": (GObject.SignalFlags.RUN_FIRST,
+ None,
+ ())}
+
+ def __init__(self):
+ GObject.GObject.__init__(self)
+ MetaReleaseCore.__init__(self, False, False)
+
+ def download(self):
+ MetaReleaseCore.download(self)
+ self.emit("download-done")
+
+
+def bitfield_summarize(*enums):
+ """Return the bitfield with the given PackageKit enums."""
+ field = 0
+ for enum in enums:
+ field |= 2 ** int(enum)
+ return field
+
+
+def bitfield_add(field, enum):
+ """Add a PackageKit enum to a given field"""
+ field |= 2 ** int(enum)
+ return field
+
+
+def bitfield_remove(field, enum):
+ """Remove a PackageKit enum to a given field"""
+ field = field ^ 2 ** int(enum)
+ return field
+
+
+def bitfield_contains(field, enum):
+ """Return True if a bitfield contains the given PackageKit enum"""
+ return field & 2 ** int(enum)
+
+
+# vim: ts=4 et sts=4
diff --git a/aptdcon b/aptdcon
new file mode 100755
index 0000000..c24ebd4
--- /dev/null
+++ b/aptdcon
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+"""
+aptdcon - command line interface client to aptdaemon
+"""
+# Copyright (C) 2008 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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
+# 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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+__state__ = "experimental"
+
+import aptdaemon.console
+
+if __name__ == "__main__":
+ aptdaemon.console.main()
+
+# vim:ts=4:sw=4:et
diff --git a/data/20dbus b/data/20dbus
new file mode 100644
index 0000000..c8f6dc7
--- /dev/null
+++ b/data/20dbus
@@ -0,0 +1,2 @@
+// Notify all clients to reload the cache
+APT::Update::Post-Invoke-Success { "[ ! -f /var/run/dbus/system_bus_socket ] || /usr/bin/dbus-send --system --dest=org.debian.apt --type=signal /org/debian/apt org.debian.apt.CacheChanged || true"; };
diff --git a/data/icons/16x16/animations/aptdaemon-action-cleaning-up.png b/data/icons/16x16/animations/aptdaemon-action-cleaning-up.png
new file mode 100644
index 0000000..9ef7cdd
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-cleaning-up.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-downloading.png b/data/icons/16x16/animations/aptdaemon-action-downloading.png
new file mode 100644
index 0000000..1065ca2
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-downloading.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-installing.png b/data/icons/16x16/animations/aptdaemon-action-installing.png
new file mode 100644
index 0000000..a2d3eee
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-installing.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-removing.png b/data/icons/16x16/animations/aptdaemon-action-removing.png
new file mode 100644
index 0000000..93fc6b8
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-removing.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-resolving.png b/data/icons/16x16/animations/aptdaemon-action-resolving.png
new file mode 100644
index 0000000..005c2c6
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-resolving.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-updating-cache.png b/data/icons/16x16/animations/aptdaemon-action-updating-cache.png
new file mode 100644
index 0000000..e89472a
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-updating-cache.png
Binary files differ
diff --git a/data/icons/16x16/animations/aptdaemon-action-waiting.png b/data/icons/16x16/animations/aptdaemon-action-waiting.png
new file mode 100644
index 0000000..21f4a49
--- /dev/null
+++ b/data/icons/16x16/animations/aptdaemon-action-waiting.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-add.png b/data/icons/16x16/status/aptdaemon-add.png
new file mode 100644
index 0000000..70f6d44
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-add.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-cleanup.png b/data/icons/16x16/status/aptdaemon-cleanup.png
new file mode 100644
index 0000000..c3d05e6
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-cleanup.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-delete.png b/data/icons/16x16/status/aptdaemon-delete.png
new file mode 100644
index 0000000..48c5ed0
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-delete.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-download.png b/data/icons/16x16/status/aptdaemon-download.png
new file mode 100644
index 0000000..19c3a27
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-download.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-resolve.png b/data/icons/16x16/status/aptdaemon-resolve.png
new file mode 100644
index 0000000..545837a
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-resolve.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-update-cache.png b/data/icons/16x16/status/aptdaemon-update-cache.png
new file mode 100644
index 0000000..674f6ea
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-update-cache.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-upgrade.png b/data/icons/16x16/status/aptdaemon-upgrade.png
new file mode 100644
index 0000000..54cfc3b
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-upgrade.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-wait.png b/data/icons/16x16/status/aptdaemon-wait.png
new file mode 100644
index 0000000..0357a30
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-wait.png
Binary files differ
diff --git a/data/icons/16x16/status/aptdaemon-working.png b/data/icons/16x16/status/aptdaemon-working.png
new file mode 100644
index 0000000..50cbd12
--- /dev/null
+++ b/data/icons/16x16/status/aptdaemon-working.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-cleaning-up.png b/data/icons/22x22/animations/aptdaemon-action-cleaning-up.png
new file mode 100644
index 0000000..5a0c179
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-cleaning-up.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-downloading.png b/data/icons/22x22/animations/aptdaemon-action-downloading.png
new file mode 100644
index 0000000..26f0c7b
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-downloading.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-installing.png b/data/icons/22x22/animations/aptdaemon-action-installing.png
new file mode 100644
index 0000000..294cbbc
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-installing.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-removing.png b/data/icons/22x22/animations/aptdaemon-action-removing.png
new file mode 100644
index 0000000..89fc2f5
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-removing.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-resolving.png b/data/icons/22x22/animations/aptdaemon-action-resolving.png
new file mode 100644
index 0000000..7f36793
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-resolving.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-updating-cache.png b/data/icons/22x22/animations/aptdaemon-action-updating-cache.png
new file mode 100644
index 0000000..c9ffa57
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-updating-cache.png
Binary files differ
diff --git a/data/icons/22x22/animations/aptdaemon-action-waiting.png b/data/icons/22x22/animations/aptdaemon-action-waiting.png
new file mode 100644
index 0000000..f31301a
--- /dev/null
+++ b/data/icons/22x22/animations/aptdaemon-action-waiting.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-add.png b/data/icons/22x22/status/aptdaemon-add.png
new file mode 100644
index 0000000..30f886e
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-add.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-cleanup.png b/data/icons/22x22/status/aptdaemon-cleanup.png
new file mode 100644
index 0000000..f0a51e3
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-cleanup.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-delete.png b/data/icons/22x22/status/aptdaemon-delete.png
new file mode 100644
index 0000000..b1a7d10
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-delete.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-download.png b/data/icons/22x22/status/aptdaemon-download.png
new file mode 100644
index 0000000..0c5d18e
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-download.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-resolve.png b/data/icons/22x22/status/aptdaemon-resolve.png
new file mode 100644
index 0000000..32451aa
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-resolve.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-update-cache.png b/data/icons/22x22/status/aptdaemon-update-cache.png
new file mode 100644
index 0000000..bdac66e
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-update-cache.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-upgrade.png b/data/icons/22x22/status/aptdaemon-upgrade.png
new file mode 100644
index 0000000..41e5bce
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-upgrade.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-wait.png b/data/icons/22x22/status/aptdaemon-wait.png
new file mode 100644
index 0000000..fd62b44
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-wait.png
Binary files differ
diff --git a/data/icons/22x22/status/aptdaemon-working.png b/data/icons/22x22/status/aptdaemon-working.png
new file mode 100644
index 0000000..9e77923
--- /dev/null
+++ b/data/icons/22x22/status/aptdaemon-working.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-cleaning-up.png b/data/icons/24x24/animations/aptdaemon-action-cleaning-up.png
new file mode 100644
index 0000000..d5707f3
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-cleaning-up.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-downloading.png b/data/icons/24x24/animations/aptdaemon-action-downloading.png
new file mode 100644
index 0000000..1e1ba7d
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-downloading.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-installing.png b/data/icons/24x24/animations/aptdaemon-action-installing.png
new file mode 100644
index 0000000..b32dc60
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-installing.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-removing.png b/data/icons/24x24/animations/aptdaemon-action-removing.png
new file mode 100644
index 0000000..e9ed849
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-removing.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-resolving.png b/data/icons/24x24/animations/aptdaemon-action-resolving.png
new file mode 100644
index 0000000..588687b
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-resolving.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-updating-cache.png b/data/icons/24x24/animations/aptdaemon-action-updating-cache.png
new file mode 100644
index 0000000..97975d0
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-updating-cache.png
Binary files differ
diff --git a/data/icons/24x24/animations/aptdaemon-action-waiting.png b/data/icons/24x24/animations/aptdaemon-action-waiting.png
new file mode 100644
index 0000000..23202ef
--- /dev/null
+++ b/data/icons/24x24/animations/aptdaemon-action-waiting.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-add.png b/data/icons/24x24/status/aptdaemon-add.png
new file mode 100644
index 0000000..5af1d5f
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-add.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-cleanup.png b/data/icons/24x24/status/aptdaemon-cleanup.png
new file mode 100644
index 0000000..7cf1caa
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-cleanup.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-delete.png b/data/icons/24x24/status/aptdaemon-delete.png
new file mode 100644
index 0000000..372e5f4
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-delete.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-download.png b/data/icons/24x24/status/aptdaemon-download.png
new file mode 100644
index 0000000..319bdf0
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-download.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-resolve.png b/data/icons/24x24/status/aptdaemon-resolve.png
new file mode 100644
index 0000000..b43b113
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-resolve.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-update-cache.png b/data/icons/24x24/status/aptdaemon-update-cache.png
new file mode 100644
index 0000000..241682b
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-update-cache.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-upgrade.png b/data/icons/24x24/status/aptdaemon-upgrade.png
new file mode 100644
index 0000000..163764b
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-upgrade.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-wait.png b/data/icons/24x24/status/aptdaemon-wait.png
new file mode 100644
index 0000000..298a3fe
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-wait.png
Binary files differ
diff --git a/data/icons/24x24/status/aptdaemon-working.png b/data/icons/24x24/status/aptdaemon-working.png
new file mode 100644
index 0000000..4c85f23
--- /dev/null
+++ b/data/icons/24x24/status/aptdaemon-working.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-cleaning-up.png b/data/icons/48x48/animations/aptdaemon-action-cleaning-up.png
new file mode 100644
index 0000000..adef7d1
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-cleaning-up.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-downloading.png b/data/icons/48x48/animations/aptdaemon-action-downloading.png
new file mode 100644
index 0000000..7a5c81a
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-downloading.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-installing.png b/data/icons/48x48/animations/aptdaemon-action-installing.png
new file mode 100644
index 0000000..3881f24
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-installing.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-removing.png b/data/icons/48x48/animations/aptdaemon-action-removing.png
new file mode 100644
index 0000000..a3b2793
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-removing.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-resolving.png b/data/icons/48x48/animations/aptdaemon-action-resolving.png
new file mode 100644
index 0000000..c678b30
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-resolving.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-updating-cache.png b/data/icons/48x48/animations/aptdaemon-action-updating-cache.png
new file mode 100644
index 0000000..dddafb1
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-updating-cache.png
Binary files differ
diff --git a/data/icons/48x48/animations/aptdaemon-action-waiting.png b/data/icons/48x48/animations/aptdaemon-action-waiting.png
new file mode 100644
index 0000000..81f285d
--- /dev/null
+++ b/data/icons/48x48/animations/aptdaemon-action-waiting.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-add.png b/data/icons/48x48/status/aptdaemon-add.png
new file mode 100644
index 0000000..948a7c7
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-add.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-cleanup.png b/data/icons/48x48/status/aptdaemon-cleanup.png
new file mode 100644
index 0000000..5d6fc99
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-cleanup.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-delete.png b/data/icons/48x48/status/aptdaemon-delete.png
new file mode 100644
index 0000000..0cebdc1
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-delete.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-download.png b/data/icons/48x48/status/aptdaemon-download.png
new file mode 100644
index 0000000..63c0aea
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-download.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-resolve.png b/data/icons/48x48/status/aptdaemon-resolve.png
new file mode 100644
index 0000000..7edf5b2
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-resolve.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-update-cache.png b/data/icons/48x48/status/aptdaemon-update-cache.png
new file mode 100644
index 0000000..ca56719
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-update-cache.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-upgrade.png b/data/icons/48x48/status/aptdaemon-upgrade.png
new file mode 100644
index 0000000..2e0db6c
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-upgrade.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-wait.png b/data/icons/48x48/status/aptdaemon-wait.png
new file mode 100644
index 0000000..52cc9d7
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-wait.png
Binary files differ
diff --git a/data/icons/48x48/status/aptdaemon-working.png b/data/icons/48x48/status/aptdaemon-working.png
new file mode 100644
index 0000000..b1c242c
--- /dev/null
+++ b/data/icons/48x48/status/aptdaemon-working.png
Binary files differ
diff --git a/data/icons/clean_svg_icons.sh b/data/icons/clean_svg_icons.sh
new file mode 100755
index 0000000..7d0f35c
--- /dev/null
+++ b/data/icons/clean_svg_icons.sh
@@ -0,0 +1,11 @@
+# clean to reduce file size
+subdirs="categories status"
+
+for subdir in $subdirs; do
+ cd scalable/$subdir
+ for i in *.svg; do
+ inkscape -f "$i" --vacuum-defs --export-plain-svg "$i";
+ done
+ cd -
+done
+
diff --git a/data/icons/generate_16x16_icons.sh b/data/icons/generate_16x16_icons.sh
new file mode 100755
index 0000000..65c4a4f
--- /dev/null
+++ b/data/icons/generate_16x16_icons.sh
@@ -0,0 +1,14 @@
+# we need to generate the 24x24 icons from the 22x22 tango icons
+subdirs="categories status"
+
+for subdir in $subdirs; do
+ cd 22x22/$subdir
+ for icon in *.png; do
+ target="../../16x16/$subdir/$icon"
+ if [ ! -e $target ]; then
+ convert -resize 16x16 $icon $target;
+ fi
+ done
+ cd -
+done
+
diff --git a/data/icons/generate_24x24_icons.sh b/data/icons/generate_24x24_icons.sh
new file mode 100755
index 0000000..11f6f3c
--- /dev/null
+++ b/data/icons/generate_24x24_icons.sh
@@ -0,0 +1,14 @@
+# we need to generate the 24x24 icons from the 22x22 tango icons
+subdirs="categories status"
+
+for subdir in $subdirs; do
+ cd 22x22/$subdir
+ for icon in *.png; do
+ target="../../24x24/$subdir/$icon"
+ if [ ! -e $target ]; then
+ convert -bordercolor Transparent -border 1x1 $icon $target;
+ fi
+ done
+ cd -
+done
+
diff --git a/data/icons/generate_48x48_icons.sh b/data/icons/generate_48x48_icons.sh
new file mode 100755
index 0000000..e13bee1
--- /dev/null
+++ b/data/icons/generate_48x48_icons.sh
@@ -0,0 +1,13 @@
+
+subdirs="categories"
+
+for subdir in $subdirs; do
+ cd scalable/$subdir
+ for i in *.svg;do
+ target="../48x48/"$( echo $i | cut -d . -f -1 ).png
+ echo "converting $i to $target"
+ if [ ! -e $target ]; then
+ inkscape --without-gui --export-png=$target --export-dpi=72 --export-background-opacity=0 --export-width=48 --export-height=48 "$i";done
+ fi
+ cd -
+done
diff --git a/data/icons/scalable/status/aptdaemon-add.svg b/data/icons/scalable/status/aptdaemon-add.svg
new file mode 100644
index 0000000..eae1f40
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-add.svg
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="23.070683"
+ cy="35.127438"
+ r="10.31934"
+ fx="23.070683"
+ fy="35.127438"
+ id="radialGradient2097"
+ xlink:href="#linearGradient2091"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.914812,1.265023e-2,-8.21502e-3,0.213562,2.253914,27.18889)" />
+ <linearGradient
+ x1="16.874998"
+ y1="22.851799"
+ x2="27.900846"
+ y2="34.976799"
+ id="linearGradient7922"
+ xlink:href="#linearGradient7916"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="34.892849"
+ y1="36.422989"
+ x2="45.918697"
+ y2="48.547989"
+ id="linearGradient4975"
+ xlink:href="#linearGradient1322"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-18.01785,-13.57119)" />
+ <linearGradient
+ id="linearGradient1322">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1"
+ offset="0"
+ id="stop1324" />
+ <stop
+ style="stop-color:#5187d6;stop-opacity:1"
+ offset="1"
+ id="stop1326" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7916">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop7918" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.34020618"
+ offset="1"
+ id="stop7920" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2091">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop2093" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop2095" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.8342719,0,0,0.8342719,13.595327,7.1386943)"
+ id="g2355">
+ <path
+ d="M 33.278212 34.94062 A 10.31934 2.320194 0 1 1 12.639532,34.94062 A 10.31934 2.320194 0 1 1 33.278212 34.94062 z"
+ transform="matrix(1.550487,0,0,1.978714,-12.4813,-32.49103)"
+ style="opacity:0.10824741;fill:url(#radialGradient2097);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1361" />
+ <path
+ d="M 27.514356,37.542682 L 27.514356,28.515722 L 37.49282,28.475543 L 37.49282,21.480219 L 27.523285,21.480219 L 27.514356,11.520049 L 20.498082,11.53121 L 20.502546,21.462362 L 10.51292,21.536022 L 10.477206,28.504561 L 20.511475,28.475543 L 20.518171,37.515896 L 27.514356,37.542682 z "
+ style="font-size:59.90107727px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#75a1d0;fill-opacity:1;stroke:#3465a4;stroke-width:1.00000036px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ id="text1314" />
+ <path
+ d="M 26.498702,36.53392 L 26.498702,27.499738 L 36.501304,27.499738 L 36.494607,22.475309 L 26.50763,22.475309 L 26.50763,12.480335 L 21.512796,12.498193 L 21.521725,22.475309 L 11.495536,22.493166 L 11.46875,27.466256 L 21.533143,27.475185 L 21.51975,36.50267 L 26.498702,36.53392 z "
+ style="font-size:59.90107727px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.40860213;fill:url(#linearGradient4975);fill-opacity:1;stroke:url(#linearGradient7922);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ id="path7076" />
+ <path
+ d="M 11,25 C 11,26.9375 36.984375,24.03125 36.984375,24.96875 L 36.984375,21.96875 L 27,22 L 27,12.034772 L 21,12.034772 L 21,22 L 11,22 L 11,25 z "
+ style="opacity:0.31182796;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path7914" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-cleanup.svg b/data/icons/scalable/status/aptdaemon-cleanup.svg
new file mode 100644
index 0000000..77737df
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-cleanup.svg
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="9.5621576"
+ y1="6.952559"
+ x2="14.766725"
+ y2="14.200403"
+ id="linearGradient2249"
+ xlink:href="#linearGradient2243"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="20.764477"
+ cy="19.540945"
+ r="14.799585"
+ fx="20.764477"
+ fy="19.540945"
+ id="radialGradient9318"
+ xlink:href="#linearGradient9320"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.449398,-0.216492,0.564416,1.171617,-1.432288,2.546108)" />
+ <linearGradient
+ x1="11.996646"
+ y1="19.591736"
+ x2="17.774033"
+ y2="16.234594"
+ id="linearGradient8582"
+ xlink:href="#linearGradient8576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.014891,0,0,1.00592,-0.331699,-0.140188)" />
+ <linearGradient
+ x1="10.615304"
+ y1="28.122555"
+ x2="2.0069747"
+ y2="27.234833"
+ id="linearGradient15309"
+ xlink:href="#linearGradient15303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1767,0,0,1.176702,-0.819769,-5.307055)" />
+ <linearGradient
+ x1="12.233433"
+ y1="12.363223"
+ x2="16.870909"
+ y2="17.110941"
+ id="linearGradient11653"
+ xlink:href="#linearGradient11647"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.965926,0.262102,-0.258819,0.978177,2.957072,-5.939741)" />
+ <linearGradient
+ x1="16.92873"
+ y1="34.010502"
+ x2="14.045431"
+ y2="29"
+ id="linearGradient7996"
+ xlink:href="#linearGradient5739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.866026,-0.5,0.861487,1.49214,-17.87951,-13.91085)" />
+ <linearGradient
+ x1="14.045431"
+ y1="37.57589"
+ x2="14.045431"
+ y2="29"
+ id="linearGradient7994"
+ xlink:href="#linearGradient5739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.866026,-0.5,0.801305,1.3879,-12.8183,-11.14456)" />
+ <linearGradient
+ x1="15.096997"
+ y1="36.96777"
+ x2="14.045431"
+ y2="29"
+ id="linearGradient7992"
+ xlink:href="#linearGradient5739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.866026,-0.5,0.843479,1.460948,-19.74053,-11.13423)" />
+ <linearGradient
+ x1="19.616243"
+ y1="39.252983"
+ x2="18.485983"
+ y2="29.909071"
+ id="linearGradient7990"
+ xlink:href="#linearGradient5739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.866026,-0.5,0.797961,1.38211,-15.72934,-9.277499)" />
+ <linearGradient
+ x1="9.1053896"
+ y1="38.828144"
+ x2="10.146956"
+ y2="30.140831"
+ id="linearGradient7988"
+ xlink:href="#linearGradient5739"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.866026,-0.5,0.797491,1.381294,-15.69909,-9.225099)" />
+ <linearGradient
+ id="linearGradient5739">
+ <stop
+ style="stop-color:#c4a000;stop-opacity:1"
+ offset="0"
+ id="stop5741" />
+ <stop
+ style="stop-color:#c4a000;stop-opacity:0"
+ offset="1"
+ id="stop5743" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11647">
+ <stop
+ style="stop-color:#c17d10;stop-opacity:1"
+ offset="0"
+ id="stop11649" />
+ <stop
+ style="stop-color:#9b650c;stop-opacity:1"
+ offset="1"
+ id="stop11651" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15303">
+ <stop
+ style="stop-color:#b30000;stop-opacity:1"
+ offset="0"
+ id="stop15305" />
+ <stop
+ style="stop-color:#ff5c5c;stop-opacity:1"
+ offset="0.5"
+ id="stop15311" />
+ <stop
+ style="stop-color:#c30000;stop-opacity:1"
+ offset="1"
+ id="stop15307" />
+ </linearGradient>
+ <radialGradient
+ cx="22.571428"
+ cy="30.857143"
+ r="15.571428"
+ fx="22.571428"
+ fy="30.857143"
+ id="radialGradient3564"
+ xlink:href="#linearGradient3558"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.651376,0,10.75754)" />
+ <linearGradient
+ id="linearGradient3558">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop3560" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3562" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8576">
+ <stop
+ style="stop-color:#dac203;stop-opacity:1"
+ offset="0"
+ id="stop8578" />
+ <stop
+ style="stop-color:#fdec69;stop-opacity:1"
+ offset="0.5"
+ id="stop8584" />
+ <stop
+ style="stop-color:#fdef7e;stop-opacity:1"
+ offset="1"
+ id="stop8580" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9320">
+ <stop
+ style="stop-color:#fef088;stop-opacity:1"
+ offset="0"
+ id="stop9322" />
+ <stop
+ style="stop-color:#fde63a;stop-opacity:1"
+ offset="0.5"
+ id="stop9324" />
+ <stop
+ style="stop-color:#dac203;stop-opacity:1"
+ offset="1"
+ id="stop9326" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2243">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop2245" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop2247" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.577537,0,0,0.577537,18.293466,17.353589)"
+ id="g3826">
+ <path
+ d="M 38.142857 30.857143 A 15.571428 10.142858 0 1 1 7,30.857143 A 15.571428 10.142858 0 1 1 38.142857 30.857143 z"
+ transform="matrix(1.43578,0,0,0.825704,-5.05046,13.43182)"
+ style="opacity:0.47368421;color:#000000;fill:url(#radialGradient3564);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3556" />
+ <path
+ d="M 6.9163118,1.7780186 C 8.6460876,0.8999591 11.042237,1.7815151 11.928102,3.3353385 L 16.098341,12.820053 C 16.984206,14.373873 16.731757,16.189357 15.532312,16.890639 C 14.332867,17.591922 12.654079,16.90558 11.768213,15.351758 L 5.8497502,6.9960305 C 4.9638854,5.4422066 5.2207536,2.6387087 6.9163118,1.7780186 z "
+ style="fill:url(#linearGradient11653);fill-opacity:1;fill-rule:evenodd;stroke:#8f5902;stroke-width:1.00632107;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7966" />
+ <path
+ d="M 7.4462701,2.7359104 C 8.8682231,1.9500906 10.266975,2.5431693 11.141568,4.0752981 L 15.589706,14.162023 L 13.158185,15.581885 L 6.8615741,6.7615491 C 5.9869811,5.2294205 5.9853271,3.5432766 7.4462701,2.7359104 z "
+ style="opacity:0.42307691;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2249);stroke-width:1.00569046;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+ id="path14575" />
+ <path
+ d="M 14.780848,22.793567 C 13.985353,27.080402 15.414814,36.746068 21.040081,42.487564 C 25.386835,42.628855 35.030172,39.069883 41.571176,32.290526 C 32.335,27.773816 26.034647,16.567549 21.135869,19.007852 L 14.780848,22.793567 z "
+ style="fill:url(#radialGradient9318);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7968" />
+ <path
+ d="M 16.338359,24.367274 C 18.687375,30.637545 18.827802,37.155576 23.522142,42.287158"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7988);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7972" />
+ <path
+ d="M 15.91878,23.414124 C 15.006687,23.922228 15.758401,35.934338 21.503034,41.414491 C 28.88902,41.227594 37.02675,35.018304 39.895986,32.576645 C 30.39657,26.592523 24.971183,17.814876 21.415196,20.003061 L 15.91878,23.414124 z "
+ style="opacity:0.46153846;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7970" />
+ <path
+ d="M 23.848485,22.273332 C 24.714846,21.524332 29.598505,28.360999 38.846986,34.655133"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7990);stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7974" />
+ <path
+ d="M 18.012893,22.863921 C 21.725203,28.211416 20.975883,35.288176 26.853709,40.945031"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7992);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7976" />
+ <path
+ d="M 22.983898,22.775821 C 22.983898,22.775821 31.160628,35.84745 34.165832,37.880382"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7994);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7978" />
+ <path
+ d="M 19.300308,22.200695 C 22.747454,25.11751 28.002865,36.363883 30.610322,39.678445"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient7996);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7980" />
+ <path
+ d="M 8.5089452,18.061866 L 19.970616,11.50296 C 20.569266,13.885531 19.628776,14.743545 21.766566,18.650673 L 13.856274,23.177313 C 12.402846,19.699893 10.291388,19.767015 8.5089452,18.061866 z "
+ style="fill:url(#linearGradient8582);fill-opacity:1;fill-rule:evenodd;stroke:#c4a000;stroke-width:1.01039541;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7982" />
+ <path
+ d="M 14.043449,21.245689 C 13.229488,19.824472 11.481136,19.009347 10.36413,18.11846 L 19.121552,13.184722 C 19.101959,14.66569 19.688457,16.272928 19.997163,17.703389 L 14.043449,21.245689 z "
+ style="opacity:0.2472527;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path11655" />
+ <rect
+ width="13.015023"
+ height="3.4598906"
+ rx="0.99999738"
+ ry="0.99999803"
+ x="-1.4127867"
+ y="24.174778"
+ transform="matrix(0.866025,-0.500001,0.5,0.866026,0,0)"
+ style="opacity:1;fill:url(#linearGradient15309);fill-opacity:1;fill-rule:evenodd;stroke:#690000;stroke-width:0.99999803;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect7984" />
+ <path
+ d="M -17.172594 4.0836182 A 2.1465743 2.1465743 0 1 1 -21.465742,4.0836182 A 2.1465743 2.1465743 0 1 1 -17.172594 4.0836182 z"
+ transform="matrix(0.583557,0.156364,-0.156364,0.583557,20.45782,5.158782)"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#8f5902;stroke-width:1.65524161;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path10193" />
+ <path
+ d="M 27.734834,40.555239 C 27.734834,40.555239 29.241418,40.054591 29.910932,39.613484 C 28.673495,37.66894 26.507591,33.717819 24.507806,30.737564 C 25.701049,37.278302 27.734834,40.555239 27.734834,40.555239 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3558" />
+ <path
+ d="M 31.141805,39.05827 L 33.167803,37.9731 C 31.223259,36.116945 25.699306,27.857202 25.699306,27.857202 L 31.141805,39.05827 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3560" />
+ <path
+ d="M 35.658522,36.387809 L 38.094893,34.644057 C 34.912912,33.318232 26.508353,24.763608 26.508353,24.763608 C 28.891288,27.775503 33.275587,33.375914 35.658522,36.387809 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3562" />
+ <path
+ d="M 39.153689,33.917208 L 40.846002,32.5077 C 37.531439,31.005098 28.350325,22.595683 28.350325,22.595683 C 28.350325,22.595683 34.424912,31.795888 39.153689,33.917208 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3565" />
+ <path
+ d="M 24.376076,41.571705 C 24.376076,41.571705 25.573301,41.292028 26.419592,41.116086 C 24.961184,39.878649 22.618503,36.678829 21.325825,32.505331 C 21.856156,39.399623 24.376076,41.571705 24.376076,41.571705 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path2265" />
+ <path
+ d="M 21.370872,41.969452 C 21.370872,41.969452 22.618892,41.955776 22.618892,41.955776 C 20.320795,39.436707 19.480717,36.590441 18.188038,32.549526 C 18.055457,37.234109 21.370872,41.969452 21.370872,41.969452 z "
+ style="opacity:0.31730766;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path2267" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-delete.svg b/data/icons/scalable/status/aptdaemon-delete.svg
new file mode 100644
index 0000000..25e2f67
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-delete.svg
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient1869">
+ <stop
+ style="stop-color:#c9c9c9;stop-opacity:1"
+ offset="0"
+ id="stop1870" />
+ <stop
+ style="stop-color:#787a7b;stop-opacity:1"
+ offset="1"
+ id="stop1871" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient149">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop150" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop151" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient157">
+ <stop
+ style="stop-color:#babdb6;stop-opacity:1"
+ offset="0"
+ id="stop158" />
+ <stop
+ style="stop-color:#f1f5ec;stop-opacity:1"
+ offset="1"
+ id="stop159" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient161">
+ <stop
+ style="stop-color:#575955;stop-opacity:1"
+ offset="0"
+ id="stop162" />
+ <stop
+ style="stop-color:#7c7e79;stop-opacity:1"
+ offset="1"
+ id="stop163" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient172">
+ <stop
+ style="stop-color:#616c08;stop-opacity:1"
+ offset="0"
+ id="stop173" />
+ <stop
+ style="stop-color:#495106;stop-opacity:1"
+ offset="1"
+ id="stop174" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient1065">
+ <stop
+ style="stop-color:#b5c051;stop-opacity:1"
+ offset="0"
+ id="stop1066" />
+ <stop
+ style="stop-color:#858e3f;stop-opacity:1"
+ offset="1"
+ id="stop1067" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient368">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.10309278"
+ offset="0"
+ id="stop369" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop372" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient381">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop382" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.84466022"
+ offset="1"
+ id="stop383" />
+ </linearGradient>
+ <linearGradient
+ x1="7.3738608"
+ y1="27.376621"
+ x2="7.5291119"
+ y2="69.460503"
+ id="linearGradient3977"
+ xlink:href="#linearGradient149"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.495016,0,0,0.344323,-2.972087,-3.408148e-2)" />
+ <linearGradient
+ x1="19.977491"
+ y1="38.962704"
+ x2="19.857769"
+ y2="23.600779"
+ id="linearGradient384"
+ xlink:href="#linearGradient381"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.215669,0.822592)" />
+ <linearGradient
+ x1="17.573946"
+ y1="25.335417"
+ x2="25.31245"
+ y2="48.805084"
+ id="linearGradient374"
+ xlink:href="#linearGradient368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.175636,0.850604)" />
+ <linearGradient
+ x1="19.347122"
+ y1="23.114082"
+ x2="19.672924"
+ y2="52.625473"
+ id="linearGradient101"
+ xlink:href="#linearGradient172"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.175635,0.850604)" />
+ <linearGradient
+ x1="10.861447"
+ y1="33.139202"
+ x2="30.587307"
+ y2="37.720802"
+ id="linearGradient1068"
+ xlink:href="#linearGradient1065"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.175635,0.850604)" />
+ <linearGradient
+ x1="2.9325604"
+ y1="21.169638"
+ x2="19.737663"
+ y2="21.169638"
+ id="linearGradient164"
+ xlink:href="#linearGradient161"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.374946,0,0,0.506711,-2.79531,-0.166664)" />
+ <linearGradient
+ x1="55.208271"
+ y1="6.8897982"
+ x2="60.685902"
+ y2="6.8897982"
+ id="linearGradient160"
+ xlink:href="#linearGradient157"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.772488,0,0,1.55784,-2.79531,-0.166664)" />
+ <linearGradient
+ x1="-4.6375198"
+ y1="104.38752"
+ x2="-4.523921"
+ y2="110.61378"
+ id="linearGradient1872"
+ xlink:href="#linearGradient1869"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.464893,0,0,0.475906,30.56501,-34.34268)" />
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient3061"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient3063"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient3065"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.5503391,0,0,0.5503391,20.810014,15.631654)"
+ id="g3031">
+ <g
+ transform="matrix(2.262383e-2,0,0,1.966248e-2,44.39519,41.98146)"
+ style="display:inline"
+ id="g3033">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient3061);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect3035" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient3063);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3037" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient3065);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3039" />
+ </g>
+ <g
+ id="g3964">
+ <path
+ d="M 3.836697,16.810238 C 3.792608,16.775175 5.56866,42.034206 5.569166,42.041863 C 5.73578,44.564407 7.134433,45.486354 8.699929,45.49011 C 8.75587,45.490239 38.069409,45.486863 38.693936,45.484234 C 41.330302,45.473139 41.976184,43.867694 42.149611,42.113575 C 42.163521,42.07899 43.938664,16.844824 43.952571,16.810238 C 30.580614,16.810238 17.208657,16.810238 3.836697,16.810238 z "
+ transform="matrix(0.997091,0,0,1.011161,0.175269,-0.497829)"
+ style="fill:url(#linearGradient1068);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient101);stroke-width:0.99591541;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3042" />
+ <path
+ d="M 43.188383,18.930946 L 7.1998593,18.907789 C 34.314156,19.538355 39.641346,22.517229 42.946375,22.365024 L 43.188383,18.930946 z "
+ transform="matrix(1.007266,0,0,1.010724,-0.252168,-0.110549)"
+ style="color:#000000;fill:url(#linearGradient3977);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block"
+ id="path3044" />
+ <g
+ transform="matrix(1.402179,0,0,1.438944,-66.03801,-8.126386)"
+ style="fill:#ffffff;fill-opacity:0.48809521"
+ id="g144">
+ <path
+ d="M 64.131147,25.325447 L 67.928133,25.615144 L 69.396397,22.040585 L 67.659134,23.261574 C 67.659134,23.261574 66.914226,21.524169 66.378823,21.384498 C 65.843421,21.244828 63.559132,21.291385 63.559132,21.291385 C 64.285695,21.471073 64.850367,22.719512 64.859047,22.733674 C 65.085717,23.10353 65.72022,24.348057 65.72022,24.348057 L 64.131147,25.325447 z "
+ style="fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path41" />
+ <path
+ d="M 64.600893,22.852762 L 63.344021,25.250434 L 60.760121,23.620948 C 60.760121,23.620948 61.931819,21.409503 62.855175,21.409503 C 63.786342,21.409503 64.202456,22.212137 64.600893,22.852762 z "
+ style="color:#000000;fill-opacity:0.30952382;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path130" />
+ <path
+ d="M 66.450976,28.545542 L 64.002948,31.471279 L 66.339076,34.488059 L 66.382284,32.587938 C 66.382284,32.587938 68.103047,32.750329 68.497986,32.362789 C 68.892923,31.975249 70.535933,30.02127 70.535933,30.02127 C 70.008436,30.552239 68.647269,30.395144 68.630659,30.395314 C 68.196893,30.399717 66.480102,30.359654 66.480102,30.359654 L 66.450976,28.545542 z "
+ style="fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path139" />
+ <path
+ d="M 68.748409,30.061355 L 67.337346,27.751062 L 70.062991,26.371707 C 70.062991,26.371707 71.358061,28.513238 70.883591,29.305365 C 70.405109,30.104193 69.502725,30.048732 68.748409,30.061355 z "
+ style="color:#000000;fill-opacity:0.30952382;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path140" />
+ <path
+ d="M 62.170193,28.37565 L 60.961696,25.192931 L 57.437755,25.441971 L 58.884372,26.495777 C 58.884372,26.495777 57.885335,27.90621 58.024237,28.441813 C 58.163139,28.977415 58.94678,31.196407 58.94678,31.196407 C 58.749682,30.474372 59.564769,29.372969 59.572907,29.358488 C 59.785446,28.980335 60.676477,27.51233 60.676477,27.51233 L 62.170193,28.37565 z "
+ style="fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path142" />
+ <path
+ d="M 59.752772,29.661147 L 62.45898,29.59048 L 62.294995,32.640869 C 62.294995,32.640869 59.792913,32.695178 59.343013,31.888843 C 58.889308,31.075686 59.387472,30.32123 59.752772,29.661147 z "
+ style="color:#000000;fill-opacity:0.30952382;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path143" />
+ </g>
+ <path
+ d="M 41.62473,23.651808 C 36.299359,25.986218 29.004203,28.320991 23.056218,28.370558 C 16.516233,28.425058 11.697549,31.531025 6.8162911,33.914752 C 7.010968,36.794969 7.225682,38.805946 7.4908471,42.031519 C 7.6231144,43.640472 8.1287711,43.602252 10.431218,43.602252 C 19.542668,43.602252 31.496634,43.615196 38.688801,43.615196 C 40.449339,43.615196 40.248374,42.363465 40.34348,41.164752 C 40.803877,35.361894 41.217727,29.476257 41.62473,23.651808 z "
+ transform="matrix(0.997091,0,0,1.011161,0.253928,-0.654813)"
+ style="opacity:1;fill:url(#linearGradient374);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14.96210194;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+ id="path344" />
+ <path
+ d="M 5.2098606,19.402822 C 5.1584543,19.40269 6.0490537,32.078422 6.7566249,40.968384 C 6.9391608,43.250374 7.3101511,44.179154 8.747779,44.179154 C 20.599078,44.179154 37.441889,44.264299 38.015405,44.262223 C 40.789981,44.252176 40.738055,43.236189 40.967844,41.077514 C 41.051496,40.29168 42.504818,19.49121 42.490953,19.49121 C 32.560989,19.49121 17.47866,19.43444 5.2098606,19.402822 z "
+ transform="matrix(0.997091,0,0,1.011161,0.219976,-0.497829)"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient384);stroke-width:0.99591541;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.2857143"
+ id="path3054" />
+ </g>
+ <path
+ d="M 7.538492,4.7306315 C 6.494167,4.7330003 5.620149,4.7569809 5.144078,5.7442051 C 5.061333,5.9157934 2.539129,12.879834 2.417869,13.145414 C 1.379764,15.419016 2.337109,18.283038 4.342179,18.263863 C 4.723494,18.260334 43.852401,18.281621 44.459163,18.263863 C 46.165984,18.214785 46.384401,14.898279 45.649626,13.406336 C 45.607999,13.321814 42.197827,5.6492999 42.110852,5.5134018 C 41.708578,4.9064789 40.807722,4.640488 40.138555,4.6654006 C 40.006734,4.6704304 7.668955,4.7303368 7.538492,4.7306315 z "
+ transform="matrix(1.021485,0,0,1.028865,-0.537224,-0.298421)"
+ style="fill:url(#linearGradient1872);fill-opacity:1;fill-rule:evenodd;stroke:#4d5506;stroke-width:0.97544956;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3056" />
+ <path
+ d="M 7.72045,6.3900545 C 6.735524,6.3773223 6.671388,6.3392466 6.449677,7.0362462 C 6.398497,7.1971422 4.336482,13.531607 4.255655,13.777418 C 3.980776,14.613371 4.36948,14.833988 5.323403,14.816995 C 5.661327,14.810975 42.670159,14.816995 43.208169,14.816995 C 43.971941,14.816995 44.198501,14.565395 44.025974,13.971598 C 43.955868,13.730313 41.085266,6.9669634 41.008179,6.8465153 C 40.651639,6.3085929 40.713471,6.3101594 40.09072,6.3025755 C 39.973809,6.301151 7.836071,6.3915492 7.72045,6.3900545 z "
+ transform="matrix(1.005586,0,0,1.027013,-0.134078,-0.270972)"
+ style="color:#000000;fill:url(#linearGradient164);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block"
+ id="path1864" />
+ <path
+ d="M 7.191437,6.3869852 C 6.820562,6.4152986 6.642177,6.5251871 6.486944,7.0132015 C 6.435764,7.1740974 4.376014,13.499216 4.295186,13.745027 C 4.020307,14.580975 4.384957,14.805712 5.338881,14.78872 C 5.355404,14.788428 7.292214,14.788962 7.475548,14.78872 L 7.191437,6.3869852 z "
+ transform="matrix(1.005586,0,0,1.028865,-0.134078,-0.298421)"
+ style="color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block"
+ id="path1880" />
+ <path
+ d="M 40.143457,6.2999077 C 40.594213,6.3037596 40.726578,6.2947269 41.014741,6.8394315 C 41.054147,6.9139229 43.889138,13.632601 43.990928,13.878411 C 44.337098,14.825515 43.677798,14.805712 42.632092,14.833183 C 42.433434,14.83289 40.083238,14.811194 39.852358,14.81095 L 40.143457,6.2999077 z "
+ transform="matrix(1.005586,0,0,1.028865,-0.134078,-0.298421)"
+ style="color:#000000;fill:url(#linearGradient160);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block"
+ id="path1888" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-download.svg b/data/icons/scalable/status/aptdaemon-download.svg
new file mode 100644
index 0000000..f6af813
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-download.svg
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient8662">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop8664" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop8666" />
+ </linearGradient>
+ <radialGradient
+ cx="15.987216"
+ cy="1.5350308"
+ r="17.171415"
+ fx="15.987216"
+ fy="1.5350308"
+ id="radialGradient1471"
+ xlink:href="#linearGradient8650"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0,-2.046729,-1.55761,0,44.11559,66.93275)" />
+ <radialGradient
+ cx="35.292667"
+ cy="20.494493"
+ r="16.9562"
+ fx="35.292667"
+ fy="20.494493"
+ id="radialGradient1469"
+ xlink:href="#linearGradient1442"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0,-0.843022,1.020168,0,0.606436,42.58614)" />
+ <radialGradient
+ cx="24.837126"
+ cy="36.421127"
+ r="15.644737"
+ fx="24.837126"
+ fy="36.421127"
+ id="radialGradient1444"
+ xlink:href="#linearGradient8662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" />
+ <linearGradient
+ id="linearGradient8650">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop8652" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop8654" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient1442">
+ <stop
+ style="stop-color:#73d216;stop-opacity:1"
+ offset="0"
+ id="stop1444" />
+ <stop
+ style="stop-color:#4e9a06;stop-opacity:1"
+ offset="1"
+ id="stop1446" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.6092305,0,0,0.6092305,20.733808,19.05995)"
+ id="g3724">
+ <path
+ d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
+ transform="matrix(1.214466,0,0,0.595458,-6.163846,16.31275)"
+ style="opacity:0.20454544;color:#000000;fill:url(#radialGradient1444);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8660" />
+ <g
+ transform="matrix(-1,0,0,-1,47.02856,43.99921)"
+ id="g1464">
+ <path
+ d="M 14.519136,38.5 L 32.524165,38.496094 L 32.524165,25.504468 L 40.519531,25.496656 L 23.374809,5.4992135 L 6.5285585,25.497284 L 14.52444,25.501074 L 14.519136,38.5 z "
+ style="opacity:1;color:#000000;fill:url(#radialGradient1469);fill-opacity:1;fill-rule:evenodd;stroke:#3a7304;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8643" />
+ <path
+ d="M 39.429889,24.993467 L 32.023498,25.005186 L 32.026179,37.998023 L 16.647623,37.98887 C 17.417545,19.64788 27.370272,26.995797 32.029282,16.341991 L 39.429889,24.993467 z "
+ style="opacity:0.5080214;color:#000000;fill:url(#radialGradient1471);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8645" />
+ <path
+ d="M 15.520704,37.496094 L 31.522109,37.5 L 31.522109,24.50705 L 38.33892,24.491425 L 23.384644,7.0388396 L 8.6781173,24.495782 L 15.518018,24.501029 L 15.520704,37.496094 z "
+ style="opacity:0.48128339;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8658" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-resolve.svg b/data/icons/scalable/status/aptdaemon-resolve.svg
new file mode 100644
index 0000000..a3afc2e
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-resolve.svg
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="27.366341"
+ y1="26.580296"
+ x2="31.335964"
+ y2="30.557772"
+ id="linearGradient2852"
+ xlink:href="#linearGradient2846"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="24.130018"
+ cy="37.967922"
+ r="16.528622"
+ fx="24.130018"
+ fy="37.967922"
+ id="radialGradient2842"
+ xlink:href="#linearGradient4477"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.237968,0,28.93278)" />
+ <linearGradient
+ x1="18.292673"
+ y1="13.602121"
+ x2="17.500893"
+ y2="25.743469"
+ id="linearGradient2372"
+ xlink:href="#linearGradient2366"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="24.130018"
+ cy="37.967922"
+ r="16.528622"
+ fx="24.130018"
+ fy="37.967922"
+ id="radialGradient4493"
+ xlink:href="#linearGradient4487"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.237968,0,28.93278)" />
+ <radialGradient
+ cx="15.414371"
+ cy="13.078408"
+ r="6.65625"
+ fx="15.414371"
+ fy="13.078408"
+ id="radialGradient4473"
+ xlink:href="#linearGradient4467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.592963,0,0,2.252104,-25.05975,-18.941)" />
+ <radialGradient
+ cx="18.240929"
+ cy="21.817987"
+ r="8.3085051"
+ fx="18.240929"
+ fy="21.817987"
+ id="radialGradient4460"
+ xlink:href="#linearGradient4454"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="30.65625"
+ y1="34"
+ x2="33.21875"
+ y2="31.0625"
+ id="linearGradient4446"
+ xlink:href="#linearGradient4440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.334593,0,0,1.291292,-6.973842,-7.460658)" />
+ <linearGradient
+ id="linearGradient4440">
+ <stop
+ style="stop-color:#7d7d7d;stop-opacity:1"
+ offset="0"
+ id="stop4442" />
+ <stop
+ style="stop-color:#b1b1b1;stop-opacity:1"
+ offset="0.5"
+ id="stop4448" />
+ <stop
+ style="stop-color:#686868;stop-opacity:1"
+ offset="1"
+ id="stop4444" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4454">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:0.20784314"
+ offset="0"
+ id="stop4456" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:0.6761905"
+ offset="1"
+ id="stop4458" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4467">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4469" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.24761905"
+ offset="1"
+ id="stop4471" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4477">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop4479" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop4481" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4487">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4489" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop4491" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2366">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop2368" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.21904762"
+ offset="0.5"
+ id="stop2374" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1"
+ id="stop2370" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2846">
+ <stop
+ style="stop-color:#8a8a8a;stop-opacity:1"
+ offset="0"
+ id="stop2848" />
+ <stop
+ style="stop-color:#484848;stop-opacity:1"
+ offset="1"
+ id="stop2850" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.6609312,0,0,0.6609312,13.858371,15.847334)"
+ id="g4855">
+ <g
+ id="g1772">
+ <path
+ d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
+ transform="matrix(1.446431,0,0,1.51999,-10.97453,-17.75168)"
+ style="opacity:0.17112301;color:#000000;fill:url(#radialGradient2842);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4475" />
+ <path
+ d="M 18.627569,3.1435548 C 10.488439,3.1435548 3.8827682,9.7492259 3.8827682,17.888356 C 3.8827682,26.027486 10.488439,32.633158 18.627569,32.633158 C 22.107124,32.633158 25.17857,31.248765 27.701292,29.230511 C 27.495915,30.237392 27.623257,31.265879 28.457436,31.990436 L 39.42152,41.517846 C 40.654936,42.589175 42.508982,42.448806 43.58031,41.215389 C 44.651638,39.981971 44.511269,38.127927 43.277853,37.056599 L 32.313769,27.529188 C 31.642242,26.945909 30.820891,26.773219 30.007531,26.886466 C 31.994231,24.374044 33.37237,21.337663 33.37237,17.888356 C 33.37237,9.7492259 26.766699,3.1435548 18.627569,3.1435548 z M 18.551954,4.3697381 C 26.191413,4.3697381 31.843729,9.1586886 31.843729,17.661513 C 31.843729,26.336626 26.027039,30.953288 18.551954,30.953288 C 11.249005,30.953288 5.2601806,25.475196 5.2601806,17.661513 C 5.2601806,9.6774061 11.084819,4.369738 18.551954,4.3697381 z "
+ style="opacity:1;color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2852);stroke-width:2.00000095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2844" />
+ <path
+ d="M 18.602905,3.0803551 C 10.437465,3.0803551 3.8104408,9.7073791 3.8104408,17.872819 C 3.8104408,26.038259 10.437465,32.665283 18.602905,32.665283 C 22.093708,32.665283 25.175082,31.276416 27.70596,29.251638 C 27.499919,30.261774 27.627672,31.293585 28.464547,32.020484 L 39.464073,41.578691 C 40.701476,42.653483 42.561515,42.512661 43.636306,41.275256 C 44.711097,40.037852 44.570274,38.177814 43.332871,37.103023 L 32.333346,27.544815 C 31.659648,26.959651 30.835642,26.786402 30.019653,26.900016 C 32.012775,24.379472 33.395369,21.333276 33.395369,17.872819 C 33.395369,9.7073791 26.768345,3.0803551 18.602905,3.0803551 z M 18.527046,6.2664243 C 24.808154,6.2664245 29.905864,11.364135 29.905864,17.645243 C 29.905864,23.926351 24.808154,29.024061 18.527046,29.024061 C 12.245938,29.024061 7.1482276,23.926351 7.1482276,17.645243 C 7.1482278,11.364135 12.245938,6.2664243 18.527046,6.2664243 z "
+ style="opacity:1;color:#000000;fill:#dcdcdc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4430" />
+ <path
+ d="M 39.507004,41.57769 C 39.028332,39.304503 40.904334,36.766268 43.091057,36.789315 C 43.091057,36.789315 32.33069,27.531204 32.33069,27.531204 C 29.385899,27.474498 28.061188,29.80382 28.553876,32.131126 L 39.507004,41.57769 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient4446);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4438" />
+ <path
+ d="M 28.549437 18.920233 A 11.048544 11.048544 0 1 1 6.4523487,18.920233 A 11.048544 11.048544 0 1 1 28.549437 18.920233 z"
+ transform="matrix(1.245743,0,0,1.245743,-3.425346,-6.177033)"
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2372);stroke-width:0.8027336;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4450" />
+ <path
+ d="M 40.65864 37.967922 A 16.528622 3.9332814 0 1 1 7.6013966,37.967922 A 16.528622 3.9332814 0 1 1 40.65864 37.967922 z"
+ transform="matrix(0.497764,0,0,0.609621,8.973526,15.61929)"
+ style="opacity:1;color:#000000;fill:url(#radialGradient4493);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4485" />
+ <rect
+ width="19.048439"
+ height="4.4404783"
+ rx="2.1366608"
+ ry="1.8879365"
+ x="40.373337"
+ y="0.14086054"
+ transform="matrix(0.752986,0.658037,-0.648902,0.760872,0,0)"
+ style="opacity:0.43315507;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00003111;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect4495" />
+ <path
+ d="M 25.897786 18.478292 A 8.3085051 8.3085051 0 1 1 9.280776,18.478292 A 8.3085051 8.3085051 0 1 1 25.897786 18.478292 z"
+ transform="matrix(1.398614,0,0,1.398614,-6.224338,-8.298958)"
+ style="color:#000000;fill:url(#radialGradient4460);fill-opacity:1;fill-rule:evenodd;stroke:#3063a3;stroke-width:0.71499395;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dashoffset:0;stroke-opacity:1;visibility:visible"
+ id="path4452" />
+ <path
+ d="M 18.156915,7.3966938 C 12.949325,7.3966938 8.7323681,11.613651 8.7323681,16.821241 C 8.7323681,18.325216 9.1526753,19.709014 9.77954,20.971144 C 11.03192,21.432757 12.362297,21.746827 13.774307,21.746827 C 19.945262,21.746827 24.873589,16.88519 25.254413,10.809698 C 23.523449,8.7641668 21.044374,7.3966938 18.156915,7.3966938 z "
+ style="opacity:0.83422457;color:#000000;fill:url(#radialGradient4473);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path4462" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-setup.svg b/data/icons/scalable/status/aptdaemon-setup.svg
new file mode 100644
index 0000000..fb5ac39
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-setup.svg
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="14.462892"
+ y1="12.284524"
+ x2="34.534348"
+ y2="39.684914"
+ id="linearGradient3281"
+ xlink:href="#linearGradient3264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.241935,0,0,1.241935,-5.027508,-7.208988)" />
+ <radialGradient
+ cx="25.455845"
+ cy="39.161163"
+ r="19.622213"
+ fx="25.455845"
+ fy="39.161163"
+ id="radialGradient3262"
+ xlink:href="#linearGradient3256"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.315315,0,26.81305)" />
+ <linearGradient
+ id="linearGradient3256">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop3258" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop3260" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3264">
+ <stop
+ style="stop-color:#c9c9c9;stop-opacity:1"
+ offset="0"
+ id="stop3266" />
+ <stop
+ style="stop-color:#f8f8f8;stop-opacity:1"
+ offset="0.25"
+ id="stop3276" />
+ <stop
+ style="stop-color:#e2e2e2;stop-opacity:1"
+ offset="0.5"
+ id="stop3272" />
+ <stop
+ style="stop-color:#b0b0b0;stop-opacity:1"
+ offset="0.75"
+ id="stop3274" />
+ <stop
+ style="stop-color:#c9c9c9;stop-opacity:1"
+ offset="1"
+ id="stop3268" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.6356736,0,0,0.6356736,17.454448,16.073099)"
+ id="g2727">
+ <path
+ d="M 45.078058 39.161163 A 19.622213 6.1871843 0 1 1 5.8336315,39.161163 A 19.622213 6.1871843 0 1 1 45.078058 39.161163 z"
+ transform="translate(-0.883885,2.474874)"
+ style="opacity:0.40909089;color:#000000;fill:url(#radialGradient3262);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3254" />
+ <path
+ d="M 23.25,0.46875 C 22.784561,0.50059628 22.332166,0.57268469 21.875,0.625 L 21.84375,0.625 L 20.75,6.59375 C 18.967275,6.9997399 17.290091,7.6887415 15.78125,8.625 L 10.875,5.09375 C 9.5487118,6.1234406 8.3418016,7.3243453 7.28125,8.625 L 10.6875,13.59375 C 9.6532671,15.174265 8.8755317,16.978974 8.4375,18.875 C 8.437425,18.883963 8.4374391,18.904688 8.4375,18.90625 L 2.5,19.84375 C 2.3914467,20.730383 2.34375,21.646689 2.34375,22.5625 C 2.3437501,23.3118 2.3644394,24.051089 2.4375,24.78125 L 8.375,25.84375 C 8.797279,27.905642 9.5994587,29.831262 10.71875,31.53125 L 7.1875,36.375 C 8.1988261,37.630518 9.3663917,38.773616 10.625,39.78125 L 15.625,36.34375 C 17.372433,37.458467 19.323083,38.240124 21.4375,38.625 L 22.375,44.53125 C 23.041183,44.591889 23.724349,44.59375 24.40625,44.59375 C 25.368935,44.593749 26.288487,44.557267 27.21875,44.4375 L 28.34375,38.40625 C 30.351311,37.906649 32.237219,37.03996 33.875,35.875 L 38.6875,39.375 C 39.935528,38.313203 41.076777,37.092744 42.0625,35.78125 L 38.5625,30.71875 C 39.510353,29.08176 40.167129,27.275609 40.5,25.34375 L 46.40625,24.40625 C 46.458044,23.789904 46.46875,23.192163 46.46875,22.5625 C 46.46875,21.468286 46.341568,20.395416 46.1875,19.34375 L 40.1875,18.25 C 39.717306,16.513776 38.945824,14.893898 37.96875,13.4375 L 41.5,8.59375 C 40.405427,7.2551429 39.156822,6.0185688 37.78125,4.96875 L 32.6875,8.46875 C 31.223504,7.6029126 29.648037,6.9385679 27.9375,6.5625 L 27,0.625 C 26.146701,0.52462461 25.286379,0.46875 24.40625,0.46875 C 24.168378,0.46875001 23.923566,0.4612654 23.6875,0.46875 C 23.572417,0.47239881 23.458534,0.4620551 23.34375,0.46875 C 23.312662,0.4705632 23.281029,0.46662691 23.25,0.46875 z M 24.0625,15.65625 C 24.176666,15.650457 24.290652,15.65625 24.40625,15.65625 C 28.105377,15.65625 31.125,18.675874 31.125,22.375 C 31.125001,26.074126 28.105376,29.0625 24.40625,29.0625 C 20.707125,29.062501 17.71875,26.074126 17.71875,22.375 C 17.718751,18.791473 20.52335,15.835842 24.0625,15.65625 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient3281);fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3243" />
+ <path
+ d="M 36.239223 23.781593 A 12.727922 12.727922 0 1 1 10.783379,23.781593 A 12.727922 12.727922 0 1 1 36.239223 23.781593 z"
+ transform="matrix(0.606518,0,0,0.606518,10.15021,7.936835)"
+ style="opacity:0.64772728;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.64875567;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3283" />
+ <path
+ d="M 22.557788,1.6501132 L 21.679599,7.4291233 C 20.008601,7.8096689 16.934874,8.9735344 15.520595,9.8511162 L 10.848562,6.3639293 C 9.6053938,7.3290873 9.5201391,7.3945394 8.5260544,8.6136804 L 11.904107,13.623634 C 10.934692,15.105095 9.7703031,17.745129 9.3522336,19.631722 C 9.3522336,19.631722 3.4328248,20.629563 3.4328248,20.629563 C 3.3310749,21.460629 3.3799751,23.239361 3.4484569,23.923761 L 9.1027005,24.942349 C 9.4985145,26.875018 10.979731,29.985937 12.028874,31.579383 L 8.4532981,36.303427 C 9.4012426,37.480259 9.5909623,37.587948 10.770691,38.532432 L 15.551859,35.029612 C 17.189777,36.074467 20.440892,37.345498 22.422794,37.706253 L 23.207481,43.412507 C 23.831913,43.469346 25.556962,43.628788 26.428924,43.516527 L 27.307112,37.576373 C 29.188855,37.108084 32.440272,35.773413 33.97541,34.681463 L 38.751465,38.132271 C 39.921276,37.13702 39.931757,36.987055 40.855703,35.757755 L 37.316505,30.727054 C 38.204954,29.192656 39.353733,26.191831 39.665742,24.381045 L 45.460384,23.419582 C 45.508931,22.841863 45.511294,21.230793 45.366882,20.245037 L 39.463105,19.226449 C 39.022378,17.599038 37.509894,14.666467 36.594056,13.301345 L 40.346408,8.5773019 C 39.320436,7.3225876 38.938964,7.150431 37.649602,6.1664065 L 32.707289,9.7056032 C 31.335043,8.8940304 28.598675,7.6568558 26.995341,7.3043568 L 26.122266,1.6501132 C 25.322445,1.5560285 23.014871,1.5978075 22.557788,1.6501132 z "
+ style="opacity:0.34659089;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path3285" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-update-cache.svg b/data/icons/scalable/status/aptdaemon-update-cache.svg
new file mode 100644
index 0000000..9f0eb6a
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-update-cache.svg
@@ -0,0 +1,1100 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1558"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1554"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1552"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1550"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1546"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1544"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1542"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1540"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1538"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1536"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1534"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1532"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1530"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1528"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1526"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1524"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1522"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1518"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1516"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1514"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1510"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1508"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1506"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1502"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1500"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1498"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1494"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1492"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1490"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1486"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1484"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1482"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1478"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1476"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1474"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1470"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1468"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1466"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1462"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient1460"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="18.63378"
+ cy="17.486208"
+ r="40.692665"
+ fx="18.934305"
+ fy="17.810213"
+ id="radialGradient4756"
+ xlink:href="#linearGradient4750"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.036822,0.964486)" />
+ <radialGradient
+ cx="11.826907"
+ cy="10.476453"
+ r="32.664848"
+ fx="11.826907"
+ fy="10.476453"
+ id="radialGradient4356"
+ xlink:href="#linearGradient4350"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.179536,0.847791)" />
+ <radialGradient
+ cx="15.601279"
+ cy="12.142302"
+ r="43.526714"
+ fx="15.601279"
+ fy="12.142302"
+ id="radialGradient4132"
+ xlink:href="#linearGradient4126"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.999989,1.000011)" />
+ <radialGradient
+ cx="15.115514"
+ cy="63.965389"
+ r="12.289036"
+ fx="15.115514"
+ fy="63.965389"
+ id="radialGradient4120"
+ xlink:href="#linearGradient4114"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.64399,0.608276)" />
+ <radialGradient
+ cx="18.247644"
+ cy="15.716079"
+ r="29.993349"
+ fx="18.247644"
+ fy="15.716079"
+ id="radialGradient3968"
+ xlink:href="#linearGradient3962"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(0.999989,1.000011)" />
+ <linearGradient
+ id="linearGradient3962">
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1"
+ offset="0"
+ id="stop3964" />
+ <stop
+ style="stop-color:#d3e9ff;stop-opacity:1"
+ offset="0.15517241"
+ id="stop4134" />
+ <stop
+ style="stop-color:#4074ae;stop-opacity:1"
+ offset="0.75"
+ id="stop2625" />
+ <stop
+ style="stop-color:#36486c;stop-opacity:1"
+ offset="1"
+ id="stop3966" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4114">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop4116" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop4118" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4126">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.16494845"
+ offset="1"
+ id="stop4130" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4350">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4352" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop4354" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4750">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4752" />
+ <stop
+ style="stop-color:#fefefe;stop-opacity:1"
+ offset="0.37931034"
+ id="stop4758" />
+ <stop
+ style="stop-color:#1d1d1d;stop-opacity:1"
+ offset="1"
+ id="stop4754" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.6246417,0,0,0.6246417,19.108029,16.07676)"
+ id="g2673">
+ <path
+ d="M 45.052803 38.908627 A 20.203051 7.4751287 0 1 1 4.6467018,38.908627 A 20.203051 7.4751287 0 1 1 45.052803 38.908627 z"
+ transform="matrix(1,0,0,1.243244,0,-10.27241)"
+ style="fill:url(#radialGradient4120);fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="path4112" />
+ <path
+ d="M 43.959853,23.485499 C 43.959853,34.195217 35.27775,42.877222 24.569505,42.877222 C 13.860279,42.877222 5.1786663,34.195119 5.1786663,23.485499 C 5.1786663,12.776272 13.860279,4.0951517 24.569505,4.0951517 C 35.27775,4.0951517 43.959853,12.776272 43.959853,23.485499 L 43.959853,23.485499 z "
+ style="fill:url(#radialGradient3968);fill-opacity:1;fill-rule:nonzero;stroke:#39396c;stroke-miterlimit:4;stroke-opacity:1"
+ id="path3214" />
+ <path
+ d="M 30.708637 15.271057 A 12.929953 9.2934036 0 1 1 4.848732,15.271057 A 12.929953 9.2934036 0 1 1 30.708637 15.271057 z"
+ transform="matrix(0.835938,0,0,1,9.886868,0)"
+ style="opacity:0.42159382;fill:url(#radialGradient4356);fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="path4348" />
+ <g
+ transform="matrix(0.982371,0,0,0.982371,0.121079,0.232914)"
+ style="fill:#000000;fill-opacity:0.71345029;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+ id="g4136">
+ <g
+ id="g4138">
+ <g
+ id="g4142">
+ <path
+ d="M 44.0713,20.7144 C 44.0713,20.9771 44.0713,20.7144 44.0713,20.7144 L 43.5264,21.3316 C 43.1924,20.938 42.8174,20.607 42.4366,20.2613 L 41.6007,20.3843 L 40.837,19.521 L 40.837,20.5894 L 41.4913,21.0845 L 41.9268,21.5777 L 42.5088,20.9195 C 42.6553,21.1939 42.7998,21.4683 42.9453,21.7427 L 42.9453,22.565 L 42.29,23.3052 L 41.0908,24.1284 L 40.1826,25.0347 L 39.6006,24.3745 L 39.8916,23.6343 L 39.3105,22.9761 L 38.3291,20.8784 L 37.4932,19.9331 L 37.2744,20.1792 L 37.6025,21.3726 L 38.2197,22.0718 C 38.5722,23.0894 38.9209,24.062 39.3838,25.0347 C 40.1016,25.0347 40.7783,24.9585 41.4912,24.8687 L 41.4912,25.4449 L 40.6191,27.5841 L 39.8193,28.4884 L 39.165,29.8888 C 39.165,30.6564 39.165,31.424 39.165,32.1915 L 39.3838,33.0978 L 39.0205,33.508 L 38.2197,34.0021 L 37.3838,34.7013 L 38.0752,35.4826 L 37.1299,36.3068 L 37.3115,36.84 L 35.8935,38.4455 L 34.9492,38.4455 L 34.1494,38.9396 L 33.6396,38.9396 L 33.6396,38.2814 L 33.4228,36.963 C 33.1415,36.1368 32.8486,35.3165 32.5507,34.4962 C 32.5507,33.8907 32.5868,33.2911 32.623,32.6857 L 32.9873,31.8634 L 32.4775,30.8751 L 32.5146,29.5177 L 31.8232,28.7364 L 32.1689,27.6055 L 31.6064,26.9673 L 30.624,26.9673 L 30.2969,26.5972 L 29.3155,27.2149 L 28.9161,26.7613 L 28.0069,27.543 C 27.3897,26.8433 26.7715,26.1441 26.1534,25.4449 L 25.4268,23.7164 L 26.0811,22.7301 L 25.7178,22.319 L 26.5166,20.4254 C 27.1729,19.609 27.8584,18.8258 28.5518,18.0397 L 29.7881,17.7106 L 31.169,17.5465 L 32.1143,17.7936 L 33.459,19.15 L 33.9317,18.6158 L 34.585,18.5338 L 35.8213,18.9449 L 36.7666,18.9449 L 37.4209,18.3687 L 37.7119,17.9576 L 37.0566,17.5465 L 35.9658,17.4645 C 35.6631,17.0446 35.3818,16.6032 35.0224,16.2301 L 34.6581,16.3942 L 34.5126,17.4645 L 33.8583,16.7243 L 33.7138,15.9001 L 32.9872,15.3259 L 32.6952,15.3259 L 33.4227,16.1482 L 33.1317,16.8884 L 32.5506,17.0525 L 32.9139,16.3123 L 32.2586,15.9842 L 31.6785,15.326 L 30.5867,15.5721 L 30.4422,15.9002 L 29.7879,16.3123 L 29.4246,17.2176 L 28.5164,17.6697 L 28.116,17.2176 L 27.6805,17.2176 L 27.6805,15.7362 L 28.6258,15.2421 L 29.3524,15.2421 L 29.2059,14.6669 L 28.6258,14.0907 L 29.6063,13.8846 L 30.1512,13.2684 L 30.5867,12.5272 L 31.3875,12.5272 L 31.1687,11.952 L 31.6785,11.6229 L 31.6785,12.2811 L 32.7683,12.5272 L 33.8581,11.6229 L 33.9313,11.2108 L 34.8756,10.5531 C 34.5338,10.5956 34.192,10.6268 33.858,10.7177 L 33.858,9.9766 L 34.2213,9.1538 L 33.858,9.1538 L 33.0596,9.894 L 32.8408,10.3056 L 33.0596,10.8823 L 32.6953,11.8686 L 32.1142,11.5395 L 31.6064,10.9643 L 30.8056,11.5395 L 30.5146,10.2236 L 31.8955,9.3188 L 31.8955,8.8247 L 32.7685,8.249 L 34.1494,7.9194 L 35.0947,8.249 L 36.8388,8.5781 L 36.4033,9.0713 L 35.458,9.0713 L 36.4033,10.0586 L 37.1299,9.2363 L 37.3506,8.8745 C 37.3506,8.8745 40.1377,11.3725 41.7305,14.105 C 43.3233,16.8384 44.0713,20.0601 44.0713,20.7144 z "
+ id="path4144" />
+ </g>
+ </g>
+ <g
+ id="g4146">
+ <g
+ id="g4150">
+ <path
+ d="M 26.0703,9.2363 L 25.9971,9.7295 L 26.5069,10.0586 L 27.378,9.4829 L 26.9425,8.9892 L 26.3605,9.3188 L 26.0705,9.2363"
+ id="path4152" />
+ </g>
+ </g>
+ <g
+ id="g4154">
+ <g
+ id="g4158">
+ <path
+ d="M 26.8701,5.8633 L 24.9795,5.1226 L 22.7998,5.3692 L 20.1094,6.1094 L 19.6006,6.6035 L 21.2725,7.7549 L 21.2725,8.4131 L 20.6182,9.0713 L 21.4912,10.8003 L 22.0713,10.4702 L 22.7998,9.3188 C 23.9228,8.9716 24.9297,8.5781 25.9971,8.0844 L 26.8701,5.8632"
+ id="path4160" />
+ </g>
+ </g>
+ <g
+ id="g4162">
+ <g
+ id="g4166">
+ <path
+ d="M 28.833,12.7749 L 28.542,12.0337 L 28.0322,12.1987 L 28.1787,13.103 L 28.833,12.7749"
+ id="path4168" />
+ </g>
+ </g>
+ <g
+ id="g4170">
+ <g
+ id="g4174">
+ <path
+ d="M 29.123,12.6089 L 28.9775,13.5972 L 29.7773,13.4322 L 30.3584,12.857 L 29.8496,12.3629 C 29.6787,11.9078 29.4824,11.483 29.2685,11.0465 L 28.833,11.0465 L 28.833,11.5397 L 29.123,11.8688 L 29.123,12.609"
+ id="path4176" />
+ </g>
+ </g>
+ <g
+ id="g4178">
+ <g
+ id="g4182">
+ <path
+ d="M 18.3652,28.2422 L 17.7832,27.0899 L 16.6929,26.8433 L 16.1114,25.2808 L 14.6578,25.4449 L 13.4224,24.5406 L 12.1133,25.692 L 12.1133,25.8736 C 11.7173,25.7593 11.2305,25.7437 10.8779,25.5269 L 10.5869,24.7046 L 10.5869,23.7993 L 9.7148,23.8813 C 9.7876,23.3051 9.8598,22.7299 9.9331,22.1538 L 9.4238,22.1538 L 8.9155,22.812 L 8.4062,23.0581 L 7.6791,22.6479 L 7.6063,21.7426 L 7.7518,20.7553 L 8.8426,19.933 L 9.7147,19.933 L 9.8597,19.4389 L 10.95,19.685 L 11.7498,20.6733 L 11.8953,19.0268 L 13.2766,17.8754 L 13.7854,16.641 L 14.803,16.2299 L 15.3845,15.4076 L 16.6926,15.1596 L 17.3474,14.1733 C 16.6931,14.1733 16.0388,14.1733 15.3845,14.1733 L 16.6203,13.5971 L 17.4919,13.5971 L 18.7282,13.185 L 18.8737,12.6928 L 18.4372,12.2807 L 17.9284,12.1157 L 18.0739,11.6225 L 17.7106,10.8823 L 16.838,11.2104 L 16.9835,10.5527 L 15.9659,9.9765 L 15.1666,11.3744 L 15.2389,11.8685 L 14.4396,12.1986 L 13.9303,13.2679 L 13.7125,12.2806 L 12.3312,11.7044 L 12.1129,10.9642 L 13.9303,9.8939 L 14.7301,9.1537 L 14.8029,8.2489 L 14.3669,8.0018 L 13.7854,7.9193 L 13.4221,8.8246 C 13.4221,8.8246 12.8142,8.9437 12.6579,8.9823 C 10.6618,10.8217 6.6286,14.7924 5.6916,22.2885 C 5.7287,22.4623 6.3708,23.4701 6.3708,23.4701 L 7.8972,24.3744 L 9.4236,24.7865 L 10.0784,25.6097 L 11.0955,26.3499 L 11.677,26.2679 L 12.113,26.4642 L 12.113,26.597 L 11.5319,28.16 L 11.0954,28.8182 L 11.2409,29.1483 L 10.8776,30.3807 L 12.1862,32.7674 L 13.4943,33.9197 L 14.0763,34.742 L 14.0031,36.4705 L 14.4396,37.4568 L 14.0031,39.3494 C 14.0031,39.3494 13.9689,39.3377 14.0246,39.5271 C 14.0808,39.7166 16.3537,40.9783 16.4982,40.8709 C 16.6422,40.7615 16.7653,40.6658 16.7653,40.6658 L 16.6203,40.2556 L 17.2014,39.6794 L 17.4197,39.1032 L 18.365,38.7731 L 19.0916,36.9626 L 18.8738,36.4704 L 19.3816,35.7302 L 20.4724,35.4822 L 21.0544,34.1658 L 20.9089,32.5213 L 21.781,31.2869 L 21.9265,30.0525 C 20.7331,29.4607 19.5495,28.8513 18.365,28.242"
+ id="path4184" />
+ </g>
+ </g>
+ <g
+ id="g4186">
+ <g
+ id="g4190">
+ <path
+ d="M 16.7656,9.5649 L 17.4922,10.0586 L 18.0742,10.0586 L 18.0742,9.4829 L 17.3476,9.1538 L 16.7656,9.5649"
+ id="path4192" />
+ </g>
+ </g>
+ <g
+ id="g4194">
+ <g
+ id="g4198">
+ <path
+ d="M 14.876,8.9072 L 14.5122,9.812 L 15.2393,9.812 L 15.6031,8.9892 C 15.9166,8.7675 16.2286,8.5444 16.5479,8.331 L 17.275,8.5781 C 17.7594,8.9072 18.2438,9.2363 18.7286,9.5649 L 19.4561,8.9072 L 18.6558,8.5781 L 18.292,7.8374 L 16.9111,7.6728 L 16.8383,7.2612 L 16.184,7.4262 L 15.8936,8.002 L 15.5298,7.2613 L 15.3848,7.5904 L 15.4576,8.4132 L 14.876,8.9072"
+ id="path4200" />
+ </g>
+ </g>
+ <g
+ id="g4202">
+ <g
+ style="opacity:0.75"
+ id="g4204">
+ <path
+ d=""
+ id="path4206" />
+ </g>
+ <g
+ id="g4208">
+ <path
+ d=""
+ id="path4210" />
+ </g>
+ </g>
+ <g
+ id="g4212">
+ <g
+ style="opacity:0.75"
+ id="g4214">
+ <path
+ d=""
+ id="path4216" />
+ </g>
+ <g
+ id="g4218">
+ <path
+ d=""
+ id="path4220" />
+ </g>
+ </g>
+ <g
+ id="g4222">
+ <g
+ id="g4226">
+ <path
+ d="M 17.4922,6.8496 L 17.856,6.521 L 18.5831,6.3564 C 19.0811,6.1142 19.5811,5.9511 20.1095,5.7802 L 19.8195,5.2865 L 18.881,5.4213 L 18.4376,5.8632 L 17.7066,5.9692 L 17.0567,6.2744 L 16.7408,6.4272 L 16.5479,6.6855 L 17.4922,6.8496"
+ id="path4228" />
+ </g>
+ </g>
+ <g
+ id="g4230">
+ <g
+ id="g4234">
+ <path
+ d="M 18.7285,14.6665 L 19.165,14.0083 L 18.5102,13.5151 L 18.7285,14.6665"
+ id="path4236" />
+ </g>
+ </g>
+ </g>
+ <g
+ transform="matrix(0.982371,0,0,0.982371,-8.095179e-2,3.0883e-2)"
+ style="color:#000000;fill:url(#radialGradient1460);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.01794541;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="g3216">
+ <g
+ style="color:#000000;fill:url(#radialGradient1462);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3218">
+ <g
+ style="color:#000000;fill:url(#radialGradient1466);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3222">
+ <path
+ d="M 44.0713,20.7144 C 44.0713,20.9771 44.0713,20.7144 44.0713,20.7144 L 43.5264,21.3316 C 43.1924,20.938 42.8174,20.607 42.4366,20.2613 L 41.6007,20.3843 L 40.837,19.521 L 40.837,20.5894 L 41.4913,21.0845 L 41.9268,21.5777 L 42.5088,20.9195 C 42.6553,21.1939 42.7998,21.4683 42.9453,21.7427 L 42.9453,22.565 L 42.29,23.3052 L 41.0908,24.1284 L 40.1826,25.0347 L 39.6006,24.3745 L 39.8916,23.6343 L 39.3105,22.9761 L 38.3291,20.8784 L 37.4932,19.9331 L 37.2744,20.1792 L 37.6025,21.3726 L 38.2197,22.0718 C 38.5722,23.0894 38.9209,24.062 39.3838,25.0347 C 40.1016,25.0347 40.7783,24.9585 41.4912,24.8687 L 41.4912,25.4449 L 40.6191,27.5841 L 39.8193,28.4884 L 39.165,29.8888 C 39.165,30.6564 39.165,31.424 39.165,32.1915 L 39.3838,33.0978 L 39.0205,33.508 L 38.2197,34.0021 L 37.3838,34.7013 L 38.0752,35.4826 L 37.1299,36.3068 L 37.3115,36.84 L 35.8935,38.4455 L 34.9492,38.4455 L 34.1494,38.9396 L 33.6396,38.9396 L 33.6396,38.2814 L 33.4228,36.963 C 33.1415,36.1368 32.8486,35.3165 32.5507,34.4962 C 32.5507,33.8907 32.5868,33.2911 32.623,32.6857 L 32.9873,31.8634 L 32.4775,30.8751 L 32.5146,29.5177 L 31.8232,28.7364 L 32.1689,27.6055 L 31.6064,26.9673 L 30.624,26.9673 L 30.2969,26.5972 L 29.3155,27.2149 L 28.9161,26.7613 L 28.0069,27.543 C 27.3897,26.8433 26.7715,26.1441 26.1534,25.4449 L 25.4268,23.7164 L 26.0811,22.7301 L 25.7178,22.319 L 26.5166,20.4254 C 27.1729,19.609 27.8584,18.8258 28.5518,18.0397 L 29.7881,17.7106 L 31.169,17.5465 L 32.1143,17.7936 L 33.459,19.15 L 33.9317,18.6158 L 34.585,18.5338 L 35.8213,18.9449 L 36.7666,18.9449 L 37.4209,18.3687 L 37.7119,17.9576 L 37.0566,17.5465 L 35.9658,17.4645 C 35.6631,17.0446 35.3818,16.6032 35.0224,16.2301 L 34.6581,16.3942 L 34.5126,17.4645 L 33.8583,16.7243 L 33.7138,15.9001 L 32.9872,15.3259 L 32.6952,15.3259 L 33.4227,16.1482 L 33.1317,16.8884 L 32.5506,17.0525 L 32.9139,16.3123 L 32.2586,15.9842 L 31.6785,15.326 L 30.5867,15.5721 L 30.4422,15.9002 L 29.7879,16.3123 L 29.4246,17.2176 L 28.5164,17.6697 L 28.116,17.2176 L 27.6805,17.2176 L 27.6805,15.7362 L 28.6258,15.2421 L 29.3524,15.2421 L 29.2059,14.6669 L 28.6258,14.0907 L 29.6063,13.8846 L 30.1512,13.2684 L 30.5867,12.5272 L 31.3875,12.5272 L 31.1687,11.952 L 31.6785,11.6229 L 31.6785,12.2811 L 32.7683,12.5272 L 33.8581,11.6229 L 33.9313,11.2108 L 34.8756,10.5531 C 34.5338,10.5956 34.192,10.6268 33.858,10.7177 L 33.858,9.9766 L 34.2213,9.1538 L 33.858,9.1538 L 33.0596,9.894 L 32.8408,10.3056 L 33.0596,10.8823 L 32.6953,11.8686 L 32.1142,11.5395 L 31.6064,10.9643 L 30.8056,11.5395 L 30.5146,10.2236 L 31.8955,9.3188 L 31.8955,8.8247 L 32.7685,8.249 L 34.1494,7.9194 L 35.0947,8.249 L 36.8388,8.5781 L 36.4033,9.0713 L 35.458,9.0713 L 36.4033,10.0586 L 37.1299,9.2363 L 37.3506,8.8745 C 37.3506,8.8745 40.1377,11.3725 41.7305,14.105 C 43.3233,16.8384 44.0713,20.0601 44.0713,20.7144 z "
+ style="color:#000000;fill:url(#radialGradient1468);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3224" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1470);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3226">
+ <g
+ style="color:#000000;fill:url(#radialGradient1474);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3230">
+ <path
+ d="M 26.0703,9.2363 L 25.9971,9.7295 L 26.5069,10.0586 L 27.378,9.4829 L 26.9425,8.9892 L 26.3605,9.3188 L 26.0705,9.2363"
+ style="color:#000000;fill:url(#radialGradient1476);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3232" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1478);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3234">
+ <g
+ style="color:#000000;fill:url(#radialGradient1482);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3238">
+ <path
+ d="M 26.8701,5.8633 L 24.9795,5.1226 L 22.7998,5.3692 L 20.1094,6.1094 L 19.6006,6.6035 L 21.2725,7.7549 L 21.2725,8.4131 L 20.6182,9.0713 L 21.4912,10.8003 L 22.0713,10.4702 L 22.7998,9.3188 C 23.9228,8.9716 24.9297,8.5781 25.9971,8.0844 L 26.8701,5.8632"
+ style="color:#000000;fill:url(#radialGradient1484);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3240" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1486);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3242">
+ <g
+ style="color:#000000;fill:url(#radialGradient1490);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3246">
+ <path
+ d="M 28.833,12.7749 L 28.542,12.0337 L 28.0322,12.1987 L 28.1787,13.103 L 28.833,12.7749"
+ style="color:#000000;fill:url(#radialGradient1492);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3248" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1494);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3250">
+ <g
+ style="color:#000000;fill:url(#radialGradient1498);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3254">
+ <path
+ d="M 29.123,12.6089 L 28.9775,13.5972 L 29.7773,13.4322 L 30.3584,12.857 L 29.8496,12.3629 C 29.6787,11.9078 29.4824,11.483 29.2685,11.0465 L 28.833,11.0465 L 28.833,11.5397 L 29.123,11.8688 L 29.123,12.609"
+ style="color:#000000;fill:url(#radialGradient1500);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3256" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1502);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3258">
+ <g
+ style="color:#000000;fill:url(#radialGradient1506);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3262">
+ <path
+ d="M 18.3652,28.2422 L 17.7832,27.0899 L 16.6929,26.8433 L 16.1114,25.2808 L 14.6578,25.4449 L 13.4224,24.5406 L 12.1133,25.692 L 12.1133,25.8736 C 11.7173,25.7593 11.2305,25.7437 10.8779,25.5269 L 10.5869,24.7046 L 10.5869,23.7993 L 9.7148,23.8813 C 9.7876,23.3051 9.8598,22.7299 9.9331,22.1538 L 9.4238,22.1538 L 8.9155,22.812 L 8.4062,23.0581 L 7.6791,22.6479 L 7.6063,21.7426 L 7.7518,20.7553 L 8.8426,19.933 L 9.7147,19.933 L 9.8597,19.4389 L 10.95,19.685 L 11.7498,20.6733 L 11.8953,19.0268 L 13.2766,17.8754 L 13.7854,16.641 L 14.803,16.2299 L 15.3845,15.4076 L 16.6926,15.1596 L 17.3474,14.1733 C 16.6931,14.1733 16.0388,14.1733 15.3845,14.1733 L 16.6203,13.5971 L 17.4919,13.5971 L 18.7282,13.185 L 18.8737,12.6928 L 18.4372,12.2807 L 17.9284,12.1157 L 18.0739,11.6225 L 17.7106,10.8823 L 16.838,11.2104 L 16.9835,10.5527 L 15.9659,9.9765 L 15.1666,11.3744 L 15.2389,11.8685 L 14.4396,12.1986 L 13.9303,13.2679 L 13.7125,12.2806 L 12.3312,11.7044 L 12.1129,10.9642 L 13.9303,9.8939 L 14.7301,9.1537 L 14.8029,8.2489 L 14.3669,8.0018 L 13.7854,7.9193 L 13.4221,8.8246 C 13.4221,8.8246 12.8142,8.9437 12.6579,8.9823 C 10.6618,10.8217 6.6286,14.7924 5.6916,22.2885 C 5.7287,22.4623 6.3708,23.4701 6.3708,23.4701 L 7.8972,24.3744 L 9.4236,24.7865 L 10.0784,25.6097 L 11.0955,26.3499 L 11.677,26.2679 L 12.113,26.4642 L 12.113,26.597 L 11.5319,28.16 L 11.0954,28.8182 L 11.2409,29.1483 L 10.8776,30.3807 L 12.1862,32.7674 L 13.4943,33.9197 L 14.0763,34.742 L 14.0031,36.4705 L 14.4396,37.4568 L 14.0031,39.3494 C 14.0031,39.3494 13.9689,39.3377 14.0246,39.5271 C 14.0808,39.7166 16.3537,40.9783 16.4982,40.8709 C 16.6422,40.7615 16.7653,40.6658 16.7653,40.6658 L 16.6203,40.2556 L 17.2014,39.6794 L 17.4197,39.1032 L 18.365,38.7731 L 19.0916,36.9626 L 18.8738,36.4704 L 19.3816,35.7302 L 20.4724,35.4822 L 21.0544,34.1658 L 20.9089,32.5213 L 21.781,31.2869 L 21.9265,30.0525 C 20.7331,29.4607 19.5495,28.8513 18.365,28.242"
+ style="color:#000000;fill:url(#radialGradient1508);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3264" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1510);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3266">
+ <g
+ style="color:#000000;fill:url(#radialGradient1514);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3270">
+ <path
+ d="M 16.7656,9.5649 L 17.4922,10.0586 L 18.0742,10.0586 L 18.0742,9.4829 L 17.3476,9.1538 L 16.7656,9.5649"
+ style="color:#000000;fill:url(#radialGradient1516);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3272" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1518);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3274">
+ <g
+ style="color:#000000;fill:url(#radialGradient1522);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3278">
+ <path
+ d="M 14.876,8.9072 L 14.5122,9.812 L 15.2393,9.812 L 15.6031,8.9892 C 15.9166,8.7675 16.2286,8.5444 16.5479,8.331 L 17.275,8.5781 C 17.7594,8.9072 18.2438,9.2363 18.7286,9.5649 L 19.4561,8.9072 L 18.6558,8.5781 L 18.292,7.8374 L 16.9111,7.6728 L 16.8383,7.2612 L 16.184,7.4262 L 15.8936,8.002 L 15.5298,7.2613 L 15.3848,7.5904 L 15.4576,8.4132 L 14.876,8.9072"
+ style="color:#000000;fill:url(#radialGradient1524);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3280" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1526);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3282">
+ <g
+ style="opacity:0.75;color:#000000;fill:url(#radialGradient1528);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3284">
+ <path
+ d=""
+ style="color:#000000;fill:url(#radialGradient1530);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3286" />
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1532);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3288">
+ <path
+ d=""
+ style="color:#000000;fill:url(#radialGradient1534);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3290" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1536);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3292">
+ <g
+ style="opacity:0.75;color:#000000;fill:url(#radialGradient1538);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3294">
+ <path
+ d=""
+ style="color:#000000;fill:url(#radialGradient1540);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3296" />
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1542);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3298">
+ <path
+ d=""
+ style="color:#000000;fill:url(#radialGradient1544);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3300" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1546);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3302">
+ <g
+ style="color:#000000;fill:url(#radialGradient1550);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3306">
+ <path
+ d="M 17.4922,6.8496 L 17.856,6.521 L 18.5831,6.3564 C 19.0811,6.1142 19.5811,5.9511 20.1095,5.7802 L 19.8195,5.2865 L 18.881,5.4213 L 18.4376,5.8632 L 17.7066,5.9692 L 17.0567,6.2744 L 16.7408,6.4272 L 16.5479,6.6855 L 17.4922,6.8496"
+ style="color:#000000;fill:url(#radialGradient1552);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3308" />
+ </g>
+ </g>
+ <g
+ style="color:#000000;fill:url(#radialGradient1554);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3310">
+ <g
+ style="color:#000000;fill:url(#radialGradient1558);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="g3314">
+ <path
+ d="M 18.7285,14.6665 L 19.165,14.0083 L 18.5102,13.5151 L 18.7285,14.6665"
+ style="color:#000000;fill:url(#radialGradient4756);marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"
+ id="path3316" />
+ </g>
+ </g>
+ </g>
+ <path
+ d="M 42.975093,23.485534 C 42.975093,33.651354 34.733915,41.89244 24.569493,41.89244 C 14.404139,41.89244 6.1634261,33.651261 6.1634261,23.485534 C 6.1634261,13.32018 14.404139,5.079934 24.569493,5.079934 C 34.733915,5.079934 42.975093,13.32018 42.975093,23.485534 L 42.975093,23.485534 z "
+ style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient4132);stroke-miterlimit:4;stroke-opacity:1"
+ id="path4122" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-upgrade.svg b/data/icons/scalable/status/aptdaemon-upgrade.svg
new file mode 100644
index 0000000..f889666
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-upgrade.svg
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient2797">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop2799" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop2801" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2402">
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1"
+ offset="0"
+ id="stop2404" />
+ <stop
+ style="stop-color:#528ac5;stop-opacity:1"
+ offset="1"
+ id="stop2406" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2871">
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="0"
+ id="stop2326" />
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="1"
+ id="stop2875" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2690">
+ <stop
+ style="stop-color:#c4d7eb;stop-opacity:1"
+ offset="0"
+ id="stop2692" />
+ <stop
+ style="stop-color:#c4d7eb;stop-opacity:0"
+ offset="1"
+ id="stop2694" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2682">
+ <stop
+ style="stop-color:#3977c3;stop-opacity:1"
+ offset="0"
+ id="stop2684" />
+ <stop
+ style="stop-color:#89aedc;stop-opacity:0"
+ offset="1"
+ id="stop2686" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2380">
+ <stop
+ style="stop-color:#b9cfe7;stop-opacity:1"
+ offset="0"
+ id="stop2382" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1"
+ offset="1"
+ id="stop2384" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2831">
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="0"
+ id="stop2833" />
+ <stop
+ style="stop-color:#5b86be;stop-opacity:1"
+ offset="0.33333334"
+ id="stop2855" />
+ <stop
+ style="stop-color:#83a8d8;stop-opacity:0"
+ offset="1"
+ id="stop2835" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2847">
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="0"
+ id="stop2849" />
+ <stop
+ style="stop-color:#3465a4;stop-opacity:0"
+ offset="1"
+ id="stop2851" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8662">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop8664" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop8666" />
+ </linearGradient>
+ <radialGradient
+ cx="24.837126"
+ cy="36.421127"
+ r="15.644737"
+ fx="24.837126"
+ fy="36.421127"
+ id="radialGradient4601"
+ xlink:href="#linearGradient8662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" />
+ <linearGradient
+ x1="13.478554"
+ y1="10.612206"
+ x2="15.419417"
+ y2="19.115122"
+ id="linearGradient4603"
+ xlink:href="#linearGradient2831"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-48.30498,-6.043298)" />
+ <linearGradient
+ x1="37.128052"
+ y1="29.729605"
+ x2="37.065414"
+ y2="26.194071"
+ id="linearGradient4605"
+ xlink:href="#linearGradient2847"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,-1.24248,40.0817)" />
+ <linearGradient
+ x1="62.513836"
+ y1="36.061237"
+ x2="15.984863"
+ y2="20.60858"
+ id="linearGradient4607"
+ xlink:href="#linearGradient2380"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="62.513836"
+ y1="36.061237"
+ x2="15.984863"
+ y2="20.60858"
+ id="linearGradient4609"
+ xlink:href="#linearGradient2380"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="46.834816"
+ y1="45.264122"
+ x2="45.380436"
+ y2="50.939667"
+ id="linearGradient4611"
+ xlink:href="#linearGradient2871"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="32.647972"
+ y1="30.748846"
+ x2="37.124462"
+ y2="24.842253"
+ id="linearGradient4613"
+ xlink:href="#linearGradient2690"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-48.77039,-5.765705)" />
+ <linearGradient
+ x1="36.713837"
+ y1="31.455952"
+ x2="37.124462"
+ y2="24.842253"
+ id="linearGradient4615"
+ xlink:href="#linearGradient2682"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-48.77039,-5.765705)" />
+ <linearGradient
+ x1="18.935766"
+ y1="23.667896"
+ x2="53.588623"
+ y2="26.649363"
+ id="linearGradient4617"
+ xlink:href="#linearGradient2402"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="46.834816"
+ y1="45.264122"
+ x2="45.380436"
+ y2="50.939667"
+ id="linearGradient4619"
+ xlink:href="#linearGradient2871"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.935766"
+ y1="23.667896"
+ x2="53.588623"
+ y2="26.649363"
+ id="linearGradient4621"
+ xlink:href="#linearGradient2402"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="46.834816"
+ y1="45.264122"
+ x2="45.380436"
+ y2="50.939667"
+ id="linearGradient4623"
+ xlink:href="#linearGradient2871"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="5.9649177"
+ y1="26.048164"
+ x2="52.854095"
+ y2="26.048164"
+ id="linearGradient4625"
+ xlink:href="#linearGradient2797"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="5.9649177"
+ y1="26.048164"
+ x2="52.854095"
+ y2="26.048164"
+ id="linearGradient4627"
+ xlink:href="#linearGradient2797"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(0.6803011,0,0,0.6803011,16.43826,17.762703)"
+ id="g4586">
+ <path
+ d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
+ transform="matrix(-1.489736,0,0,-1.001252,61.20865,75.2819)"
+ style="opacity:0.38333333;color:#000000;fill:url(#radialGradient4601);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path8660" />
+ <path
+ d="M 20.152913,10.409904 C 20.152913,10.409904 11.215413,9.784904 13.965413,20.284904 L 6.2779132,20.284904 C 6.2779132,20.284904 6.7779132,8.409904 20.152913,10.409904 z "
+ style="color:#000000;fill:url(#linearGradient4603);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4605);stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2865" />
+ <g
+ transform="matrix(-0.579051,-0.489228,-0.489228,0.579051,56.91585,13.37137)"
+ style="fill:url(#linearGradient4607);fill-opacity:1;stroke:#3465a4;stroke-opacity:1"
+ id="g1878">
+ <path
+ d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.113843,3.1515478 L 7.6245439,20.496754 L 22.714328,33.219189 C 22.714328,33.219189 22.462411,23.337969 22.462411,23.337969 C 41.292171,24.336946 55.444038,37.409698 44.306783,50.229694 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient4609);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4611);stroke-width:1.31916928;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path1880" />
+ </g>
+ <path
+ d="M 28.375,33.4375 C 28.375,33.4375 37.3125,34.0625 34.5625,23.5625 L 42.338388,23.5625 C 42.338388,25.065102 41.75,35.4375 28.375,33.4375 z "
+ style="color:#000000;fill:url(#linearGradient4613);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4615);stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2839" />
+ <g
+ transform="matrix(0.579051,0.489228,0.489228,-0.579051,-7.921023,30.53599)"
+ style="opacity:1;color:#000000;fill:url(#linearGradient4617);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4619);stroke-width:1.31916928;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="g2779">
+ <path
+ d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.399432,3.0690297 L 7.793943,20.424005 L 22.462411,33.006349 C 22.462411,33.006349 22.462411,23.337969 22.462411,23.337969 C 41.292171,24.336946 55.444038,37.409698 44.306783,50.229694 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient4621);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4623);stroke-width:1.31916928;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2781" />
+ </g>
+ <path
+ d="M 7.0625,38.1875 L 7.125,23.3125 L 20.0625,22.9375 L 15.673627,28.116317 L 19.540852,30.489516 C 16.540852,32.739516 14.991304,32.911644 13.991304,35.474144 L 11.174446,33.363872 L 7.0625,38.1875 z "
+ style="opacity:0.27222224;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2791" />
+ <g
+ transform="matrix(0.508536,0.429651,0.429651,-0.508536,-3.973188,30.54119)"
+ style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ id="g2793">
+ <path
+ d="M 51.090265,45.943705 C 60.210465,30.723955 46.631614,12.20113 19.485058,11.948579 L 19.513464,3.7032834 L 6.5341979,19.296639 L 19.367661,30.26876 C 19.367661,30.26876 19.423281,21.261882 19.423281,21.261882 C 36.951096,21.037973 54.618466,31.365254 51.090265,45.943705 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4625);stroke-width:1.50208926;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2795" />
+ </g>
+ <g
+ transform="matrix(-0.508536,-0.429651,-0.429651,0.508536,53.049,13.36548)"
+ style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ id="g2805">
+ <path
+ d="M 51.389927,46.505946 C 60.510127,31.286196 47.050763,12.432359 19.628482,12.069755 L 19.342824,4.0507204 L 6.3413093,19.379475 L 19.809059,30.764589 C 19.809059,30.764589 19.627294,21.311346 19.627294,21.311346 C 37.872231,21.693318 54.411175,32.236592 51.389927,46.505946 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4627);stroke-width:1.50208926;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2807" />
+ </g>
+ <path
+ d="M 6.8125,16.5 C 10.405935,6.0587275 23.256282,10.355393 27,12 C 31.175307,12.211475 32.674736,9.164996 36,9 C 21.950264,-0.7899963 7.1875,2.5 6.8125,16.5 z "
+ style="opacity:0.27222224;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2811" />
+ </g>
+ </g>
+</svg>
diff --git a/data/icons/scalable/status/aptdaemon-wait.svg b/data/icons/scalable/status/aptdaemon-wait.svg
new file mode 100644
index 0000000..ddf7438
--- /dev/null
+++ b/data/icons/scalable/status/aptdaemon-wait.svg
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.0"
+ width="48"
+ height="48"
+ id="svg2963">
+ <defs
+ id="defs3">
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6719"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" />
+ <linearGradient
+ id="linearGradient5060">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop5062" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5064" />
+ </linearGradient>
+ <radialGradient
+ cx="605.71429"
+ cy="486.64789"
+ r="117.14286"
+ fx="605.71429"
+ fy="486.64789"
+ id="radialGradient6717"
+ xlink:href="#linearGradient5060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" />
+ <linearGradient
+ id="linearGradient5048">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop5050" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0.5"
+ id="stop5056" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1"
+ id="stop5052" />
+ </linearGradient>
+ <linearGradient
+ x1="302.85715"
+ y1="366.64789"
+ x2="302.85715"
+ y2="609.50507"
+ id="linearGradient6715"
+ xlink:href="#linearGradient5048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" />
+ <linearGradient
+ id="linearGradient4995">
+ <stop
+ style="stop-color:#de9523;stop-opacity:1"
+ offset="0"
+ id="stop4997" />
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="1"
+ id="stop4999" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4987">
+ <stop
+ style="stop-color:#a0670c;stop-opacity:1"
+ offset="0"
+ id="stop4989" />
+ <stop
+ style="stop-color:#a0670c;stop-opacity:0"
+ offset="1"
+ id="stop4991" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4979">
+ <stop
+ style="stop-color:#fbf0e0;stop-opacity:1"
+ offset="0"
+ id="stop4981" />
+ <stop
+ style="stop-color:#f0ce99;stop-opacity:1"
+ offset="1"
+ id="stop4983" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4222">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop4224" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.68639052"
+ offset="1"
+ id="stop4226" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4210">
+ <stop
+ style="stop-color:#eaba6f;stop-opacity:1"
+ offset="0"
+ id="stop4212" />
+ <stop
+ style="stop-color:#b97a1b;stop-opacity:1"
+ offset="1"
+ id="stop4214" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4192">
+ <stop
+ style="stop-color:#e9b96e;stop-opacity:1"
+ offset="0"
+ id="stop4194" />
+ <stop
+ style="stop-color:#f1d19e;stop-opacity:1"
+ offset="1"
+ id="stop4196" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4182">
+ <stop
+ style="stop-color:#a36d18;stop-opacity:1"
+ offset="0"
+ id="stop4184" />
+ <stop
+ style="stop-color:#d79020;stop-opacity:1"
+ offset="1"
+ id="stop4186" />
+ </linearGradient>
+ <linearGradient
+ x1="30.062469"
+ y1="13.444801"
+ x2="17.696169"
+ y2="12.333632"
+ id="linearGradient2269"
+ xlink:href="#linearGradient4979"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="36.288929"
+ y1="14.661557"
+ x2="47.065834"
+ y2="15.267649"
+ id="linearGradient2274"
+ xlink:href="#linearGradient4995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="25.381256"
+ y1="24.720648"
+ x2="24.119167"
+ y2="16.17037"
+ id="linearGradient2277"
+ xlink:href="#linearGradient4192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.986355,0,0.316638)" />
+ <linearGradient
+ x1="16.148972"
+ y1="12.636667"
+ x2="34.193642"
+ y2="12.636667"
+ id="linearGradient2280"
+ xlink:href="#linearGradient4182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.039184,0,-4.057054e-2)" />
+ <linearGradient
+ x1="21.906841"
+ y1="9.7577486"
+ x2="22.071806"
+ y2="16.020695"
+ id="linearGradient2282"
+ xlink:href="#linearGradient4987"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="18.706615"
+ y1="19.912336"
+ x2="30.014812"
+ y2="47.388485"
+ id="linearGradient2285"
+ xlink:href="#linearGradient4222"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="24.990499"
+ y1="34.004856"
+ x2="24.990499"
+ y2="22.585211"
+ id="linearGradient2288"
+ xlink:href="#linearGradient4210"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="15.089521"
+ y1="15.291994"
+ x2="14"
+ y2="52.510574"
+ id="linearGradient2864"
+ xlink:href="#linearGradient3081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4e-4,-9.426e-2)" />
+ <linearGradient
+ x1="169"
+ y1="110.33805"
+ x2="169"
+ y2="93.204849"
+ id="linearGradient2862"
+ xlink:href="#linearGradient2697"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)" />
+ <radialGradient
+ cx="169.77171"
+ cy="100.20107"
+ r="11"
+ fx="169.77171"
+ fy="100.20107"
+ id="radialGradient2860"
+ xlink:href="#linearGradient2679"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)" />
+ <linearGradient
+ x1="174.83363"
+ y1="84.263489"
+ x2="174.74524"
+ y2="105.49083"
+ id="linearGradient2858"
+ xlink:href="#linearGradient2817"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)" />
+ <linearGradient
+ x1="174.83363"
+ y1="84.263489"
+ x2="174.74524"
+ y2="105.49083"
+ id="linearGradient2823"
+ xlink:href="#linearGradient2817"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.103262,0,0,1.054917,-163.1228,-76.31138)" />
+ <radialGradient
+ cx="169.77171"
+ cy="100.20107"
+ r="11"
+ fx="169.77171"
+ fy="100.20107"
+ id="radialGradient2809"
+ xlink:href="#linearGradient2679"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.562309e-6,-1.07205,1.992104,-1.250658e-6,-175.6121,212.6949)" />
+ <linearGradient
+ x1="169"
+ y1="110.33805"
+ x2="169"
+ y2="93.204849"
+ id="linearGradient2803"
+ xlink:href="#linearGradient2697"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.004384,-145.0004,-71.4625)" />
+ <linearGradient
+ x1="15.089521"
+ y1="15.291994"
+ x2="14"
+ y2="52.510574"
+ id="linearGradient2800"
+ xlink:href="#linearGradient3081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-4e-4,-9.426e-2)" />
+ <linearGradient
+ id="linearGradient3081">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3083" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1"
+ id="stop3085" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2679">
+ <stop
+ style="stop-color:#f7f7f7;stop-opacity:1"
+ offset="0"
+ id="stop2681" />
+ <stop
+ style="stop-color:#ccd0c7;stop-opacity:1"
+ offset="1"
+ id="stop2683" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2697">
+ <stop
+ style="stop-color:#babdb6;stop-opacity:1"
+ offset="0"
+ id="stop2699" />
+ <stop
+ style="stop-color:#555753;stop-opacity:1"
+ offset="1"
+ id="stop2701" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2817">
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0"
+ id="stop2819" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.48453608"
+ offset="1"
+ id="stop2821" />
+ </linearGradient>
+ </defs>
+ <g
+ id="layer1">
+ <g
+ transform="matrix(2.105461e-2,0,0,2.086758e-2,42.60172,35.4036)"
+ style="display:inline"
+ id="g6707">
+ <rect
+ width="1339.6335"
+ height="478.35718"
+ x="-1559.2523"
+ y="-150.69685"
+ style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="rect6709" />
+ <path
+ d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6711" />
+ <path
+ d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+ style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path6713" />
+ </g>
+ <rect
+ width="31.978371"
+ height="23.112879"
+ rx="2.4241352"
+ ry="2.394444"
+ x="7.4623847"
+ y="15.275433"
+ style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000072;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect3115" />
+ <rect
+ width="29.804138"
+ height="21.075352"
+ rx="1.2846882"
+ ry="1.2846882"
+ x="8.4989996"
+ y="16.243698"
+ style="opacity:0.48101268;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2285);stroke-width:1.00000107;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="rect4220" />
+ <path
+ d="M 8.7697819,16.547178 L 13.819731,9.7363408 L 32.615291,9.6353255 L 37.835264,16.408941 L 8.7697819,16.547178 z "
+ style="fill:url(#linearGradient2280);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2282);stroke-width:1.00000083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4162" />
+ <path
+ d="M 38.276321,16.325703 L 43.469269,23.520364 L 3.9609455,23.520364 L 8.6250143,16.320763 L 38.276321,16.325703 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2277);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4164" />
+ <path
+ d="M 32.849333,9.6141009 L 37.532219,16.53637 L 46.565835,20.921197 L 38.451329,12.008545 L 32.849333,9.6141009 z "
+ style="opacity:1;color:#000000;fill:url(#linearGradient2274);fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4178" />
+ <path
+ d="M 13.617702,9.7151161 L 9.6419233,16.435355 L 0.50729183,20.820182 L 8.6217973,11.90753 L 13.617702,9.7151161 z "
+ style="opacity:1;color:#000000;fill:#f8e8cf;fill-opacity:1;fill-rule:nonzero;stroke:#a0670c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4180" />
+ <path
+ d="M 37.024959,16.43605 L 41.478871,22.493011 L 5.6482792,22.493011 L 9.7892982,16.312694 L 37.024959,16.43605 z "
+ style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#f4e3ca;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path4954" />
+ <path
+ d="M 9.6523127,16.371803 L 13.036643,10.59302 L 33.514841,10.517799 L 37.356782,16.36988 L 9.6523127,16.371803 z "
+ style="opacity:0.87974686;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2269);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4966" />
+ <g
+ transform="matrix(1.1188496,0,0,1.1188496,7.7807768,4.3036091)"
+ style="display:inline"
+ id="g3524">
+ <g
+ id="g2837">
+ <path
+ d="M 26.086565,12.829103 L 26.086565,34.982359 L 34.912658,34.982359 L 34.912658,12.829103 L 26.086565,12.829103 z "
+ style="opacity:0.15;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2823);stroke-width:1.99999952;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2815" />
+ <path
+ d="M 26.4996,13.40575 L 26.4996,34.40575 L 34.4996,34.40575 L 34.4996,13.40575 L 26.4996,13.40575 z "
+ style="color:#000000;fill:url(#radialGradient2809);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2827" />
+ <path
+ d="M 26.4996,13.407946 L 26.4996,34.50001 L 34.4996,34.50001 L 34.4996,13.407946 L 26.4996,13.407946 z "
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2803);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2762" />
+ <path
+ d="M 27.4996,14.40575 L 27.4996,33.40575 L 33.4996,33.40575 L 33.4996,14.40575 L 27.4996,14.40575 z "
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2800);stroke-width:0.9999997;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2811" />
+ <path
+ d="M 28.019106,14.942758 L 28.019106,23.328389 L 33.013048,22.70967 L 33.013048,14.85437 L 28.019106,14.942758 z "
+ style="opacity:0.5;color:#000000;fill:#f7f7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2479" />
+ </g>
+ <g
+ transform="translate(-12.97229,0)"
+ id="use2844">
+ <path
+ d="M 26.086565,12.829103 L 26.086565,34.982359 L 34.912658,34.982359 L 34.912658,12.829103 L 26.086565,12.829103 z "
+ style="opacity:0.15;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2858);stroke-width:1.99999952;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2848" />
+ <path
+ d="M 26.4996,13.40575 L 26.4996,34.40575 L 34.4996,34.40575 L 34.4996,13.40575 L 26.4996,13.40575 z "
+ style="color:#000000;fill:url(#radialGradient2860);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2850" />
+ <path
+ d="M 26.4996,13.407946 L 26.4996,34.50001 L 34.4996,34.50001 L 34.4996,13.407946 L 26.4996,13.407946 z "
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2862);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2852" />
+ <path
+ d="M 27.4996,14.40575 L 27.4996,33.40575 L 33.4996,33.40575 L 33.4996,14.40575 L 27.4996,14.40575 z "
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2864);stroke-width:0.9999997;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ id="path2854" />
+ <path
+ d="M 28.019106,14.942758 L 28.019106,25.007768 L 33.013048,24.389049 L 33.013048,14.85437 L 28.019106,14.942758 z "
+ style="opacity:0.5;color:#000000;fill:#f7f7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+ id="path2856" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/data/lintian/debian/aptdaemon.profile b/data/lintian/debian/aptdaemon.profile
new file mode 100644
index 0000000..16d20de
--- /dev/null
+++ b/data/lintian/debian/aptdaemon.profile
@@ -0,0 +1,7 @@
+# The default profile installing local software packages used by aptdaemon
+Profile: debian/aptdaemon
+Extends: debian/ftp-master-auto-reject
+Disable-Tags:
+ dir-or-file-in-opt,
+ missing-dependency-on-libc,
+ statically-linked-binary
diff --git a/data/lintian/ubuntu/aptdaemon.profile b/data/lintian/ubuntu/aptdaemon.profile
new file mode 100644
index 0000000..5b1b098
--- /dev/null
+++ b/data/lintian/ubuntu/aptdaemon.profile
@@ -0,0 +1,42 @@
+# The default profile installing local software packages used by aptdaemon
+Profile: ubuntu/aptdaemon
+Extends: debian/aptdaemon
+Disable-Tags:
+ FSSTND-dir-in-usr,
+ FSSTND-dir-in-var,
+ arch-dependent-file-in-usr-share,
+ binary-or-shlib-defines-rpath,
+ control-interpreter-in-usr-local,
+ copyright-contains-dh_make-todo-boilerplate,
+ copyright-file-compressed,
+ copyright-file-is-symlink,
+ copyright-refers-to-incorrect-directory,
+ copyright-refers-to-old-directory,
+ debian-rules-missing-required-target,
+ debian-rules-not-a-makefile,
+ description-is-dh_make-template,
+ description-synopsis-is-empty,
+ dir-or-file-in-srv,
+ dir-or-file-in-var-www,
+ embedded-library,
+ extended-description-is-empty,
+ file-in-etc-not-marked-as-conffile,
+ file-in-usr-marked-as-conffile,
+ install-info-used-in-maintainer-script,
+ library-in-debug-or-profile-should-not-be-stripped,
+ magic-arch-in-arch-list,
+ missing-build-dependency,
+ mknod-in-maintainer-script,
+ no-architecture-field,
+ no-copyright-file,
+ no-maintainer-field,
+ no-shlibs-control-file,
+ package-installs-python-bytecode,
+ section-is-dh_make-template,
+ statically-linked-binary,
+ udeb-uses-unsupported-compression-for-data-tarball,
+ uploader-address-is-on-localhost,
+ uploader-address-malformed,
+ uploader-name-missing,
+ usr-share-doc-symlink-to-foreign-package,
+ usr-share-doc-symlink-without-dependency,
diff --git a/data/org.debian.apt.conf b/data/org.debian.apt.conf
new file mode 100644
index 0000000..68237e4
--- /dev/null
+++ b/data/org.debian.apt.conf
@@ -0,0 +1,17 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <policy user="root">
+ <allow own="org.debian.apt"/>
+ </policy>
+
+ <policy context="default">
+ <allow send_interface="org.debian.apt"/>
+ <allow send_interface="org.debian.apt.transaction"/>
+ <allow send_destination="org.debian.apt"/>
+ </policy>
+
+</busconfig>
+
diff --git a/data/org.debian.apt.policy.in b/data/org.debian.apt.policy.in
new file mode 100644
index 0000000..d406956
--- /dev/null
+++ b/data/org.debian.apt.policy.in
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
+<policyconfig>
+
+ <vendor>Apt Daemon</vendor>
+ <vendor_url>http://launchpad.net/aptdaemon/</vendor_url>
+ <icon_name>package-x-generic</icon_name>
+
+ <action id="org.debian.apt.get-trusted-vendor-keys">
+ <_description>
+ List keys of trusted vendors
+ </_description>
+ <_message>
+ To view the list of trusted keys, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.clean">
+ <_description>
+ Remove downloaded package files
+ </_description>
+ <_message>
+ To clean downloaded package files, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>yes</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.change-config">
+ <_description>
+ Change software configuration
+ </_description>
+ <_message>
+ To change software settings, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.change-repository">
+ <_description>
+ Change software repository
+ </_description>
+ <_message>
+ To change software repository settings, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.install-file">
+ <_description>
+ Install package file
+ </_description>
+ <_message>
+ To install this package, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.update-cache">
+ <_description>
+ Update package information
+ </_description>
+ <_message>
+ To update the software catalog, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>yes</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.install-or-remove-packages">
+ <_description>
+ Install or remove packages
+ </_description>
+ <_message>
+ To install or remove software, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.install-packages.high-trust-repo">
+ <!-- This priviledge will be requested when installing a package
+ from a high trusted repository that can be explicitely whitelisted.
+
+ The defaults for this action are the same as
+ "org.debian.apt.install-or-remove-packages".
+
+ The admin can override them to e.g. allow passwordless installs for
+ leightweight applications like unity-webapps or for packages
+ comming from high trust repositories (like internal repositories)
+ -->
+ <_description>
+ Install software from a high-trust whitelisted repository.
+ </_description>
+ <_message>
+ To install software, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.install-packages-from-new-repo">
+ <!-- This privilege allows to call AddRepository, UpdateCache(Partially)
+ and InstallPackages in a row and only authenticating once.
+
+ The client has to authenticate for this privilege before calling
+ the aptdaemon methods. -->
+ <_description>
+ Add a new repository and install packages from it
+ </_description>
+ <_message>
+ To install software from a new source, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.install-purchased-packages">
+ <!-- This privilege allows to call AddRepository, UpdateCache(Partially)
+ and InstallPackages in a row and only authenticating once.
+
+ The client has to authenticate for this privilege before calling
+ the aptdaemon methods.
+
+ The only difference to install-packages-from-new-repo is the wording
+ of the message. It is required by Ubuntu's Software-Center. -->
+ <_description>
+ Add a new repository of purchased software and install packages from it
+ </_description>
+ <_message>
+ To install purchased software, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.upgrade-packages">
+ <_description>
+ Upgrade packages
+ </_description>
+ <_message>To install updated software, you need to authenticate.</_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin_keep</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.cancel-foreign">
+ <_description>
+ Cancel the task of another user
+ </_description>
+ <_message>
+ To cancel someone else's software changes, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.debian.apt.set-proxy">
+ <_description>
+ Set a proxy for software downloads
+ </_description>
+ <_message>
+ To use a proxy server for downloading software, you need to authenticate.
+ </_message>
+ <defaults>
+ <allow_any>auth_admin</allow_any>
+ <allow_inactive>auth_admin</allow_inactive>
+ <allow_active>auth_admin</allow_active>
+ </defaults>
+ </action>
+
+</policyconfig>
diff --git a/data/org.debian.apt.service b/data/org.debian.apt.service
new file mode 100644
index 0000000..4466ae5
--- /dev/null
+++ b/data/org.debian.apt.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=org.debian.apt
+Exec=/usr/sbin/aptd
+User=root
+
diff --git a/data/org.freedesktop.PackageKit-aptd.conf b/data/org.freedesktop.PackageKit-aptd.conf
new file mode 100644
index 0000000..03b371a
--- /dev/null
+++ b/data/org.freedesktop.PackageKit-aptd.conf
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- This configuration file specifies the required security policies
+ for the PackageKit to work. -->
+
+ <!-- Only user root can own the PackageKit service -->
+ <policy user="root">
+ <allow own="org.freedesktop.PackageKit"/>
+ </policy>
+
+ <!-- Allow anyone to call into the service - we'll reject callers using PolicyKit -->
+ <policy context="default">
+ <allow send_destination="org.freedesktop.PackageKit"
+ send_interface="org.freedesktop.PackageKit"/>
+ <allow send_destination="org.freedesktop.PackageKit"
+ send_interface="org.freedesktop.PackageKit.Transaction"/>
+ <allow send_destination="org.freedesktop.PackageKit"
+ send_interface="org.freedesktop.DBus.Properties"/>
+ <allow send_destination="org.freedesktop.PackageKit"
+ send_interface="org.freedesktop.DBus.Introspectable"/>
+ </policy>
+
+</busconfig>
+
diff --git a/data/org.freedesktop.PackageKit.service b/data/org.freedesktop.PackageKit.service
new file mode 100644
index 0000000..d732ade
--- /dev/null
+++ b/data/org.freedesktop.PackageKit.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=org.freedesktop.PackageKit
+Exec=/usr/sbin/aptd
+User=root
+
diff --git a/debian/aptdaemon-data.install b/debian/aptdaemon-data.install
new file mode 100644
index 0000000..322c917
--- /dev/null
+++ b/debian/aptdaemon-data.install
@@ -0,0 +1 @@
+usr/share/icons/hicolor/*/*/aptdaemon*.png
diff --git a/debian/aptdaemon.install b/debian/aptdaemon.install
new file mode 100644
index 0000000..238c43a
--- /dev/null
+++ b/debian/aptdaemon.install
@@ -0,0 +1,9 @@
+etc/apt/apt.conf.d/20dbus
+etc/dbus-1/system.d/org.debian.apt.conf
+../../build/scripts-3.*/aptd /usr/sbin
+../../build/scripts-3.*/aptdcon /usr/bin
+usr/share/dbus-1/system-services/org.debian.apt.service
+usr/share/polkit-1/actions/org.debian.apt.policy
+usr/share/locale
+usr/share/man
+usr/share/apport/package-hooks/aptdaemon.py
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..64f74cf
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,2127 @@
+aptdaemon (1.1.1+bzr982-0ubuntu39mint1) vera; urgency=medium
+
+ * Fix tiny scrolledwindows
+ * Specify version in gi import
+ * Allow removal of essential/required orphans
+
+ -- Clement Lefebvre <root@linuxmint.com> Sat, 03 Dec 2022 13:47:18 +0000
+
+aptdaemon (1.1.1+bzr982-0ubuntu39) jammy; urgency=medium
+
+ * No-change rebuild with Python 3.10 only.
+
+ -- Matthias Klose <doko@ubuntu.com> Thu, 17 Mar 2022 15:06:12 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu38) jammy; urgency=medium
+
+ * debian/patches/gdk-gtk-versions.py: Specify the versions of Gtk and Gtk
+ which are required. (LP: #1939324)
+
+ -- Brian Murray <brian@ubuntu.com> Wed, 19 Jan 2022 11:48:25 -0800
+
+aptdaemon (1.1.1+bzr982-0ubuntu37) jammy; urgency=medium
+
+ * fix-some-deprecated-code.patch (LP: #1951985)
+
+ -- Gunnar Hjalmarsson <gunnarhj@ubuntu.com> Tue, 23 Nov 2021 18:05:11 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu36) hirsute; urgency=medium
+
+ * SECURITY UPDATE: info disclosure via transaction properties
+ (LP: #1899513)
+ - debian/patches/CVE-2020-16128.patch: drop privileges when doing file
+ checks in aptdaemon/core.py, aptdaemon/worker/aptworker.py,
+ aptdaemon/utils.py.
+ - CVE-2020-16128
+ * SECURITY UPDATE: policykit checks are too late (LP: #1899193)
+ - debian/patches/CVE-2020-27349.patch: check PolicyKit before
+ simulating local install in aptdaemon/core.py.
+ - CVE-2020-27349
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Fri, 11 Dec 2020 09:49:56 -0500
+
+aptdaemon (1.1.1+bzr982-0ubuntu35) hirsute; urgency=medium
+
+ * test-with-timeout.patch: Do not pass --disable-timeout to aptd when
+ running tests, so we don't get tests stuck for hours.
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Thu, 12 Nov 2020 11:17:21 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu34) groovy; urgency=medium
+
+ * SECURITY UPDATE: information disclosure via locale (LP: #1888235)
+ - debian/patches/CVE-2020-15703.patch: reject locales with full paths
+ in aptdaemon/core.py.
+ - CVE-2020-15703
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Thu, 24 Sep 2020 10:49:44 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu33) groovy; urgency=medium
+
+ * Update crash handler to use the changed apport function. (LP: #1700810)
+
+ -- Brian Murray <brian@ubuntu.com> Mon, 11 May 2020 15:10:33 -0700
+
+aptdaemon (1.1.1+bzr982-0ubuntu32) focal; urgency=medium
+
+ * Build-Depend on dh-python (LP: #1870049)
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Wed, 01 Apr 2020 16:28:36 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu31) focal; urgency=medium
+
+ * Fix compatibility with python-apt security update (LP: #1858973)
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Thu, 23 Jan 2020 11:22:34 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu30) focal; urgency=medium
+
+ * Port to debhelper 12
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Mon, 13 Jan 2020 16:25:52 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu29) focal; urgency=medium
+
+ * Remove unused python- build-dependencies (LP: #1859477)
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Mon, 13 Jan 2020 16:00:17 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu28) eoan; urgency=medium
+
+ * d/patches/remove-lintian-scanning-of-local-packages.patch:
+ Remove lintian scanning of local packages. lintian has changed in Debian
+ in ways that break this feature and removing it seems like a better use of
+ time than fixing it.
+ <infinity> Removing that code with extreme prejudice sounds solid.
+
+ -- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Thu, 01 Aug 2019 12:25:29 +1200
+
+aptdaemon (1.1.1+bzr982-0ubuntu27) eoan; urgency=medium
+
+ * Completely fix the dependency solving to work as any normal apt
+ frontend does, avoiding auto-fixing, and solving dependencies of the
+ version we are actually installing.
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Wed, 26 Jun 2019 11:39:20 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu26) eoan; urgency=medium
+
+ * Remove call to install_protect(), gone in APT 1.9
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Mon, 24 Jun 2019 17:50:40 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu25) eoan; urgency=medium
+
+ * Say "The lock is held by %s" instead of "hold by" when lock fails
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Fri, 21 Jun 2019 23:04:50 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu24) eoan; urgency=medium
+
+ * Fixup: Ignore failure to delete non-existing DPKG_FRONTEND_LOCKED
+ variable when releasing locks.
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Fri, 07 Jun 2019 13:36:48 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu23) eoan; urgency=medium
+
+ * Various locking fixes (LP: #1831981)
+ - Implement frontend locking
+ - Adjust locking order to match APT
+ - Use reverse order for unlocking
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Fri, 07 Jun 2019 12:04:55 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu22) eoan; urgency=medium
+
+ * Use PackageKit's socket-activated debconf helper (LP: #1726068)
+ * Fix failing tests and disable ones we do not care about anymore (PK/PEP8)
+ * Make failing tests fail the build again
+ * Drop python2 support
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Fri, 24 May 2019 12:16:27 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu21) disco; urgency=medium
+
+ * Use 'return' instead of 'raise StopIteration', in order to adjust for
+ PEP 479 which turns 'raise StopIteration' into a 'RuntimeError'
+ (LP: #1811694)
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Wed, 27 Mar 2019 15:49:09 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu20) cosmic; urgency=medium
+
+ * d/patches/python3.7-compat.patch: do not use 'async' as a variable
+ name as that is now a keyword in Python 3.7.
+
+ -- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Thu, 02 Aug 2018 09:46:26 +1200
+
+aptdaemon (1.1.1+bzr982-0ubuntu19) bionic; urgency=medium
+
+ * d/p/lp1690541-details-open-twice.patch: Indicate that the AptTerminal
+ widget would like extra space so we can see more terminal output.
+ (LP: #1690541)
+
+ -- Brian Murray <brian@ubuntu.com> Tue, 27 Feb 2018 16:21:11 -0800
+
+aptdaemon (1.1.1+bzr982-0ubuntu18) bionic; urgency=medium
+
+ * d/p/lp1689668-config-file-window.patch: Ensure that the dialog to resolve
+ config conflicts is large enough to provide useful information.
+ (LP: #1689668)
+
+ -- Brian Murray <brian@ubuntu.com> Tue, 27 Feb 2018 08:43:10 -0800
+
+aptdaemon (1.1.1+bzr982-0ubuntu17) zesty; urgency=medium
+
+ * d/patches/lp1623856-window-height.patch: Set the scrolled
+ window minimum height so that the text is more readable. (LP: #1623856)
+ * d/tests/control: Update a dependency.
+
+ -- Barry Warsaw <barry@ubuntu.com> Mon, 23 Jan 2017 18:00:53 -0500
+
+aptdaemon (1.1.1+bzr982-0ubuntu16) yakkety; urgency=medium
+
+ * debian/control:
+ - Have python(3)-aptdaemon depend on aptdaemon (LP: #1605868)
+
+ -- Jeremy Bicha <jbicha@ubuntu.com> Wed, 17 Aug 2016 12:54:52 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu15) yakkety; urgency=medium
+
+ * debian/patches/drop_pkcompat.patch: don't call on pkcompat's PackageKit
+ implementation. Instead, expect PackageKit to be DBus-activated so we can
+ work correctly with PackageKit 1.1.1. (LP: #1496292)
+ * debian/patches/pk1.1.1-compat.patch: remove API that is no longer there
+ in PackageKit 1.1.1: GET_DEPENDS and GET_REQUIRES.
+ * debian/control:
+ - drop python3-aptdaemon.pkcompat binary package.
+ - aptdaemon Breaks/Replaces python3-aptdaemon.pkcompat for transition.
+ - Depends on gir1.2-packagekitglib-1.0 (>= 1.1.1) now, to enforce using
+ PackageKit 1.1; which drops GET_DEPENDS and GET_REQUIRES.
+
+ -- Mathieu Trudel-Lapierre <cyphermox@ubuntu.com> Mon, 06 Jun 2016 20:22:54 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu14) wily; urgency=medium
+
+ * debian/patches/lp1439769-aptdaemon-autoinstall.patch: Display the flag
+ name in the error message, not the package name.
+
+ -- Brian Murray <brian@ubuntu.com> Mon, 12 Oct 2015 09:02:44 -0700
+
+aptdaemon (1.1.1+bzr982-0ubuntu13) wily; urgency=medium
+
+ * Drop Vcs-Bzr from debian/control:
+ - The branch pointed to is "ubuntu-vivid". This is obviously incorrect
+ for wily; and you shouldn't have to do a busywork update of Vcs-Bzr
+ with each release.
+ - Uploaders do not have commit rights on the listed branch. A Vcs-Bzr
+ field should only point to a branch that uploaders have rights to,
+ otherwise it can never be authoritative.
+ * debian/patches/lp1439769-aptdaemon-autoinstall.patch: Take a flag to
+ indicate whether a requested package is auto-installed. Thanks to
+ Michael Vogt <mvo@ubuntu.com>. Closes LP: #1439769.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Tue, 06 Oct 2015 11:33:41 -0700
+
+aptdaemon (1.1.1+bzr982-0ubuntu12) wily; urgency=medium
+
+ * debian/patches/fix-observed-linitian-error.diff: drop Ubuntu patch that
+ was added this cycle, it's not needed with the recent lintian change
+
+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 01 Oct 2015 12:22:11 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu11) wily; urgency=medium
+
+ * debian/patches/lintian_deprecated_error.patch:
+ - don't list the binary-file-compressed-with-upx lintian error, it was
+ removed from Debian/Ubuntu and is leading software-center to display
+ warnings about skype or chrome debs (lp: #1490169)
+
+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 30 Sep 2015 16:46:03 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu10) wily; urgency=medium
+
+ * debian/control: let python(3)-aptdaemon Depends on
+ gir1.2-packagekitglib-1.0 (<< 0.9) (restrict the version because
+ 0.9 is incompatible, also that version was uploaded to
+ wily-proposed and deleted but some users got it installed, that
+ way apt knows there is a conflict to resolve) (lp: #1496292)
+ * debian/patches/key_value_typo.patch:
+ - remove trailing "," causing a TypeError, thanks Justin McPherson
+
+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 29 Sep 2015 16:40:25 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu9) wily; urgency=medium
+
+ * Fix package installation by not considering the "data" which is bogus to
+ pass to apt. (LP: #1352654)
+ * Fix undefined NATIVE_ARCH by getting it from the worker.
+
+ -- Iain Lane <iain@orangesquash.org.uk> Mon, 28 Sep 2015 18:10:56 +0100
+
+aptdaemon (1.1.1+bzr982-0ubuntu8) wily; urgency=medium
+
+ * debian/patches/lp1487087.diff: Always avoid the bogus mock
+ .assert_called() call.
+
+ -- Barry Warsaw <barry@ubuntu.com> Thu, 20 Aug 2015 15:33:06 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu7) wily; urgency=medium
+
+ * debian/patches/lp1487087.diff: Added to skip a bogus .assert_called()
+ call on a mock which no longer exists, but only under Python 3.5.
+
+ -- Barry Warsaw <barry@ubuntu.com> Thu, 20 Aug 2015 10:17:28 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu6) wily; urgency=medium
+
+ * debian/patches/pep8-accommodations.diff: Added to make the PEP 8 test
+ not fail autopkgtests due to pep8 tool bogosity.
+ * debian/patches/fix-observed-linitian-error.diff: Adjust the test to
+ check for the lintian error actually observed.
+
+ -- Barry Warsaw <barry@ubuntu.com> Wed, 19 Aug 2015 11:40:43 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu5) wily; urgency=medium
+
+ * No-change rebuild for python3.5 transition
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 22 Jul 2015 04:09:09 +0000
+
+aptdaemon (1.1.1+bzr982-0ubuntu4) wily; urgency=low
+
+ [ Michael Vogt ]
+ * SECURITY UPDATE: information disclosure via simulate dbus method
+ (LP: #1449587)
+ - debian/patches/lp1449587.diff: drop privileges when running lintian,
+ update tests.
+ - CVE-2015-1323
+
+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Tue, 16 Jun 2015 13:38:47 -0400
+
+aptdaemon (1.1.1+bzr982-0ubuntu3) vivid; urgency=low
+
+ * debian/patches/lp1356823.diff:
+ - try harder to fix crash #1356823
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 16 Apr 2015 10:05:07 -0500
+
+aptdaemon (1.1.1+bzr982-0ubuntu2) vivid; urgency=low
+
+ * debian/patches/lp1356823.diff:
+ - fix crash #1356823
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Apr 2015 10:01:10 +0200
+
+aptdaemon (1.1.1+bzr982-0ubuntu1) vivid; urgency=low
+
+ * fix crash in _on_progress_details() (LP: #1436725)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 07 Apr 2015 11:34:02 +0200
+
+aptdaemon (1.1.1+bzr981-0ubuntu2) vivid; urgency=medium
+
+ * autopkgtest: Don't let root reports in /var/crash fail the test.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 01 Dec 2014 08:01:17 +0100
+
+aptdaemon (1.1.1+bzr981-0ubuntu1) vivid; urgency=medium
+
+ * New bzr snapshot:
+ + Port to VTE 2.91
+ * Update Vcs-* to point to vivid branch
+ * Standards-Version → 3.9.6, no changes required
+
+ -- Iain Lane <iain@orangesquash.org.uk> Tue, 11 Nov 2014 16:05:26 +0000
+
+aptdaemon (1.1.1+bzr980-0ubuntu1) utopic; urgency=medium
+
+ * New bzr snapshot:
+ - Drop obsolete gobject compatibility and gtkwidgets
+ - Drop obsolete dbus.glib imports
+ - Do not crash when "#" are in comments
+ * Drop fix-configparser.patch, applied upstream.
+ * Refresh other patches.
+ * Drop python-aptdaemon.gtkwidgets and python-aptdaemon-gtk binaries. These
+ have been obsolete for a long time, unmaintained/untested, and there are
+ no reverse dependencies any more.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 21 Aug 2014 15:47:42 +0200
+
+aptdaemon (1.1.1+bzr973-1ubuntu4) utopic; urgency=medium
+
+ * debian/python3-aptdaemon.pkcompat.install:
+ - install pkutils.py, which is required by pkcompat.py.
+
+ -- Alberto Milone <alberto.milone@canonical.com> Wed, 30 Jul 2014 15:47:24 +0200
+
+aptdaemon (1.1.1+bzr973-1ubuntu3) utopic; urgency=medium
+
+ * New bzr snapshot to fix PEP-8 errors.
+ * Update Vcs-* for utopic branch.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 26 Jun 2014 09:26:20 +0200
+
+aptdaemon (1.1.1+bzr970-1ubuntu2) utopic; urgency=low
+
+ * debian/patches/lp1153725-temporary-workaround.patch:
+ - dropped, tests work fine (LP: #1153725)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 12 Jun 2014 10:36:33 +0200
+
+aptdaemon (1.1.1+bzr970-1ubuntu1) utopic; urgency=low
+
+ * New bzr snapshot
+ - lp:~brian-murray/aptdaemon/package-version-in-crash
+ + include package version in crash reports
+ * patches already upstream:
+ + upstream_lintian_2.5.18.patch
+ + upstream_lp1024590.patch
+ + lp1266844.patch
+ + fix-ftbs.patch
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 06 Jun 2014 11:27:25 +0200
+
+aptdaemon (1.1.1-1ubuntu5) trusty; urgency=low
+
+ * debian/python3-aptdaemon.test.install:
+ - install all test deb files
+ * debian/patches/dbus_timeout.patch:
+ - fix pep8 issue
+ * debian/patches/fix-configparser.patch:
+ - do not crash when "#" are in comments
+ * debian/patches/py3_inheritable.patch:
+ - set status-fds inheritable to fix InstallFiles()
+ * debian/tests/control:
+ - add missing fakeroot dependency
+ - add missing lintian dependency
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 11 Apr 2014 14:48:52 +0200
+
+aptdaemon (1.1.1-1ubuntu4) trusty; urgency=low
+
+ * debian/patches/dbus_timeout.patch
+ - increase dbus timeouts to avoid a dbus timeout error if a
+ policykit authentication dialog is not answered for a while
+ * debian/patches/lp1266844.patch:
+ - workaround for LP: #1266844, thanks to Brian Murray
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 10 Apr 2014 16:28:03 +0200
+
+aptdaemon (1.1.1-1ubuntu3) trusty; urgency=medium
+
+ * Rewrite the python shebang path to /usr/bin/python3.
+
+ -- Matthias Klose <doko@ubuntu.com> Thu, 20 Feb 2014 17:39:44 +0100
+
+aptdaemon (1.1.1-1ubuntu2) trusty; urgency=low
+
+ * Backport fix for LP: #1024590 from trunk r963
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 05 Dec 2013 14:39:32 +0100
+
+aptdaemon (1.1.1-1ubuntu1) trusty; urgency=low
+
+ * Merge with Debian unstable. Remaining Ubuntu changes:
+ - Build-depend on dh-translations and use it in debian/rules.
+ - Add upstream_lintian_2.5.18.patch: Recently updated lintian 2.5.18
+ dropped $LINTIAN_ROOT, adjust tests accordingly (cherrypicked from
+ upstream trunk). Fixes autopkgtest.
+ - fix_ftbs.patch: Fix FTBFS (LP: #1226100) with latest pep8 version.
+ * Move Vcs-Bzr to trusty branch.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 24 Oct 2013 07:01:30 +0200
+
+aptdaemon (1.1.1-1) unstable; urgency=low
+
+ [ Sebastian Heinlein ]
+ * New upstream release:
+ - Updated and improved PackageKit 0.8 D-Bus interface support
+ - Configuration file conflicts now default to replace
+ - Colored console output
+ - Minor bug fixes
+ *debian/control:
+ - Require the latest PackageKit-Glib version
+ - Add breaks for the obsoleted PackageKit client libraries of the 0.7.x
+ series
+ * debian/patches:
+ - apt-dbus-text-api.patch: merged upstream
+ - debconf-flush.patch: merged upstream
+ - fix-gobject-io-add-watch.patch: merged upstream
+ - fix-lp898851.patch: merged upstream
+ - lp1058038.patch: merged upstream
+ - upstream-dropped-lintian-check.patch: merged upstream
+ - upstream-pep8-fixes.patch: merged upstream
+ - fix-high-trust-pkcompat.diff: updated
+
+ [ Julian Andres Klode ]
+ * Re-enable test suite again
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 15 Aug 2013 13:09:38 +0200
+
+aptdaemon (1.0-1) unstable; urgency=low
+
+ * Merge with Ubuntu saucy.
+ - Fixes incorrect GObjectMeta usage (Closes: #707768)
+ * Build-Depend on xauth (xvfb tests don't seem to work otherwise)
+ * Disable tests for now, the test infrastructure seems broken; but
+ upstream does not react to the bug report, and I don't want to
+ wait any longer because #707768 really needs to be closed.
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 14 Jul 2013 18:11:59 +0200
+
+aptdaemon (1.0-0ubuntu10) saucy; urgency=low
+
+ * Update Vcs-* to saucy branch.
+ * Add upstream-dropped-lintian-check.patch: Drop
+ missing-pre-dependency-on-multiarch-support, it was dropped from saucy
+ lintian.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 06 Jun 2013 08:54:17 +0200
+
+aptdaemon (1.0-0ubuntu9) raring; urgency=low
+
+ * Flush debconf-communicate stdin after writing to it
+ (LP: #1163142, #1163163).
+
+ -- Colin Watson <cjwatson@ubuntu.com> Tue, 02 Apr 2013 14:07:01 +0100
+
+aptdaemon (1.0-0ubuntu8) raring; urgency=low
+
+ *debian/patches/fix-lp898851.patch: Workaround a random crash during
+ progress dialog. Thanks to Sebastian Heinlein for the patch. (LP: #898851)
+
+ -- Brian Murray <brian@ubuntu.com> Fri, 22 Mar 2013 15:09:13 -0700
+
+aptdaemon (1.0-0ubuntu7) raring; urgency=low
+
+ * debian/rules: Drop the hackery again to salvage the "whitelist directory"
+ test case, and instead exclude it in lp1153725-temporary-workaround.patch
+ as well. This fixes the failing autopkgtest.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Mar 2013 14:27:32 +0100
+
+aptdaemon (1.0-0ubuntu6) raring; urgency=low
+
+ [ Martin Pitt ]
+ * Add gir1.2-vte-2.90 build and test dependency.
+ * debian/rules: Wait for previous xvfb to finish before starting the next
+ one.
+
+ [ Barry Warsaw ]
+ * debian/control:
+ - Add Build-Depend on xvfb.
+ - Bump Standards-Version to 3.9.4.
+ * debian/rules: Run the tests under xvfb-run to avoid core dumps.
+ * debian/patches/lp1153725-temporary-workaround.patch: Temporarily
+ disable test which fails during the build.
+ * debian/rules: Add the missing test directory and symlinks before running
+ tests, as a workaround to LP #1153725. Clean up symlink directory in
+ override_dh_auto_clean.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Mar 2013 13:14:20 +0100
+
+aptdaemon (1.0-0ubuntu5) raring; urgency=low
+
+ * Add pep8 build dependency as well, as tests are called during package
+ build.
+ * disable-broken-test.patch: Disable harder, as a mere rename doesn't work
+ with test auto-discovery.
+ * Add gir1.2-gtk-3.0 build and test dependencies so that gtk3widgets can
+ import Gdk.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Mar 2013 12:17:19 +0100
+
+aptdaemon (1.0-0ubuntu4) raring; urgency=low
+
+ * Add missing pep8 test dependency.
+ * Add upstream-pep8-fixes.patch: Fix some PEP-8 issues, caught by test
+ suite.
+ * Add disable-broken-test.patch: Disable
+ test/data/high-trust-repository-whitelist.d/ test, as this directory and
+ its contents are not actually shipped in the released tarball. Fixes
+ autopkgtest failure.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Mar 2013 11:16:11 +0100
+
+aptdaemon (1.0-0ubuntu3) raring; urgency=low
+
+ * Make the DEP-8 tests depend on xvfb.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Fri, 15 Mar 2013 13:12:30 +0000
+
+aptdaemon (1.0-0ubuntu2) raring; urgency=low
+
+ * Run DEP-8 tests under xvfb-run, to match tests run during the build.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Fri, 15 Mar 2013 11:34:25 +0000
+
+aptdaemon (1.0-0ubuntu1) raring; urgency=low
+
+ * New stable bug fix release 1.0:
+ - Add PEP8 compliance and a corresponding test
+ - Fix PackageKit tests if an http proxy is set (LP: #1050799)
+ - Fix crash for Python GTK2 clients (LP: #1108552)
+ - Fix crash if configuration file changes are only one line long -
+ thanks to Barry Warsaw and Robert Collins (LP: #1120322)
+ - Fix crash if the removal of a package valid candidate is simulated
+ - Allow repository release names to include dots
+ - Convert aptdaemon exceptions to PackageKit ones in the compat
+ layer (currently only invalid input ant failed authorization are
+ supported)
+ - Store the default values in the PackageKit transaction interface
+ statically typed
+ - Fix setting the speed property in the PackageKit interface
+ - Several grammar and typo fixes in user interface messages and
+ documentation (LP: #1112492)
+ * debian/patches:
+ - fix-high-trust-pkcompat.diff: updated
+ - apt-dbus-text-api.patch: updated
+ - fix-gobject-io-add-watch.patch: Added. Always include the priority
+ in a GLib.io_add_watch() call to not cause problems with the backwards
+ compatibility
+
+ -- Sebastian Heinlein <glatzor@ubuntu.com> Mon, 11 Mar 2013 07:02:07 +0100
+
+aptdaemon (0.45+bzr883-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot:
+ - Don't change the automatic installed state when upgrading package
+ (Thanks a lot to Daniel Hartwig, LP: #1078544)
+ - Add a regression test for LP: #750958
+ - Don't depend on dpkg-dev to select the correct lintian profile.
+ (Fixes LP: #1066457)
+ - If the user cannot be autohrized (either missing privileges
+ or a cancelled password dialog) the transaction will fail.
+ - Don't fail if we want to remove a a package without a
+ candidate during transaction simulation.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 17 Dec 2012 11:45:14 +0100
+
+aptdaemon (0.45+bzr877-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot:
+ - ignore lintian "file-in-etc-not-marked-as-conffile" (LP: #1060505)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 30 Nov 2012 08:28:18 +0100
+
+aptdaemon (0.45+bzr876-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot:
+ - fix signal handling with latest python-gi
+ - support /* */ comments in apt.conf{,.d}
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 28 Nov 2012 14:19:11 +0100
+
+aptdaemon (0.45+bzr874-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot:
+ - Fix ClientTest.test_tid_caching without a system D-BUS.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Nov 2012 12:42:15 +0100
+
+aptdaemon (0.45+bzr873-0ubuntu1) raring; urgency=low
+
+ * debian/control: Update Vcs-* for raring branch.
+ * New upstream snapshot:
+ - Open Apport crash report files in binary mode (LP #1054984)
+ - Fix unicode decode error in py2 clients (LP #846044)
+ - Fix tests for stricter GPG key requirements of current python3-apt
+ (LP #1016643)
+ - Reorganize transaction ID caching to avoid using pygobject internals and
+ work with pygobject 3.7.x
+ - Fix deprecated GObject API calls
+ * Drop patches applied upstream:
+ - binary-mode-report-writing.patch
+ - test-long-keyids.patch
+ - lp846044.patch
+ - test-debconf-priority.patch
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Nov 2012 12:22:02 +0100
+
+aptdaemon (0.45+bzr861-0ubuntu9.1) quantal-proposed; urgency=low
+
+ [ Sebastian Heinlein ]
+ * do not issue a "quality warning" if dpkg-vendor is missing
+ (LP: #1066457)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 16 Oct 2012 13:58:07 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu9) quantal; urgency=low
+
+ * Workaround that ensures that for sys.getfilesystemencoding()
+ "utf8" is used when the daemon is dbus auto-activatied (LP: #1058038)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 09 Oct 2012 14:27:36 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu8) quantal; urgency=low
+
+ * debian/patches/lp846044.patch:
+ - fix unicode decode error in py2 clients (LP: #846044)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 08 Oct 2012 15:57:29 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu7) quantal; urgency=low
+
+ * Following https://bugs.launchpad.net/bugs/1016643,
+ apt.auth.add_key_from_keyserver requires long (v4) keyids. Fix
+ tests.test_pk to account for that.
+ * Force debconf priority to high for test_debconf.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Sun, 07 Oct 2012 15:28:18 +0100
+
+aptdaemon (0.45+bzr861-0ubuntu6) quantal; urgency=low
+
+ * Ensure the transaction is simulated in the pkcompat layer to
+ ensure the high-trust repo support works from the packagekit
+ compatibilty layer. This is needed for the unity-webapps
+ passwordless install to work.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 04 Oct 2012 16:58:34 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu5) quantal; urgency=low
+
+ * debian/patches/binary-mode-report-writing.patch: open our crash
+ report for writing in binary mode. Closes LP: #1054984.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 26 Sep 2012 10:24:48 -0700
+
+aptdaemon (0.45+bzr861-0ubuntu4) quantal; urgency=low
+
+ * debian/patches/apt-dbus-text-api.patch:
+ - Convert Origin.label from python-apt API to python-dbus API, for
+ Python 2 compatibility (LP: #978654).
+
+ -- Colin Watson <cjwatson@ubuntu.com> Mon, 17 Sep 2012 15:12:38 +0100
+
+aptdaemon (0.45+bzr861-0ubuntu3) quantal; urgency=low
+
+ * debian/tests/control: Added missing dependencies required to run
+ autopkgtest. Thanks Jean-Baptiste Lallement!
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 13 Sep 2012 19:17:22 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu2) quantal; urgency=low
+
+ * Add autopkgtest integration. Thanks Jean-Baptiste Lallement!
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 13 Sep 2012 12:45:12 +0200
+
+aptdaemon (0.45+bzr861-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot:
+ - lp:~mvo/aptdaemon/support-for-whitelisted-repositories that adds
+ support for a new trusted-repo policykit action LP: #1035207
+ - lp:~vorlon/aptdaemon/lp.1034806 that fixes unicode/str errors
+ LP: #768691, #926340, #1034806
+ * debian/patches/fix_gettext_return_value_type.patch:
+ - dropped, merged as part of lp:~vorlon/aptdaemon/lp.1034806
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 13 Sep 2012 09:13:07 +0200
+
+aptdaemon (0.45+bzr857-0ubuntu1) quantal; urgency=low
+
+ * fix FTBFS in the tests when LANG/LANGUAGE is unset
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 12 Sep 2012 12:02:38 +0200
+
+aptdaemon (0.45+bzr856-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot:
+ - pkcompat: Fix get_files() LP: #1040619 (thanks to Martin Pitt)
+ - Fix crash when run inside non-ascii dirs LP: #1044900
+ - Fix crash in widget's diff view if a @@ line does not have a range
+ LP: #875879 (thanks to Brian Murray)
+ - Support credentials change when adding a repository that is already
+ in sources.list/auth.conf
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 07 Sep 2012 10:20:10 +0200
+
+aptdaemon (0.45+bzr852-0ubuntu2) quantal; urgency=low
+
+ * debian/patches/fix_gettext_return_value_type.patch: also return unicode
+ from aptdaemon.utils.IsoCodes.get_localised_name(). (LP: #1034806)
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Sat, 11 Aug 2012 01:39:05 +0000
+
+aptdaemon (0.45+bzr852-0ubuntu1) quantal; urgency=low
+
+ [ Martin Pitt ]
+ * debian/rules: Make test suite failures fatal again.
+
+ [ Michael Vogt ]
+ * New upstream snapshot:
+ - lp:~evfool/aptdaemon/lp1030988:
+ Change the error message for installation required from
+ unauthenticated sources (LP: #1030988)
+ - lp:~dobey/aptdaemon/fix-imports:
+ Check that the item in sys.modules is not None before trying to
+ import it
+ - fix "compatibilty" typo
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Aug 2012 16:16:03 +0200
+
+aptdaemon (0.45+bzr848-0ubuntu2) quantal; urgency=low
+
+ * debian/patches/fix_gettext_return_value_type.patch:
+ - Make sure to always return unicode from core.Transaction.gettext()
+ (LP: #926340). Based partially on a patch by Sebastian Heinlein.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Wed, 08 Aug 2012 16:19:51 +0100
+
+aptdaemon (0.45+bzr848-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot:
+ - aptdaemon/client.py: Prefer GI GObject module. (LP: #1026066)
+ - lintian supports skipping user profiles since 2.5.9, make use of this to
+ simplify code a bit.
+ * debian/rules: Temporarily make test suite non-fatal while
+ tests.test_worker.WorkerTestCase.test_install_file() is failing, as above
+ fix is urgent for alpha-3.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Jul 2012 10:09:31 +0200
+
+aptdaemon (0.45+bzr846-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot:
+ - Python3 porting from lp:~aptdaemon-developers/aptdaemon/py3k
+ - Fix package status enum description for an unknown status
+ which resulted in a type mismatch in the gettext call
+ (fixes LP: #900982)
+ - Still report available blocked updates if the dependency system
+ is broken (final partial fix to LP: #932581)
+ - client: Use INT64 in signals where required (Fixes LP: #981124)
+ - use lintian profiles instead of tags
+ * debian/aptdaemon.install:
+ - use the new lintian profiles instead of the tags
+ * debian/patches/series:
+ - drop patches, applied upstream
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 14 Jun 2012 12:27:44 +0200
+
+aptdaemon (0.45-3) unstable; urgency=low
+
+ * Drop the pkcompat package for now, to ease PackageKit 0.8 transition. Will
+ upload a new aptdaemon release after PK 0.8 migrated to testing.
+
+ -- Julian Andres Klode <jak@debian.org> Fri, 28 Jun 2013 23:32:36 +0200
+
+aptdaemon (0.45-2) unstable; urgency=medium
+
+ * Check downloaded key id; merged from Ubuntu (CVE-2012-0962)
+
+ -- Julian Andres Klode <jak@debian.org> Sat, 02 Mar 2013 18:57:17 +0100
+
+aptdaemon (0.45-1) unstable; urgency=low
+
+ * New upstream releases bringing a lot of bug fixes and improvements
+ * debian/control:
+ - Remove use of X(B|S)-Python-Version
+ - python-aptdaemon.pkcompat now provides packagekit-system-interface
+ which helps to avoid ugly or dependencies in PackageKit clients
+ - Don't use the shlibs depends since we don't have got any libraries
+ * debian/aptdaemon.install:
+ - Don't ship the aptdaemon.desktop file which was used in the apport
+ reports
+
+ -- Sebastian Heinlein (Devel) <devel@glatzor.de> Mon, 11 Jun 2012 11:07:08 +0200
+
+aptdaemon (0.43+bzr838-0ubuntu2) quantal; urgency=low
+
+ * python3-aptdaemon.test needs to Breaks/Replaces python-aptdaemon.test,
+ which it replaces.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 13 Jun 2012 13:08:20 -0700
+
+aptdaemon (0.43+bzr838-0ubuntu1) quantal; urgency=low
+
+ * Upload of the latest Python3 porting efforts from trunk
+ * debian/patches:
+ - Add disable_simulate_test: Fails on build bot for unknown reasons
+ * debian/control:
+ - Switch aptdaemon package to Python3 by default
+ - Add new python3-aptdaemon.gtk3widgets package
+ - Replace python-aptdaemon.test by python3-aptdaemon.test
+ - Replace python-aptdaemon.pkcompat by python3-aptdaemon.pkcompat
+ - python3-aptdaemon.pkcompat provides the new virtual package
+ packagekit-system-interface to obsolete the OR dependencies
+ with packagekit of PackageKit clients
+ - Remove policykit1 dependecy from the modules and add it to the server
+ package
+ - Remove not used shlibs macros
+ - Remove dependency to python-packagekit, since we ship the enums
+ in python3-aptdaemon.pkcompat
+ - Add build dependencies to run the test suite
+ * debian/rules:
+ - Build with Python2 and 3
+ - Enable the test suite
+ * debian/*.(install|docs|examples):
+ - Adpat to above package changes
+
+ [ Steve Langasek ]
+ * debian/control:
+ - Remove python-software-properties dependency in favor of new
+ python-apt with apt.auth module
+ - Add explicit depends, build-depends on iso-codes, which is needed but
+ is otherwise only a Recommend.
+ * aptdaemon/test.py: explicitly set the chroot directory in the apt config
+ as part of the test setup, without which apt-key's chroot handling won't
+ work.
+ * test/test_pk.py: increase the sleep on startup, to allow longer for
+ fake-polkitd to start up.
+ * aptdaemon/worker.py: restore compatibility with python2, which doesn't
+ have urllib.parse.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 13 Jun 2012 09:44:55 -0700
+
+aptdaemon (0.43+bzr810-0ubuntu3) quantal; urgency=low
+
+ * debian/python-aptdaemon.test.install: Fix installation path of
+ dpkg-wrapper.sh.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 May 2012 12:53:16 +0200
+
+aptdaemon (0.43+bzr810-0ubuntu2) quantal; urgency=low
+
+ * debian/control: Update Vcs-* for quantal branch.
+ * debian/python-aptdaemon.test.install: Install test dbus.conf.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 22 May 2012 11:01:33 +0200
+
+aptdaemon (0.43+bzr810-0ubuntu1) quantal; urgency=low
+
+ * new upstream snapshot
+ * debian/control:
+ - add lintian recommends to get automatic checking of deb
+ packages
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 11 May 2012 15:56:04 +0200
+
+aptdaemon (0.43+bzr805-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot:
+ - Fix: Catch a possible exception in apt.cache.Cache.required_download
+ which can occur if the user e.g. rebooted the system during a running
+ debconf question (fixes LP: #659438)
+ Furthermore raise ERROR_INCOMPLETE_INSTALL to signal the client
+ that a call of FixIncompleteInstall() (basically a dpkg --configure -a
+ call) fixes the issue
+ - Fix: Sync all properties of the D-Bus transaction in the client before
+ emitting the Finished signal (fixes LP: #747172) to ensure all changed
+ properties are available (the order of received signals is not
+ guranteed and the finished signal could be received before an error
+ signal)
+ Additionally raise the timeout before removing a transaction from
+ D-Bus on the server side to give clients more time to sync
+ - Fix wrong variable names in the download progress (fixes LP: #971839,
+ LP: #976521)
+ - Fix: Catch a possible pipe reading error (fixes LP: #733090)
+ - Fix: Don't show the name of aptdaemon in crash reports
+ (fixes LP: #973370)
+ Aptdaemon is a system daemon and should work and fail silently
+ - Fix: Fallback to a default terminal width of 80 chars (fixes LP: #948588)
+ The width request could fail on standard input/output redirections
+ - Fix: Don't use a reserved name for the simulate helper function
+ - Fix: Convert exceptions to string before raising TransactionFailed()
+ - Fix wrong variable name in the add license key failed error message
+ - Fix: Don't overwrite the GObject.GObject.disconnect in
+ aptdemon.client.Transaction by renaming the method to
+ _disconnect_from_dbus()
+ - Fix: Allow to cancel a transaction which hasn't been queued yet and
+ is still in limbo
+ - Fix: Raise NotImplementedError instead of ImplementedError
+ - Add a test case for config file changes handling
+ * debian/aptdaemon.install:
+ - Don't ship the obsolete .desktop file anymore
+
+ -- Sebastian Heinlein <glatzor@ubuntu.com> Mon, 09 Apr 2012 20:48:44 +0200
+
+aptdaemon (0.43+bzr790-1) unstable; urgency=high
+
+ * New upstream snapshot
+ * fixes CVE-2012-0944
+
+ -- Michael Vogt <mvo@debian.org> Mon, 02 Apr 2012 20:57:57 +0200
+
+aptdaemon (0.43+bzr790-0ubuntu1) precise; urgency=low
+
+ New upstream snapshot:
+ * merged patch for LP: #959131 (CVE 2012-0944)
+ * pkcompat: Don't crash if the system time went backwards during a
+ transaction (Fixes LP: #940367)
+ * worker: catch SystemErrors from python-apt when performing a system
+ upgrade (fixes LP: #932581)
+ * pkcompat: Don't crash if an unsupported locale is used for the
+ transaction, fixes LP: #944553
+ * Fix download progress information for translations of languages with
+ an ISO 639 2T code (3 letters), e.g. Asturian (ast) - fixes LP: #966111
+ * test: Add a test to ensure that every transaction is simulated
+ before it gets queued.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 02 Apr 2012 19:04:16 +0200
+
+aptdaemon (0.43+bzr784-0ubuntu1) precise; urgency=low
+
+ New upstream snapshot:
+ * lock: Fix an exception if the lock file doesn't exists
+ (fixes LP: #954581)
+ * Decrease the priority of the daemon to avoid blocking the user
+ interface (fixes LP: #942437)
+ * Make the network detection code more robust (Fixes LP:#933597)
+ * Add missing file to POTFILES.in. (LP: #953938)
+ * more fixes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 14 Mar 2012 13:26:31 +0100
+
+aptdaemon (0.43+bzr778-0ubuntu1) precise; urgency=low
+
+ * fix crash in pkgcompat on restart_required
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 09 Mar 2012 09:26:06 +0100
+
+aptdaemon (0.43+bzr777-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot:
+ - store sources.list credentials in /etc/apt/auth.conf instead of
+ sources.list to avoid having to make sources.list file(s) mode
+ 0640
+ - pkcompat: Support the RequireRestart signal
+ - worker: Allow to install an alternative version (by number or by
+ origin) of an already installed package
+ - pkcompat: improve UpdatesChanged signal emission
+ - pkcompat: Completely adapt to the python-apt 0.8 API
+ - pkcompat: Don't throw an error if we try to cancel a native pk
+ transaction
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 09 Mar 2012 09:02:40 +0100
+
+aptdaemon (0.43+bzr769-1) unstable; urgency=low
+
+ * New upstream snapshot
+ - Works without pkcompat (Closes: #652644)
+ * Merge with Ubuntu; remaining changes:
+ - debian/control: Changes of Vcs, Maintainer stuff
+ - Do not use dh-translations
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 05 Mar 2012 16:03:14 +0100
+
+aptdaemon (0.43+bzr769-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot:
+ - Add plugin support to PackageKit compat layer.
+ - Port to gobject-introspection.
+ - Various bug fixes.
+ * debian/control: Update dependencies for GI.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 03 Feb 2012 06:37:42 +0100
+
+aptdaemon (0.43+bzr756-0ubuntu1) precise; urgency=low
+
+ [ Chris Coulson ]
+ * After simulating a transaction, correctly disconnect from the
+ "transaction-simulated" signal
+
+ [ Sebastian Heinlein ]
+ * Catch exceptions in apt.debfile.DebFile.check()
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 03 Jan 2012 13:30:22 +0100
+
+aptdaemon (0.43+bzr754-0ubuntu1) precise; urgency=low
+
+ [ Martin Pitt ]
+ * debian/control: debian/control: Move from transitional python-gobject to
+ python-gi for GTK3 package.
+
+ [ Michael Vogt ]
+ * New bzr snapshot
+
+ [ Robert Roth ]
+ * Fix license typo (LP: #903911)
+ * Change from up-to-date to up to date for consistency (LP: #864336)
+
+ [ Sebastian Heinlein ]
+ - Fix downgrade option of aptdcon
+ - Add support for cancelling the transaction in PK
+ - Fix changelog cache cleanup
+ - Typo fixes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 15 Dec 2011 10:15:46 +0100
+
+aptdaemon (0.43+bzr742-0ubuntu1) precise; urgency=low
+
+ * New bzr snapshot:
+ - Fix resizing the GTK3 progress dialog (LP: #840942)
+ - py3 exception compat fixes
+ - fixes in pkcompat code
+ - merged "pretty repo" branch with nicer progress information on
+ cache updates
+ - cache changelogs
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 01 Dec 2011 14:40:52 +0100
+
+aptdaemon (0.43+bzr715-0) UNRELEASED; urgency=low
+
+ * new bzr snapshot:
+ - Add a small README about the state of the PackageKit compatibilty
+ - Add support for the store_in_cache argument of PackageKit's
+ DownloadPackages
+ - Do an additional resolver run to ensure that autoremove does
+ not leave the cache inconsistent
+ * debian/patches:
+ - Remove 01_add_dpkg_untranslated_messages_env.patch (merged by upstream)
+ - Remove 03_additional_resolve_run.patch (merged upstream)
+ * debian/python-aptdaemon.pkcompat.docs: Ship README
+ * debian/README.Debian: Removed since obsolete
+
+ -- Sebastian Heinlein <devel@glatzor.de> Mon, 21 Nov 2011 12:04:11 +0100
+
+aptdaemon (0.43+bzr713-1) unstable; urgency=low
+
+ * Merge with Ubuntu, remaining differences:
+ - debian/control: Changes of Vcs, Maintainer stuff
+ - Do not use dh-translations
+ * New upstream snapshot (revision 713)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 21 Nov 2011 11:24:00 +0100
+
+aptdaemon (0.43+bzr712-0ubuntu1) precise; urgency=low
+
+ [ Michael Vogt ]
+ * Merged from the latest debian upload
+ (thanks Julian Andres Klode)
+
+ [ Sebastian Heinlein ]
+ * new bzr snapshot with:
+ - pkcompat branch
+ - async simulate
+ * add new python-aptdaemon.pkgcompat package that provides the
+ packagekit system API
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 21 Nov 2011 10:08:24 +0100
+
+aptdaemon (0.43+bzr707-1) unstable; urgency=low
+
+ [ Julian Andres Klode ]
+ * Merge with Ubuntu, remaining differences:
+ - debian/control: Vcs, Maintainer changes.
+ * Merge brings us:
+ - New version (Closes: #644613)
+ - Use of python2 instead of python-central (Closes: #616738)
+ * Do not use dh-translations
+
+ [ Sebastian Heinlein ]
+ * New bzr snapshot:
+ - Add the PackageKit compatibilty layer
+ * debian/control:
+ - Add new binary package python-aptdaemon.pkcompat
+ - Correct VCS location
+ * debian/python-aptdaemon:
+ - Ship the networking module
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 20 Nov 2011 14:49:48 +0100
+
+aptdaemon (0.43+bzr703-0ubuntu1) precise; urgency=low
+
+ * New bzr snapshot:
+ - Merge the AddLicenseKey method
+ - Replace the backported unittest2 framework by the native one of
+ Python 2.7 and Nose to collect the tests
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 18 Nov 2011 12:03:22 +0100
+
+aptdaemon (0.43+bzr701-0ubuntu1) precise; urgency=low
+
+ * new bzr snapshot:
+ - aptdaemon/progress.py: fix crash when a translation has the wrong
+ number of %s (LP: #858684)
+ - Map messages from apt on the status-fd to enums to provide better
+ terms and translations in the future - fixes LP#641262
+ - lp:~mpt/aptdaemon/bug-635138:
+ * Fixes bug 635138 (Apt cache repair 'In Progress' text is
+ 'Repairing broken deps').
+ * debian/patches/02_fix_crash_on_dpkg_disappear.patch:
+ - dropped, we are out of stringfreeze now
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Nov 2011 09:26:01 +0100
+
+aptdaemon (0.43+bzr697-0ubuntu1) oneiric; urgency=low
+
+ * debian/patches/03_additional_resolve_run.patch:
+ - do an additional resolver run to ensure that autoremove does
+ not leave the cache inconsistent (LP: #659111)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 28 Sep 2011 13:36:53 +0200
+
+aptdaemon (0.43+bzr697) oneiric; urgency=low
+
+ * New bzr bugfix version:
+ - Don't block on lintian calls to avoid time outs on the DBus
+ by making use of the excellent preexec_fn of subprocess
+ (LP: #812023)
+ - pyflakes based import fixes, this fixes a unneeded glib import
+ that can cause crashes with gtk2/gtk3 (pygtk/pygi)
+ - use the deprecated message attribute to avoid encoding errors
+ (LP: #846044)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 19 Sep 2011 14:01:15 +0200
+
+aptdaemon (0.43+bzr695) oneiric; urgency=low
+
+ * New bzr snapshot:
+ - Don't track valid DBusException sent to the client by apport
+ - Make TransactionProgressDialog.run() method deferable
+ - Unset the apt-listbugs frontend in non-interactive mode
+ - Workaround a bug in apt's ListUpdate which doesn't handle
+ cancellation properly
+ * debian/changelog: Fix a typo in the previous log entry
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 14 Sep 2011 15:48:01 +0200
+
+aptdaemon (0.43+bzr691) oneiric; urgency=low
+
+ * New bzr snapshot:
+ - Fix integer overflows in the ProgressDetails property (LP: #827677,
+ LP: #834104) by switching to dbus.Double and dbus.Int64
+ - Fix apport crash reports on dpkg failure (LP: #799982)
+
+ -- Sebastian Heinlein <devel@glatzor.de> Fri, 26 Aug 2011 15:22:19 +0200
+
+aptdaemon (0.43+bzr686) oneiric; urgency=low
+
+ * New bzr snapshot:
+ - Improve apport integration by adding a package hook and only sending
+ reports if running as a system service
+ - Fix default values for ProgressDetails signal
+ - Fixes to the test suite
+ - More debugging output to help resolve DBus type conversion/overflow
+ errors
+ * debian/aptdaemon.install:
+ - Ship apport package hook
+ - Ship desktop file to provide a nicer name in apport dialogs
+ * debian/control:
+ - Add missing dependency on python-pkg-resources to python-aptdaemon
+ (LP: #788121)
+
+ -- Sebastian Heinlein <devel@glatzor.de> Fri, 26 Aug 2011 08:13:42 +0200
+
+aptdaemon (0.43+bzr676-0ubuntu1) oneiric; urgency=low
+
+ * new bzr snapshot:
+ - Make the handling of exceptions in the forked child process
+ more robust
+ - Fix showing the header of the translation (.mo file)
+ if we try to translate an empty string
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 25 Aug 2011 10:30:13 +0200
+
+aptdaemon (0.43+bzr674-0ubuntu1) oneiric; urgency=low
+
+ * new bzr snapshot:
+ - add /var/log/apt/history.log integration
+ - switch bytes_{done,total} to 64bit to follow a change in apt
+ (LP: #825468)
+ - fix multiarch names (LP: #828898, LP: #828162)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 23 Aug 2011 11:29:50 +0200
+
+aptdaemon (0.43+bzr670-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot: Fix previous patch to only use GObject when actually
+ using GI.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 17 Aug 2011 13:58:17 +0200
+
+aptdaemon (0.43+bzr669-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot: Move from static gobject to GI GObject module, to be
+ compatible to upcoming pygobject 3.0.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 17 Aug 2011 08:11:43 +0200
+
+aptdaemon (0.43+bzr666-0ubuntu1) oneiric; urgency=low
+
+ * new bzr snapshot:
+ - fix LP: #818521
+ - prepare for py3
+ - fix crash in _parse_localename() (LP: #825056)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 12 Aug 2011 11:13:32 +0200
+
+aptdaemon (0.43+bzr663-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot add adds a RebootRequiered property
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 Jul 2011 16:44:12 +0200
+
+aptdaemon (0.43+bzr662-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot
+ * debian/patches/01_add_dpkg_untranslated_messages_env.patch:
+ - add DPKG_UNTRANSLATED_MESSAGES environment in the child
+ to force untranslated dpkg messages for easier bug duplication
+ detection
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 28 Jun 2011 10:01:10 +0100
+
+aptdaemon (0.43+bzr660-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot, this will improve the quality of the
+ apport pkgfailure reports
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Jun 2011 11:34:50 +0200
+
+aptdaemon (0.41+bzr658-0ubuntu2) oneiric; urgency=low
+
+ * debian/control: Drop GTK2 GIR dependencies, only use GTK 3 now.
+ * debian/control: Drop lintian recommends. It's too heavy for a default
+ install (pulling in dpkg-dev, build-essential, g++, lots of Perl, and
+ associated helper tools like diffstat). This will be replaced with
+ aptdaemon or software-center installing lintian when you add a third-party
+ repository. (UbuntuSpec:desktop-o-cdspace)
+ * debian/control: Fix "allows to" grammar error, thanks lintian.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 31 May 2011 10:54:29 +0200
+
+aptdaemon (0.41+bzr658-0ubuntu1) oneiric; urgency=low
+
+ * New bzr snapshot, this fixes (LP: #781874)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 16 May 2011 11:48:39 +0200
+
+aptdaemon (0.41+bzr657-0ubuntu1.1) natty-proposed; urgency=low
+
+ * patches/fix_lp_781874.patch:
+ - fix bug when canceling a transaction (LP: #781874)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 16 May 2011 11:39:08 +0200
+
+aptdaemon (0.41+bzr657-0ubuntu1) natty-proposed; urgency=low
+
+ * New bzr bugfix snapshot:
+ - fix FD leak (LP: #742935)
+ - fix interrupts in a forked child
+ - fix crash when dbus exceptions have unicode messages (LP: #761386)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 Apr 2011 17:55:29 +0200
+
+aptdaemon (0.41+bzr651-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - ensure dbus exceptions strings are utf8
+ - merge 01_fix_locking.patch upstream
+ - merge 03_do_not_close_invalid_fd.patch upstream
+ * debian/patches/02_fix_crash_on_dpkg_disappear.patch:
+ - refreshed
+
+ -- Michael Vogt <mvo@ubuntu.com> Tue, 19 Apr 2011 08:52:09 +0200
+
+aptdaemon (0.41+bzr646-0ubuntu2) natty; urgency=low
+
+ * debian/patches/01_fix_locking.patch:
+ - cherry pick from evfool, many thanks (LP: #764422)
+ * debian/patches/02_fix_crash_on_dpkg_disappear.patch:
+ - add (empty) mapping the apt progress message that is triggered
+ when a empty package disappears
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 18 Apr 2011 13:48:38 +0200
+
+aptdaemon (0.41+bzr646-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - fix crash in wait_for_lock (LP: #763642)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 18 Apr 2011 09:25:51 +0200
+
+aptdaemon (0.41+bzr645-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - fix state of queue transactions (LP: #702442)
+ - unify cache open (LP: #694505)
+ - relax lintian check on libc (for lsb)
+ - catch overflow errors (LP: #758837)
+ * debian/lintian-{fatal,nonfatal}.tag.Ubuntu:
+ - rename from "tag" to "tags" so that they actually get applied
+ (LP: #712377)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 15 Apr 2011 13:57:10 +0200
+
+aptdaemon (0.41+bzr641-0ubuntu1) natty; urgency=low
+
+ * debian/lintian-nonfatal.tag.Ubuntu:
+ - relax checks more (LP: #756649)
+ - relax libc check, not valid for e.g. lsb packages
+ - call cache.open() after cache.update()
+ - utf8 fixes (LP: #736507)
+ - lock fixes
+ - fix cdrom medium detection (LP: #755655)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 14 Apr 2011 16:31:39 +0200
+
+aptdaemon (0.41+bzr629-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - improve utf8 encoding handling tests
+ - lp:~mvo/aptdaemon/relax-lintian-checks merged
+ - improve terminal handling, LP: #741260, #693290, #741260,
+ #738056, #742780, #743818, #744444, #746727, #747539, #753700,
+ #753762, #753927, #754134, #754174, #754205, #754206, #754220
+ - fix refactoring lefovers (LP: #752220)
+ - don't segfault if we cannot read the status of the process holding
+ a lock (LP: #745517)
+ * debian/patches/01_relax_lintian_checks.patch:
+ - removed, taken upstream
+ * debian/patches/02_fix_unicode_in_convert_struct.patch:
+ - removed, taken usptream
+ * debian/patches/04_import_logging.patch:
+ - removed, fixed usptream
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 12 Apr 2011 13:25:49 +0200
+
+aptdaemon (0.41+bzr614-0ubuntu3) natty; urgency=low
+
+ * debian/patches/04_import_logging.patch:
+ - Import logging to resolve undefined name. (LP: #752220)
+
+ -- Barry Warsaw <barry@ubuntu.com> Fri, 08 Apr 2011 18:36:22 -0400
+
+aptdaemon (0.41+bzr614-0ubuntu2) natty; urgency=low
+
+ * debian/patches/02_fix_unicode_in_convert_struct.patch:
+ - Decode non-unicode strings in _convert_struct (LP: #736507)
+ * debian/patches/03_do_not_close_invalid_fd.patch:
+ - Do not close invalid streams (LP: #741370)
+
+ -- Julian Andres Klode <juliank@ubuntu.com> Thu, 07 Apr 2011 10:02:21 +0200
+
+aptdaemon (0.41+bzr614-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - fix i18n crash (LP: #724735)
+ - Allow to specify package names with an architecture
+ (for multiarch)
+ - Client: Exit the transaction processing if there has been an
+ error
+ - Make the run method of the GTK2 progress dialog deferable
+ (LP: #626798)
+ * debian/patches/01_relax_lintian_checks.patch:
+ - add lp:~mvo/aptdaemon/relax-lintian-checks as distro patch
+ until upstream (LP: #712377)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 05 Apr 2011 16:31:37 +0200
+
+aptdaemon (0.41+bzr604-0ubuntu1) natty; urgency=low
+
+ * New bzr bugfix snapshot:
+ - fix fix typo (LP: #733732), thanks to seb128
+ - Fix variable name in the Finished signal
+ - Don't raise an error if trying to close an already closed fd
+ - Open the controlling terminal already at the SetTerminal call time
+ - bugfix in the apt config parser
+ * debian/patches/disable_config_parser_test.patch:
+ - removed, this is properly fixed now
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 23 Mar 2011 15:44:07 +0100
+
+aptdaemon (0.41+bzr597-0ubuntu1) natty; urgency=low
+
+ * New upstream bzr snapshot:
+ - data/org.debian.apt.policy.in: Drop gettext domain field, it will be
+ added during package build. (LP #690270 upstream task)
+ * debian/control, debian/rules: Build with dh_translations. (LP: #690270)
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 17 Mar 2011 12:30:25 +0100
+
+aptdaemon (0.41+bzr595-0ubuntu1) natty; urgency=low
+
+ * New upstream bzr snapshot:
+ - fix installing local debs (LP: #702217)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 08 Mar 2011 08:52:55 +0100
+
+aptdaemon (0.41+bzr594-0ubuntu1) natty; urgency=low
+
+ * New upstream bzr snapshot:
+ - Show details about broken dependencies
+ - Call waitpid after reading the output from lintian to avoid interrupted
+ system calls on systems under heavy load
+ - aptdaemon/worker.py, tests/test_client.py: fix crash in
+ enable_distro_component and add test, update docstring (and fix
+ docstring for remove_vendor_key along the way)
+ - aptdaemon/worker.py, tests/test_client.py: fix crash in
+ client.add_repository(), add test for client.add_repository(), refactor
+ test for enable_component() to make it more generic
+ - gtk3widgets.py: Fix require_version usage.
+ * debian/control: Add appropriate python-gobject dependency to
+ python-aptdaemon.gtk3widgets, to ensure availability of PyGI.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 03 Mar 2011 17:31:24 +0100
+
+aptdaemon (0.41+bzr586-0ubuntu2) natty; urgency=low
+
+ * debian/control: Add proper Conflicts:/Replaces: to avoid file overwrite
+ error on upgrades. (LP: #724683)
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 25 Feb 2011 09:29:02 +0100
+
+aptdaemon (0.41+bzr586-0ubuntu1) natty; urgency=low
+
+ * new bzr snapshot that contains a security fix for
+ LP: #722228
+ * support for set-candidate-release added
+ * debian/control:
+ - remove python-{unittest2,mock} from the build-depends
+ - build for python >= 2.7
+ * disable testsuite during build time until the MIR for
+ python-{unittest2,mock} are done
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 22 Feb 2011 16:18:34 +0100
+
+aptdaemon (0.41+bzr582-0ubuntu1) natty; urgency=low
+
+ [ Sebastian Heinlein ]
+ * New upstream version:
+ - Strictly use the specified D-Bus types in signal and return values
+ allowing to write non-Python bindings
+ - New GTK3 client widgets (thanks to Martin Pitt)
+ - Greatly enhanced test suite by moving to unittest2, allowing to perform
+ package operations in a chroot and running tests on a local session
+ dbus: "dbus-launch unit2 discover"
+ - Improved error reporting
+ - Improved open progress (Thanks to Michael Vogt)
+ - Run lintian as the user who initiated the transaction
+ - Several bug fixes (fixes LP: #707490, LP: #712838)
+
+ * debian/control:
+ - Add python-aptdaemon.gtkwidgets and python-aptdaemon.gtk3widgets
+ instead of a shared python-aptdaemon-gtk to follow the package
+ naming of the Python policy. Python-aptdaemon-gtk is kept as
+ a transitional dummy package
+ - Add a new aptdaemon-data package which provides common files
+ (e.g. icons) for the client modules
+ - aptdaemon recommends lintian to test local packages before
+ installing
+ - Add build dependencies on python-apt, python-gobject, python-defer,
+ python-software-properties, python-dbus, python-debian,
+ python-mock, dbus-x11 and python-unittest2 to run unittests at build
+ time
+ - Add missing dependency on python-dbus and python-debian to
+ python-aptdaemon
+ - Add a new package python-aptdaemon.test package which provides
+ the infrastructure to write unittests for aptdaemon clients
+ - Raise Python minimum version to 2.6
+
+ * debian/patches:
+ - Remove 09_fix_index_race_659438 - merged upstream
+ - Remove 00upstream_gtk3_fixes - merged upstream
+ - Remove 05_sources_list_password - merged upstream
+ - Add disable_config_parser_test.patch: The test fails on the build
+ system. Needs some more investigation. So temporarily disabled.
+
+ * debian/rules:
+ - Run the test suite at package build time by overriding dh_auto_test
+
+ * debian/python-aptdaemon.test.(install|examples):
+ - Ship the aptdaemon.test module, the silly packages repo, the dpkg
+ wrapper and the fake PolicyKit daemon
+
+ * debian/python-aptdaemon.gtk(3)widgets.(install|example):
+ - Ship the corresponding Python module and example client
+
+ * debian/aptdaemon-data.install:
+ - Ship the icons
+
+ [ Michael Vogt ]
+ * debian/control:
+ - add missing Replaces
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 09 Feb 2011 10:33:15 +0100
+
+aptdaemon (0.40+bzr541-0ubuntu2) natty; urgency=low
+
+ * Add 00upstream_gtk3_fixes.patch: Adjust gtk3widgets.py to work with
+ current pygobject/gtk. Taken from upstream branch r563.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 28 Jan 2011 15:45:29 +0100
+
+aptdaemon (0.40+bzr541-0ubuntu1) natty; urgency=low
+
+ * New upstream bzr snapshot:
+ - gtk3widgets.py: Put back AptTerminal class, now that vte has a GTK3 GIR
+ - gtk3widgets.py: Make work with GTK2, too
+ - gtk3widgets.py: When using GTK 2, import the correct Vte GIR version
+ - Documentation fixes.
+ * debian/control: Add alternative gir-* dependencies.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 10 Jan 2011 21:11:13 -0600
+
+aptdaemon (0.40+bzr529-0ubuntu3) natty; urgency=low
+
+ [ Sebastian Heinlein ]
+ * debian/patches/09_fix_index_race_659438.patch:
+ - If the background cron job rebuilds the apt indexes the
+ apt.Cache.required_download method fails, since it tries to access
+ the not available indexes. This patch is a workaround since it
+ is requires a lock on the indexes before caluclating the size
+ (LP: #659438)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 03 Jan 2011 12:26:48 +0100
+
+aptdaemon (0.40+bzr529-0ubuntu2) natty; urgency=low
+
+ * No-change rebuild to prefer python2.7.
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 22 Dec 2010 09:33:29 +0100
+
+aptdaemon (0.40+bzr529-0ubuntu1) natty; urgency=low
+
+ * new bzr snapshot:
+ - fixes crash when there is no aptdaemon translation for the
+ language in use is available
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 07 Dec 2010 14:04:23 +0100
+
+aptdaemon (0.40+bzr527-0ubuntu1) natty; urgency=low
+
+ * New upstream release 0.40. This involves some API changes, so please test
+ and adapt your programs. See NEWS for details.
+ * Upgrade to current upstream bzr head, which adds a gtk3widgets module
+ which uses GTK 3.0 and pygobject (with introspection). gtk3-demo.py is a
+ corresponding port of gtk-demo.py.
+ * 05_sources_list_password.patch: Unfuzz.
+ * Drop 07_fix-race-597017.patch, upstream now.
+ * Drop 08_fix_deb_install.patch, fixed differently upstream.
+ * debian/python-aptdaemon.install: Drop defer.py, it's now a separate
+ project. Add dependency to python-defer in debian/control.
+ * debian/python-aptdaemon.install: Install the new modules from upstream.
+ * debian/python-aptdaemon-gtk.install, debian/python-aptdaemon-gtk.examples:
+ Install the gtk3 variants of the module and example script.
+ * debian/control: Update Vcs-Bzr: to natty branch.
+ * debian/rules: Switch from pycentral to dh_python2. Drop python-central
+ build dependency.
+ * debian/control: Bump Standards-Version to 3.9.1 (no changes necessary).
+
+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Dec 2010 11:44:07 +0100
+
+aptdaemon (0.33-0ubuntu1) natty; urgency=low
+
+ * new upstream release
+ * debian/patches/06_rosetta_po_update.patch:
+ - removed, upstream has up-to-date translations
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 20 Oct 2010 09:40:01 +0200
+
+aptdaemon (0.31+bzr506-0ubuntu3) maverick-proposed; urgency=low
+
+ * debian/patches/08_fix_deb_install.patch:
+ - fix installing deb packages with odd/broken installed-size
+ fields (LP: #656633)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 19 Oct 2010 16:52:13 +0200
+
+aptdaemon (0.31+bzr506-0ubuntu2) maverick; urgency=low
+
+ * 07_fix-race-597017.patch:
+ - fix race in locking by backporting the relevant bits from
+ lp:aptdaemon/trunk (thanks to Sebastian Heinlein)
+ (LP: #597017)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 05 Oct 2010 18:04:52 +0200
+
+aptdaemon (0.31+bzr506-0ubuntu1) maverick; urgency=low
+
+ * fix incorrect error message on failed key adding
+ * fix crash when sys.stdin.encoding returns None
+ * fix gettext string (thanks Gabor)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 27 Sep 2010 22:55:21 +0200
+
+aptdaemon (0.31+bzr503-0ubuntu1) maverick; urgency=low
+
+ * merge fixes from bzr:
+ - allow purge of removed files with conffiles left
+ - fix bug when deferable is called with sync=True
+ - use wait=False in enable_distro component
+ - Fix local dpkg installation from unicode pathes by
+ converting the strings to UTF-8
+ - fix potential exception in wait=True, defer=True calls
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 16 Sep 2010 09:11:50 +0200
+
+aptdaemon (0.31+bzr496-0ubuntu1) maverick; urgency=low
+
+ * merge fixes from bzr:
+ - fix for aptdaemon.client.get_transaction()
+ - autodetect if "defer" is needed
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Sep 2010 10:23:34 +0200
+
+aptdaemon (0.31+bzr493-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot:
+ - makes 03_auth_me_less.patch no longer needed (applied upstream)
+ - improvements to the policykit privs
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 09 Sep 2010 17:25:30 +0200
+
+aptdaemon (0.31+bzr488-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot:
+ - makes 07_i18n_fixes.patch no longer needed (applied upstream)
+ - supports partial cache update (important fix for the buy-something
+ use case)
+ - fix missing (untranslated) role strings
+ * debian/control:
+ - depend on the right python-apt version
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 09 Sep 2010 11:39:45 +0200
+
+aptdaemon (0.31+bzr487-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot:
+ - makes 07_i18n_fixes.patch no longer needed (applied upstream)
+ - supports partial cache update (important fix for the buy-something
+ use case)
+ - fix missing (untranslated) role strings
+ * debian/control:
+ - depend on the right python-apt version
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 09 Sep 2010 17:10:24 +0200
+
+aptdaemon (0.31+bzr476-0ubuntu2) maverick; urgency=low
+
+ * debian/patches/07_i18n_fixes.patch:
+ - use dgettext to not clobber the clients gettext.textdomain
+ on import (LP: #631675)
+ * debian/patches/05_sources_list_password.patch:
+ - when adding a sources.list entry with a password protect
+ the file via mode 0640 and root.admin ownership
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 08 Sep 2010 09:38:31 +0200
+
+aptdaemon (0.31+bzr476-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot that fixes missing i18n in the policykit
+ descriptions (LP: #625409)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 31 Aug 2010 22:27:29 +0200
+
+aptdaemon (0.31+bzr474-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot that fixes some locking issues (LP: #616470)
+ * debian/python-aptdaemon.install:
+ - add lock.py to the installed files
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 25 Aug 2010 16:50:28 +0200
+
+aptdaemon (0.31+bzr468-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot that fixes authentication timeout problem
+ (LP: #623424), big thanks to Sebastian Heinlein
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 24 Aug 2010 20:49:32 +0200
+
+aptdaemon (0.31+bzr466-0ubuntu1) maverick; urgency=low
+
+ * .bzr-builddeb/default.conf:
+ - switch to lp:~aptdaemon-developers/aptdaemon/0.3
+ * new bzr snapshot from the 0.3 stable branch:
+ - simplify/improved policykit priviligies
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 24 Aug 2010 09:00:36 +0200
+
+aptdaemon (0.31+bzr449-0ubuntu2) maverick; urgency=low
+
+ * debian/patches/06_rosetta_po_update.patch:
+ - updated translations from rosetta for the policy.in
+ file (LP: #445603)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 23 Aug 2010 11:10:24 +0200
+
+aptdaemon (0.31+bzr449-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot that fixes two crashes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 09 Aug 2010 14:58:42 +0200
+
+aptdaemon (0.31+bzr447-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot
+ * drop 01_vendor-keys-download.patch, taken upstream
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 26 Jul 2010 08:45:23 +0200
+
+aptdaemon (0.31+bzr427-0ubuntu1) maverick; urgency=low
+
+ * new bzr snapshot
+ * debian/patches/03_auth_me_less.patch:
+ - updated to include less auth for adding buy-something repos
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 12 Jul 2010 09:46:15 +0200
+
+aptdaemon (0.31+bzr416-0ubuntu1) maverick; urgency=low
+
+ * updated to current bzr
+ - fixes STAT_FAILED vs STAT_ERROR crash
+ * debian/patches/01_vendor-keys-download.patch:
+ - add changes from lp:~mvo/aptdaemon/download-vendor-keys
+ to support downloading repository vendor keys via https
+ * debian/patches/03_auth_me_less.patch:
+ - updated to current code
+ * debian/control:
+ - use DH_CENTRAL=include-links
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 02 Jul 2010 10:28:33 +0200
+
+aptdaemon (0.31+bzr413-1) unstable; urgency=low
+
+ * Merge with Ubuntu, remaining differences:
+ - debian/copyright uses DEP-5 format.
+ - debian/source/format: Set to "3.0 (quilt)".
+ - debian/rules: Use debhelper 7 instead of quilt
+ - debian/watch: Added watch file.
+ - debian/control: Reindent, Vcs, Maintainer changes.
+ * debian/patches/03_auth_me_less.patch: Change patch level to 1.
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 06 Jun 2010 14:30:27 +0200
+
+aptdaemon (0.31+bzr412-0ubuntu1) maverick; urgency=low
+
+ * New bzr snapshot that improves the gtk progress widget
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 31 May 2010 15:03:56 +0200
+
+aptdaemon (0.31+bzr403-0ubuntu1) maverick; urgency=low
+
+ * First release of the new 0.3X development branch
+ * debian/patches:
+ - Remove 01_enable_component: Merged upstream
+ - Remove 02_fix_errback: Merged upstream
+ - Remove 04_caution_is_good: Merged upstream
+ - Remove 05_conffile_not_exists: Merged upstream
+ - Update 03_auth_me_less: Remove cherry-picked PolicyKit enhancements
+ * aptdaemon.install: Ship the man pages
+ * control: Fix location of vcs
+
+ -- Sebastian Heinlein <glatzor@ubuntu.com> Tue, 25 May 2010 12:09:50 +0200
+
+aptdaemon (0.11+bzr345-0ubuntu4) lucid; urgency=low
+
+ * debian/patches/04_caution_is_good.patch
+ - cherry pick fix from trunk to prevent removal of essenial
+ or required packages (LP: #561018)
+ * debian/patches/05_conffile_not_exists.patch:
+ - Do not fail on not available files (LP: #563504)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 16 Apr 2010 22:09:03 +0200
+
+aptdaemon (0.11+bzr345-0ubuntu3) lucid; urgency=low
+
+ * debian/patches/03_auth_me_less.patch:
+ - require only a single authentication prompt when adding
+ a repository and installing immediately from it
+ (thanks to Sebastian Heinlein)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 01 Apr 2010 17:34:12 +0200
+
+aptdaemon (0.11+bzr345-0ubuntu2) lucid; urgency=low
+
+ * debian/patches/02_fix_errback.patch:
+ - fix error handling from policykit (LP: #530393)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 01 Apr 2010 08:52:21 +0200
+
+aptdaemon (0.11+bzr345-0ubuntu1) lucid; urgency=low
+
+ * New snapshot that fixes crashes in AddRepository and
+ DpkgRecovery
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 31 Mar 2010 10:43:22 +0200
+
+aptdaemon (0.11+bzr343-1) unstable; urgency=low
+
+ * New upstream snapshot.
+ * 01_unused_removal.patch: Drop, merged upstream.
+ * debian/aptdaemon.install: Install the manpages.
+ * debian/control: breaks software-center (<< 1.1.21)
+ * python-apt-08api.diff: Port to new python-apt API (Closes: #572071)
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 29 Mar 2010 13:44:55 +0200
+
+aptdaemon (0.11+bzr342-0ubuntu2) lucid; urgency=low
+
+ * debian/patches/01_enable_component.patch:
+ - add missing EnableComponents call to fix bug when
+ components are referenced but not enabled
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 30 Mar 2010 16:19:38 +0200
+
+aptdaemon (0.11+bzr342-0ubuntu1) lucid; urgency=low
+
+ * New snapshot release based on the stable branch
+ - fixes debconf race condition (LP: #455861)
+ - should fix freeze in software-center (LP: #544424)
+ * .bzr-builddeb/default.conf:
+ - updatd to point at the stable 0.2.x branch
+ * debian/patches/01_unused_removal.patch:
+ - removed, taken upstream
+ * debian/patches/02_fix-455861.patch:
+ - removed, taken upstream
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 26 Mar 2010 10:15:37 +0100
+
+aptdaemon (0.11+bzr322-1) unstable; urgency=low
+
+ * New upstream snapshot.
+ * Merge debian/patches/series from Ubuntu:
+ - add 01_unused_removal.patch to allow removal of no longer
+ used dependencies on removal
+ * debian/control: add break on software-center (from Ubuntu)
+ * Update Standards-Version to 3.8.4.
+
+ -- Julian Andres Klode <jak@debian.org> Tue, 02 Feb 2010 16:14:55 +0100
+
+aptdaemon (0.11+bzr322-0ubuntu2) lucid; urgency=low
+
+ * debian/patches/02_fix-455861.patch:
+ - merge patch from james_w to fix race in debconf socket
+ code (many thanks) LP: #455861
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 16 Mar 2010 17:17:53 +0100
+
+aptdaemon (0.11+bzr322-0ubuntu1) lucid; urgency=low
+
+ * New git snapshot
+ * debian/patches/series:
+ - add 01_unused_removal.patch to allow removal of no longer
+ used dependencies on removal
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 04 Jan 2010 12:59:14 +0100
+
+aptdaemon (0.11+bzr319-0ubuntu1) lucid; urgency=low
+
+ * New git snapshot
+ - support generic meta-data for a transaction (LP: #493775)
+ - improvements to the gtk widgets
+ - bugfixes
+ * debian/control:
+ - add break on software-center
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Dec 2009 11:33:47 +0100
+
+aptdaemon (0.11+bzr297-0ubuntu1) lucid; urgency=low
+
+ * New git snapshot, API improvements
+ * debian/control:
+ - update Vcs-Bzr branch to point to "ubuntu-lucid"
+ * debian/patches/aptd-sbin.patch,
+ debian/patches/aptd_http_proxy.patch:
+ - removed, taken upstream
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 07 Dec 2009 18:08:28 +0100
+
+aptdaemon (0.11-2) unstable; urgency=low
+
+ * Add missing dependency on python-software-properties.
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 30 Nov 2009 17:39:39 +0100
+
+aptdaemon (0.11-1) unstable; urgency=low
+
+ * Initial upload to Debian unstable (Closes: #558690)
+ * Switch source package to 3.0 (quilt) and use debhelper 7.
+ * debian/copyright: Use the DEP-5 format.
+ * debian/watch: Add.
+ * aptd-sbin.patch: Drop, merged upstream.
+
+ -- Julian Andres Klode <jak@debian.org> Sun, 29 Nov 2009 20:40:01 +0100
+
+aptdaemon (0.10+bzr264-0ubuntu1) karmic; urgency=low
+
+ [ Sebastian Heinlein ]
+ * Import translations from Launchpad - fixes LP #445603
+ * If the cache refresh was cancelled do not show a download
+ failed error - fixes LP #440941
+
+ [ Michael Vogt ]
+ * fix install file to ensure the translations gets installed
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 14 Oct 2009 18:19:12 +0200
+
+aptdaemon (0.10+bzr260-0ubuntu1) karmic; urgency=low
+
+ [ Sebastian Heinlein ]
+ * Merge fix for killing randomly user processes on hung dpkg
+ operations - fixes LP: #446534
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 12 Oct 2009 17:20:15 +0200
+
+aptdaemon (0.10+bzr259-0ubuntu1) karmic; urgency=low
+
+ * debian/patches/aptd_http_proxy.patch:
+ - add basic http proxy proxy support (LP: #446069)
+ * dropped patches:
+ - debian/patches/aptd_locking_fixes.patch
+ - debian/patches/fix_syslog_crash.patch
+ Both got accepted upstream (no other changes in r259)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 09 Oct 2009 10:16:49 +0200
+
+aptdaemon (0.10+bzr258-0ubuntu1) karmic; urgency=low
+
+ * New upstream snapshot:
+ - fix hang in authentication dialog (LP: #426720)
+ - don't ask for authentication twice (LP: #437094)
+ - better handling for broken dependencies
+ * remove mvo-branch.patch, disallow-unauthenticated-branch.diff
+ both got merged upstream
+ * debian/patches/fix_syslog_crash.patch:
+ - fix crash if no syslogd is installed
+ * aptdaemon/worker.py:
+ - test lock of the apt download dir as well
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 06 Oct 2009 09:01:10 +0200
+
+aptdaemon (0.10+bzr242-0ubuntu3) karmic; urgency=low
+
+ * debian/patches/mvo-branch.patch:
+ - updated to include fix debconf race with multiple transactions
+ in the queue (LP: #432607)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 02 Oct 2009 14:40:47 +0200
+
+aptdaemon (0.10+bzr242-0ubuntu2) karmic; urgency=low
+
+ * debian/patches/mvo-branch.patch:
+ - updated to include fix for gettext fiddling (LP: #438077)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 28 Sep 2009 18:54:35 +0200
+
+aptdaemon (0.10+bzr242-0ubuntu1) karmic; urgency=low
+
+ * aptdaemon/core.py:
+ - do not fail on a not running syslog daemon (LP: #428843)
+ * Include dpkg errors in the error output
+ * debian/rules:
+ - move to simple-patchsys (for now) to make maintaining the
+ patches simpler
+ * debian/patches/disallow-unauthenticated-branch.diff:
+ Patch generated from lp:~mvo/aptdaemon/allow-unauthenticated
+ to support controlling if unauthenticated packages are allowed
+ during a transaction. Default to "not allow unauthenticated"
+ (LP: #435313)
+ * debian/patches/mvo-branch.patch:
+ Patch generated from lp:~mvo/aptdaemon/mvo that fixes:
+ - aptdaemon/worker.py: check the apt download dir lock
+ in _watch_lock to avoid possible race with apt-get LP: #437709
+ - aptdaemon/progress.py: fix crash in error handling (LP: #436808)
+ - aptdaemon/progress.py: fix crash in INSTALL_TIMEOUT handling
+ (LP: #430860)
+ - aptdaemon/gtkwidgets.py: make the dialog resizable and add bigger
+ default size (LP: #434937)
+ - aptdaemon/core.py: add _remove_from_connection_no_raise() that
+ will discard errors if the object is not exported (LP: #422585)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 28 Sep 2009 09:39:34 +0200
+
+aptdaemon (0.10+bzr240-0ubuntu1) karmic; urgency=low
+
+ * New upstream snapshot version:
+ - Allow to cancel a running transaction in the console client
+ (LP: #424436)
+ - fixes in config file handling code
+ - fixes in the error handling of the daemon
+ - better error reporting for dpkg failures
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 22 Sep 2009 12:07:47 +0200
+
+aptdaemon (0.10+bzr234-0ubuntu1) karmic; urgency=low
+
+ * New upstream snapshot version:
+ - less verbose debug (LP: #432937)
+ - do not send dbus signal if dbus is not available (LP: #432310)
+ - bugfixes
+ - conffile handling
+ - fix in progress code (LP #428964)
+ - improvements in the logging
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 21 Sep 2009 18:01:09 +0200
+
+aptdaemon (0.10+bzr226-0ubuntu1) karmic; urgency=low
+
+ * When the dpkg lock is taken, wait until its released and
+ emit a appropriate status (LP: #420980)
+ * setup correct TERM environment in the daemon
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 01 Sep 2009 18:40:25 +0200
+
+aptdaemon (0.10+bzr223-0ubuntu1) karmic; urgency=low
+
+ * fix bug in repository adding code when a empty components
+ list is used
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 27 Aug 2009 17:02:16 +0200
+
+aptdaemon (0.10+bzr222-0ubuntu1) karmic; urgency=low
+
+ * fix AttributeError (LP: #403467)
+ * add support for adding repositories
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 27 Aug 2009 14:46:20 +0200
+
+aptdaemon (0.10+bzr220-0ubuntu1) karmic; urgency=low
+
+ * new version that includes a transaction cache and
+ bugfixes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 24 Aug 2009 17:33:22 +0200
+
+aptdaemon (0.10+bzr216-0ubuntu1) karmic; urgency=low
+
+ [ Sebastian Heinlein ]
+ * New snapshot release:
+ - API change: Use a D-Bus properties interface for setting terminal, locale
+ and debconf socket
+ - Use a simple async programming mechanism inspired by Twisted's deferreds
+ - Port to PolicyKit-1
+ - Allow to manage APT gpg keys (thanks to Olof Kindgren)
+ - Fix progress calcualtion during installation
+ * debian/control:
+ - Replace dependency on policykit by policykit-1
+ * debian/aptdaemon.install: Adapt install location of PolicyKit-1 action files
+ * debian/python-aptdaemon.install:
+ - Replaced policykit.py by policykit1.py
+ - Added loop.py and defer.py
+
+ [ Stephan Peijnik ]
+ * debian/control: Replaced build-dependency on python-all-dev with python.
+ * debian/aptdaemon.install: Removed misc.py
+ * debian/copyright: Fixed lintian warning about dh_make boilerplate.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 17 Aug 2009 08:22:13 +0200
+
+aptdaemon (0.10+bzr208-0ubuntu1) karmic; urgency=low
+
+ * updated to current bzr
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Jul 2009 09:32:00 +0200
+
+aptdaemon (0.10+bzr185-0ubuntu1) karmic; urgency=low
+
+ * updated to current bzr
+ * fixd FTBFS
+ * adjust install files
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 06 Jul 2009 09:56:53 +0200
+
+aptdaemon (0.10+bzr173.1-0ubuntu1) karmic; urgency=low
+
+ * fix incorrect setup.py from a unclean build env
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 02 Jul 2009 11:09:28 +0200
+
+aptdaemon (0.10+bzr173-0ubuntu1) karmic; urgency=low
+
+ * Initial Release.
+
+ -- Sebastian Heinlein <devel@glatzor.de> Tue, 30 Jun 2009 15:06:36 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..48082f7
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+12
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..3b1aa8a
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,136 @@
+Source: aptdaemon
+Section: admin
+Priority: extra
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Julian Andres Klode <jak@debian.org>
+Build-Depends: debhelper (>= 7.3),
+ debconf-i18n,
+ dbus,
+ dh-python,
+ dh-translations,
+ python3-all,
+ python3-setuptools,
+ python3-distutils-extra,
+ python3-nose,
+ gir1.2-glib-2.0,
+ gir1.2-gtk-3.0,
+ gir1.2-packagekitglib-1.0 (>= 0.8.9),
+ gir1.2-vte-2.91,
+ python3-apt (>= 0.8.5~ubuntu1),
+ python3-defer (>= 1.0.6),
+ python3-dbus,
+ python3-gi,
+ python3-mock,
+ python3-pkg-resources,
+ iso-codes,
+ pep8,
+ xauth,
+ xvfb
+Standards-Version: 3.9.6
+Homepage: https://launchpad.net/aptdaemon
+XS-Original-Vcs-Bzr: nosmart+http://bzr.debian.org/bzr/apt/aptdaemon/debian-sid
+XS-Original-Vcs-Browser: http://bzr.debian.org/loggerhead/apt/aptdaemon/debian-sid
+X-Python3-Version: >= 3.2
+XS-Testsuite: autopkgtest
+
+Package: aptdaemon
+Architecture: all
+Depends: ${misc:Depends},
+ ${python3:Depends},
+ gir1.2-glib-2.0,
+ python3-aptdaemon (= ${binary:Version}),
+ python3-gi,
+ policykit-1,
+Breaks: software-center (<< 1.1.21), python3-aptdaemon.pkcompat
+Replaces: python3-aptdaemon.pkcompat
+Description: transaction based package management service
+ Aptdaemon allows normal users to perform package management tasks, e.g.
+ refreshing the cache, upgrading the system, installing or removing software
+ packages.
+ .
+ Currently it comes with the following main features:
+ .
+ - Programming language independent D-Bus interface, which allows one to
+ write clients in several languages
+ - Runs only if required (D-Bus activation)
+ - Fine grained privilege management using PolicyKit, e.g. allowing all
+ desktop user to query for updates without entering a password
+ - Support for media changes during installation from DVD/CDROM
+ - Support for debconf (Debian's package configuration system)
+ - Support for attaching a terminal to the underlying dpkg call
+ .
+ This package contains the aptd script and all the data files required to run
+ the daemon. Moreover it contains the aptdcon script, which is a command
+ line client for aptdaemon. The API is not stable yet.
+
+Package: python3-aptdaemon
+Architecture: all
+Section: python
+Depends: ${misc:Depends},
+ ${python3:Depends},
+ aptdaemon,
+ gir1.2-glib-2.0,
+ gir1.2-packagekitglib-1.0 (>= 1.1.1),
+ python3-apt (>= 0.8.5~ubuntu1),
+ python3-defer (>= 1.0.6),
+ python3-dbus,
+ python3-gi,
+ python3-pkg-resources,
+ iso-codes,
+Description: Python 3 module for the server and client of aptdaemon
+ Aptdaemon is a transaction based package management service. It allows
+ normal users to perform package management tasks, e.g. refreshing the
+ cache, upgrading the system, installing or removing software packages.
+ .
+ This package provides the Python 3 modules required to run aptdaemon
+ and to implement a client. The API is not stable yet.
+
+Package: python3-aptdaemon.test
+Architecture: all
+Section: python
+Depends: ${misc:Depends},
+ ${python3:Depends},
+ python3-aptdaemon (= ${binary:Version}),
+Breaks: python-aptdaemon.test
+Replaces: python-aptdaemon.test
+Description: Test environment for aptdaemon clients
+ Aptdaemon is a transaction based package management daemon. It allows
+ normal users to perform package management tasks, e.g. refreshing the
+ cache, upgrading the system, installing or removing software packages.
+ .
+ This package provides the aptdaemon.test module and several helper
+ scripts and a test repository to write unittests for aptdaemon
+ clients.
+
+Package: aptdaemon-data
+Architecture: all
+Depends: ${misc:Depends}
+Replaces: python-aptdaemon-gtk (<= 0.41+bzr580-0ubuntu1)
+Description: data files for clients
+ Aptdaemon is a transaction based package management daemon. It allows
+ normal users to perform package management tasks, e.g. refreshing the
+ cache, upgrading the system, installing or removing software packages.
+ .
+ This package provides common data files (e.g. icons) for aptdaemon
+ clients.
+
+Package: python3-aptdaemon.gtk3widgets
+Architecture: all
+Section: python
+Depends: ${misc:Depends},
+ ${python3:Depends},
+ python3-aptdaemon (= ${binary:Version}),
+ python3-gi,
+ gir1.2-gtk-3.0,
+ gir1.2-vte-2.91,
+ aptdaemon-data
+Conflicts: python-aptdaemon-gtk (<< 0.41+bzr582-0ubuntu1)
+Replaces: python-aptdaemon-gtk (<< 0.41+bzr582-0ubuntu1)
+Description: Python 3 GTK+ 3 widgets to run an aptdaemon client
+ Aptdaemon is a transaction based package management daemon. It allows
+ normal users to perform package management tasks, e.g. refreshing the
+ cache, upgrading the system, installing or removing software packages.
+ .
+ This package provides the Python 3 GTK+ 3 widgets to implement a fully
+ working graphical client. The widgets can be used to initiate, to
+ monitor and to control a transaction. The API is not stable yet.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..430ae2d
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,34 @@
+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?rev=59
+Source: https://launchpad.net/aptdaemon
+
+Files: *
+Copyright: © 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+License: GPL-2+
+
+Files: aptdaemon/client.py
+Copyright: © 2008 Canonical Ltd.
+ © 2008 Aidan Skinner <aidan@skinner.me.uk>
+ © 2008 Martin Pitt <martin.pitt@ubuntu.com>
+ © 2008 Tim Lauridsen <timlau@fedoraproject.org>
+ © 2008 Sebastian Heinlein <devel@glatzor.de>
+License: GPL-2+
+
+Files: aptdaemon/debconf.py
+Copyright: © 2009 Sebastian Heinlein <devel@glatzor.de>
+ © 2009 Michael Vogt <mvo@ubuntu.com>
+License: GPL-2+
+
+Files: debian/*
+Copyright: © 2008-2009 Sebastian Heinlein <devel@glatzor.de>
+ © 2009 Canonical Ltd.
+ © 2009 Julian Andres Klode <jak@debian.org>
+License: GPL-2+
+
+License: GPL-2+
+ This package 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.
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL-2'.
diff --git a/debian/lintian-fatal.tags.Ubuntu b/debian/lintian-fatal.tags.Ubuntu
new file mode 100644
index 0000000..105b95c
--- /dev/null
+++ b/debian/lintian-fatal.tags.Ubuntu
@@ -0,0 +1,34 @@
+# custom checks for aptdaemon
+bad-package-name
+bad-relation
+bad-version-number
+binary-in-etc
+build-info-in-binary-control-file-section
+control-file-has-bad-owner
+control-file-has-bad-permissions
+debian-control-file-uses-obsolete-national-encoding
+debian-control-with-duplicate-fields
+dir-or-file-in-mnt
+dir-or-file-in-tmp
+file-in-usr-marked-as-conffile
+forbidden-postrm-interpreter
+maintainer-address-is-on-localhost
+maintainer-address-malformed
+maintainer-address-missing
+maintainer-name-missing
+maintainer-script-removes-device-files
+malformed-deb-archive
+missing-dependency-on-perlapi
+no-architecture-field
+no-maintainer-field
+no-package-name
+no-source-field
+no-version-field
+not-allowed-control-file
+package-contains-ancient-file
+package-has-no-description
+package-not-lowercase
+package-uses-local-diversion
+source-field-does-not-match-pkg-name
+symlink-has-too-many-up-segments
+too-many-architectures
diff --git a/debian/lintian-nonfatal.tags.Ubuntu b/debian/lintian-nonfatal.tags.Ubuntu
new file mode 100644
index 0000000..b588805
--- /dev/null
+++ b/debian/lintian-nonfatal.tags.Ubuntu
@@ -0,0 +1,12 @@
+# non fatal
+#arch-dependent-file-in-usr-share
+arch-independent-package-contains-binary-or-object
+binary-with-bad-dynamic-table
+control-interpreter-without-depends
+dir-or-file-in-var-www
+# see comment #36 of bug #712377
+#missing-dependency-on-libc
+non-etc-file-marked-as-conffile
+package-contains-info-dir-file
+preinst-interpreter-without-predepends
+wrong-file-owner-uid-or-gid
diff --git a/debian/patches/CVE-2020-15703.patch b/debian/patches/CVE-2020-15703.patch
new file mode 100644
index 0000000..caf9360
--- /dev/null
+++ b/debian/patches/CVE-2020-15703.patch
@@ -0,0 +1,16 @@
+Description: Reject locales with full path
+ _parse_localename() treats "/tmp/a." as a locale with language "/tmp/a" and
+ empty region, so add an extra safety check.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Bug: https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/1888235
+--- a/aptdaemon/core.py
++++ b/aptdaemon/core.py
+@@ -821,6 +821,8 @@ class Transaction(DBusObject):
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
++ if "/" in str(locale_str):
++ raise ValueError("Security exception: Absolute path for locale")
+ try:
+ # ensure locale string is str() and not dbus.String()
+ (lang, encoding) = locale._parse_localename(str(locale_str))
diff --git a/debian/patches/CVE-2020-16128.patch b/debian/patches/CVE-2020-16128.patch
new file mode 100644
index 0000000..4e10f9f
--- /dev/null
+++ b/debian/patches/CVE-2020-16128.patch
@@ -0,0 +1,166 @@
+Description: Fix file existence disclosures (CVE-2020-16128)
+ Move set_euid_egid into aptdaemon.utils and use it when setting
+ Terminal and DebConfSocket properties, to ensure our checks only
+ have access to the same objects the user has.
+ .
+ Rewrite the checks so that they avoid extra os.access lookups and
+ have correct error handling for os.open() in the terminal, and
+ os.stat() in the debconf case.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1899513
+--- a/aptdaemon/core.py
++++ b/aptdaemon/core.py
+@@ -60,7 +60,7 @@ from . import enums
+ from defer import inline_callbacks, return_value, Deferred
+ from defer.utils import dbus_deferred_method
+ from . import policykit1
+-from .utils import split_package_id
++from .utils import split_package_id, set_euid_egid
+ from .worker import DummyWorker
+ from .worker.aptworker import (AptWorker,
+ trans_only_installs_pkgs_from_high_trust_repos)
+@@ -1107,24 +1107,28 @@ class Transaction(DBusObject):
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+- if not os.access(ttyname, os.W_OK):
+- raise errors.AptDaemonError("Pty device does not exist: "
+- "%s" % ttyname)
+- if not os.stat(ttyname)[4] == self.uid:
+- raise errors.AptDaemonError("Pty device '%s' has to be owned by"
+- "the owner of the transaction "
+- "(uid %s) " % (ttyname, self.uid))
+- if os.path.dirname(ttyname) != "/dev/pts":
+- raise errors.AptDaemonError("%s isn't a tty" % ttyname)
+- try:
+- slave_fd = os.open(ttyname, os.O_RDWR | os.O_NOCTTY)
+- if os.isatty(slave_fd):
+- self.terminal = dbus.String(ttyname)
+- self.PropertyChanged("Terminal", self.terminal)
+- else:
++ with set_euid_egid(self.uid, self.gid):
++ if os.path.dirname(ttyname) != "/dev/pts":
+ raise errors.AptDaemonError("%s isn't a tty" % ttyname)
+- finally:
+- os.close(slave_fd)
++
++ slave_fd = None
++ try:
++ slave_fd = os.open(ttyname, os.O_RDWR | os.O_NOCTTY)
++ except Exception:
++ raise errors.AptDaemonError("Could not open %s" % ttyname)
++ else:
++ if os.fstat(slave_fd).st_uid != self.uid:
++ raise errors.AptDaemonError("Pty device '%s' has to be owned by"
++ "the owner of the transaction "
++ "(uid %s) " % (ttyname, self.uid))
++ if os.isatty(slave_fd):
++ self.terminal = dbus.String(ttyname)
++ self.PropertyChanged("Terminal", self.terminal)
++ else:
++ raise errors.AptDaemonError("%s isn't a tty" % ttyname)
++ finally:
++ if slave_fd is not None:
++ os.close(slave_fd)
+
+ def _set_debconf(self, debconf_socket):
+ """Set the socket of the debconf proxy.
+@@ -1140,13 +1144,17 @@ class Transaction(DBusObject):
+ """
+ if self.status != enums.STATUS_SETTING_UP:
+ raise errors.TransactionAlreadyRunning()
+- if not os.access(debconf_socket, os.W_OK):
+- raise errors.AptDaemonError("socket does not exist: "
+- "%s" % debconf_socket)
+- if not os.stat(debconf_socket)[4] == self.uid:
+- raise errors.AptDaemonError("socket '%s' has to be owned by the "
+- "owner of the "
+- "transaction" % debconf_socket)
++ with set_euid_egid(self.uid, self.gid):
++ try:
++ stat = os.stat(debconf_socket)
++ except Exception:
++ raise errors.AptDaemonError("socket status could not be read: "
++ "%s" % debconf_socket)
++ else:
++ if stat.st_uid != self.uid:
++ raise errors.AptDaemonError("socket '%s' has to be owned by the "
++ "owner of the "
++ "transaction" % debconf_socket)
+ self.debconf = dbus.String(debconf_socket)
+ self.PropertyChanged("DebconfSocket", self.debconf)
+
+--- a/aptdaemon/worker/aptworker.py
++++ b/aptdaemon/worker/aptworker.py
+@@ -58,6 +58,7 @@ from . import BaseWorker
+ from ..enums import *
+ from ..errors import *
+ from .. import lock
++from ..utils import set_euid_egid
+ from ..progress import (
+ DaemonOpenProgress,
+ DaemonInstallProgress,
+@@ -90,25 +91,6 @@ USE_HTTP="yes"
+ """
+
+
+-@contextlib.contextmanager
+-def set_euid_egid(uid, gid):
+- # no need to drop privs
+- if os.getuid() != 0 and os.getgid() != 0:
+- yield
+- return
+- # temporary drop privs
+- os.setegid(gid)
+- old_groups = os.getgroups()
+- os.setgroups([gid])
+- os.seteuid(uid)
+- try:
+- yield
+- finally:
+- os.seteuid(os.getuid())
+- os.setegid(os.getgid())
+- os.setgroups(old_groups)
+-
+-
+ def trans_only_installs_pkgs_from_high_trust_repos(trans,
+ whitelist=set()):
+ """Return True if this transaction only touches packages in the
+--- a/aptdaemon/utils.py
++++ b/aptdaemon/utils.py
+@@ -24,7 +24,9 @@ __author__ = "Sebastian Heinlein <devel@
+
+ __all__ = ("deprecated", "IsoCodes")
+
++import os
+ import sys
++import contextlib
+ import gettext
+ import functools
+ import warnings
+@@ -58,6 +60,25 @@ def deprecated(func):
+ return new_func
+
+
++@contextlib.contextmanager
++def set_euid_egid(uid, gid):
++ # no need to drop privs
++ if os.getuid() != 0 and os.getgid() != 0:
++ yield
++ return
++ # temporary drop privs
++ os.setegid(gid)
++ old_groups = os.getgroups()
++ os.setgroups([gid])
++ os.seteuid(uid)
++ try:
++ yield
++ finally:
++ os.seteuid(os.getuid())
++ os.setegid(os.getgid())
++ os.setgroups(old_groups)
++
++
+ class IsoCodes(object):
+
+ """Provides access to the iso-codes language, script and country
diff --git a/debian/patches/CVE-2020-27349.patch b/debian/patches/CVE-2020-27349.patch
new file mode 100644
index 0000000..230ed4a
--- /dev/null
+++ b/debian/patches/CVE-2020-27349.patch
@@ -0,0 +1,31 @@
+From 5d6e1ca82a07ef1739dfea20ad17f077ceccfdcf Mon Sep 17 00:00:00 2001
+From: Julian Andres Klode <julian.klode@canonical.com>
+Date: Tue, 1 Dec 2020 12:25:00 +0100
+Subject: [PATCH] Check PolicyKit before simulating local install
+ (CVE-2020-27349)
+
+Given that we are opening a deb here as root that is controlled
+by a non-root user, without any authorization, this is a whole
+lot of safety issues.
+
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1899193/
+---
+ aptdaemon/core.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/aptdaemon/core.py b/aptdaemon/core.py
+index 885b30b..6043b17 100644
+--- a/aptdaemon/core.py
++++ b/aptdaemon/core.py
+@@ -1073,6 +1073,8 @@ class Transaction(DBusObject):
+ def _simulate_real(self):
+ if self._simulated_cb:
+ raise errors.TransactionAlreadySimulating()
++ if self.role == enums.ROLE_INSTALL_FILE:
++ yield self._check_auth()
+ self.queue.worker.simulate(self)
+ deferred = Deferred()
+ if self._idle_watch is not None:
+--
+2.29.2
+
diff --git a/debian/patches/allow-unauthenticated.patch b/debian/patches/allow-unauthenticated.patch
new file mode 100644
index 0000000..7c84232
--- /dev/null
+++ b/debian/patches/allow-unauthenticated.patch
@@ -0,0 +1,23 @@
+Description: Forward allow_unauthenticated to python-apt
+ Forward the allow_unauthenticated flag to python-apt so packages can continue
+ to be downloaded without them being authenticated, avoiding breakage with recent
+ python-apt uploads.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Origin: vendor
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-apt/+bug/1858973
+--- a/aptdaemon/worker/aptworker.py
++++ b/aptdaemon/worker/aptworker.py
+@@ -1068,7 +1068,12 @@ class AptWorker(BaseWorker):
+ end=install_range[1])
+ with self._frozen_status():
+ try:
+- self._cache.commit(fetch_progress, inst_progress)
++ # This was backported as
++ if "allow_unauthenticated" in apt.Cache.commit.__doc__:
++ self._cache.commit(fetch_progress, inst_progress,
++ allow_unauthenticated=trans.allow_unauthenticated)
++ else:
++ self._cache.commit(fetch_progress, inst_progress)
+ except apt.cache.FetchFailedException as error:
+ raise TransactionFailed(ERROR_PACKAGE_DOWNLOAD_FAILED,
+ str(error))
diff --git a/debian/patches/apport-report.patch b/debian/patches/apport-report.patch
new file mode 100644
index 0000000..c715386
--- /dev/null
+++ b/debian/patches/apport-report.patch
@@ -0,0 +1,24 @@
+Description: write apport reports the right way
+Author: Brian Murray <brian@ubuntu.com>
+Origin: vendor
+Bug-Ubuntu: http://launchpad.net/bugs/1700810
+Forwarded: not-needed
+Last-Update: 2020-05-11
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/crash.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/crash.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/crash.py
+@@ -69,9 +69,8 @@ def create_report(error, traceback, tran
+ uid = os.path.basename(trans.tid)
+
+ # Write report
+- report_path = apport.fileutils.make_report_path(report, uid)
+- if not os.path.exists(report_path):
+- report.write(open(report_path, 'wb'))
++ with apport.fileutils.make_report_file(report, uid) as f:
++ report.write(f)
+
+ if __name__ == "__main__":
+ apt_pkg.init_config()
diff --git a/debian/patches/dbus_timeout.patch b/debian/patches/dbus_timeout.patch
new file mode 100644
index 0000000..569f450
--- /dev/null
+++ b/debian/patches/dbus_timeout.patch
@@ -0,0 +1,63 @@
+=== modified file 'aptdaemon/client.py'
+Index: aptdaemon/aptdaemon/client.py
+===================================================================
+--- aptdaemon.orig/aptdaemon/client.py
++++ aptdaemon/aptdaemon/client.py
+@@ -47,6 +47,10 @@ from .errors import convert_dbus_excepti
+ __all__ = ("AptTransaction", "AptClient", "get_transaction", "get_aptdaemon")
+
+
++# the default timeout for dbus method calls
++_APTDAEMON_DBUS_TIMEOUT = 86400
++
++
+ class AptTransaction(GObject.Object):
+
+ """Represents an aptdaemon transaction.
+@@ -704,7 +708,8 @@ class AptTransaction(GObject.Object):
+ try:
+ return self._iface.RunAfter(transaction.tid,
+ error_handler=error_handler,
+- reply_handler=reply_handler)
++ reply_handler=reply_handler,
++ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ except Exception as error:
+ if error_handler:
+ error_handler(error)
+@@ -727,7 +732,8 @@ class AptTransaction(GObject.Object):
+ """
+ try:
+ return self._iface.Run(error_handler=error_handler,
+- reply_handler=reply_handler)
++ reply_handler=reply_handler,
++ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ except Exception as error:
+ if error_handler:
+ error_handler(error)
+@@ -1609,10 +1615,11 @@ class AptClient(object):
+ if async:
+ deferred = defer.Deferred()
+ dbus_method(reply_handler=deferred.callback,
+- error_handler=deferred.errback, *args, timeout=86400)
++ error_handler=deferred.errback, *args,
++ timeout=_APTDAEMON_DBUS_TIMEOUT)
+ tid = yield deferred
+ else:
+- tid = dbus_method(*args, timeout=86400)
++ tid = dbus_method(*args, timeout=_APTDAEMON_DBUS_TIMEOUT)
+ trans = AptTransaction(tid, self.bus)
+ if self._locale:
+ yield trans.set_locale(self._locale)
+Index: aptdaemon/aptdaemon/core.py
+===================================================================
+--- aptdaemon.orig/aptdaemon/core.py
++++ aptdaemon/aptdaemon/core.py
+@@ -83,7 +83,7 @@ APTDAEMON_DBUS_SERVICE = 'org.debian.apt
+ APTDAEMON_TRANSACTION_DBUS_INTERFACE = 'org.debian.apt.transaction'
+
+ APTDAEMON_IDLE_CHECK_INTERVAL = 60
+-APTDAEMON_IDLE_TIMEOUT = 5 * 60
++APTDAEMON_IDLE_TIMEOUT = 10 * 60
+
+ # Maximum allowed time between the creation of a transaction and its queuing
+ TRANSACTION_IDLE_TIMEOUT = 300
diff --git a/debian/patches/do-not-raise-stopiteration.patch b/debian/patches/do-not-raise-stopiteration.patch
new file mode 100644
index 0000000..7813b36
--- /dev/null
+++ b/debian/patches/do-not-raise-stopiteration.patch
@@ -0,0 +1,68 @@
+Description: Adjust stopping generators for PEP479
+ Adjust aptdaemon for PEP479, where raise StopIteration
+ stopped working and should become return.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Last-Update: 2019-03-27
+
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/core.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/core.py
+@@ -935,7 +935,7 @@ class Transaction(DBusObject):
+ self.progress = 9
+ yield self._simulate_real()
+ else:
+- raise StopIteration
++ return
+
+ @inline_callbacks
+ def _check_auth(self):
+@@ -946,7 +946,7 @@ class Transaction(DBusObject):
+ self.status = enums.STATUS_AUTHENTICATING
+ action = self.ROLE_ACTION_MAP[self.role]
+ if action is None:
+- raise StopIteration
++ return
+ # Special case if InstallPackages only touches stuff from the
+ # high trust whitelist
+ if (self.role in (enums.ROLE_INSTALL_PACKAGES,
+@@ -1028,16 +1028,16 @@ class Transaction(DBusObject):
+ else:
+ self.status = enums.STATUS_CANCELLING
+ self.exit = enums.EXIT_CANCELLED
+- raise StopIteration
++ return
+ if self.tid in self.queue.limbo:
+ self.exit = enums.EXIT_CANCELLED
+- raise StopIteration
++ return
+ elif self.cancellable:
+ log_trans.debug("Setting cancel event")
+ self.cancelled = True
+ self.status = enums.STATUS_CANCELLING
+ self.paused = False
+- raise StopIteration
++ return
+ raise errors.AptDaemonError("Could not cancel transaction")
+
+ # pylint: disable-msg=C0103,C0322
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/networking.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/networking.py
+@@ -177,7 +177,7 @@ class NetworkManagerMonitor(NetworkMonit
+ def _on_nm_active_conn_props_changed(self, props):
+ """Callback if properties of the active connection changed."""
+ if "Default" not in props:
+- raise StopIteration
++ return
+ yield self.get_network_state()
+
+ @inline_callbacks
+--- aptdaemon-1.1.1+bzr982.orig/doc/source/aptdaemon.client.rst
++++ aptdaemon-1.1.1+bzr982/doc/source/aptdaemon.client.rst
+@@ -91,7 +91,7 @@ code in a synchronous way:
+ ... transaction = yield apt_client.update()
+ ... except errors.NotAuthorizedError:
+ ... print "You are not allowed to update the cache!"
+- ... raise StopIteration
++ ... return
+ ... yield transaction.set_locale("de_DE")
+ ... yield transaction.run()
+ ... print "Transaction has started"
diff --git a/debian/patches/drop_pkcompat.patch b/debian/patches/drop_pkcompat.patch
new file mode 100644
index 0000000..64980a7
--- /dev/null
+++ b/debian/patches/drop_pkcompat.patch
@@ -0,0 +1,2068 @@
+From: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
+Subject: Drop pkcompat PackageKit compatibility module.
+
+Just use straight PackageKit.
+
+---
+
+---
+ aptdaemon/core.py | 12
+ aptdaemon/pkcompat.py | 2022 --------------------------------------------------
+ 2 files changed, 2 insertions(+), 2032 deletions(-)
+
+Index: b/aptdaemon/core.py
+===================================================================
+--- a/aptdaemon/core.py
++++ b/aptdaemon/core.py
+@@ -1445,22 +1445,14 @@ class AptDaemon(DBusObject):
+ load_plugins = not options.disable_plugins
+ try:
+ from .worker.pkworker import AptPackageKitWorker
+- from . import pkcompat
+- except ImportError:
+- self.worker = AptWorker(options.chroot, load_plugins)
+- else:
+ self.worker = AptPackageKitWorker(options.chroot,
+ load_plugins)
++ except:
++ self.worker = AptWorker(options.chroot, load_plugins)
+ self.queue = TransactionQueue(self.worker)
+ self.queue.connect("queue-changed", self._on_queue_changed)
+ # keep state of the last information about reboot required
+ self._reboot_required = self.worker.is_reboot_required()
+- try:
+- self.packagekit = pkcompat.PackageKit(self.queue, connect, bus)
+- except dbus.exceptions.NameExistsException:
+- log.warning("PackageKit is already running")
+- except NameError:
+- pass
+ log.debug("Daemon was initialized")
+
+ def _on_queue_changed(self, queue):
+Index: b/aptdaemon/pkcompat.py
+===================================================================
+--- a/aptdaemon/pkcompat.py
++++ /dev/null
+@@ -1,2022 +0,0 @@
+-# !/usr/bin/env python
+-# -*- coding: utf-8 -*-
+-"""
+-Provides a limited compatibility layer to PackageKit
+-
+-Copyright (C) 2007 Ali Sabil <ali.sabil@gmail.com>
+-Copyright (C) 2007 Tom Parker <palfrey@tevp.net>
+-Copyright (C) 2008-2011 Sebastian Heinlein <glatzor@ubuntu.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.
+-"""
+-
+-__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+-
+-import datetime
+-import glob
+-import gzip
+-import locale
+-import logging
+-import os
+-import platform
+-import re
+-import subprocess
+-import tempfile
+-import time
+-import uuid
+-
+-from defer import inline_callbacks, return_value
+-from defer.utils import dbus_deferred_method
+-import dbus
+-from gi.repository import GObject, GLib
+-from gi.repository import PackageKitGlib as pk
+-
+-# for optional plugin support
+-try:
+- import pkg_resources
+-except ImportError:
+- pkg_resources = None
+-
+-from . import policykit1
+-from . import core
+-from .core import APTDAEMON_TRANSACTION_DBUS_INTERFACE
+-from . import enums as aptd_enums
+-from .errors import TransactionFailed
+-from . import errors
+-from .progress import DaemonAcquireProgress
+-from . import worker
+-from . import networking
+-from .pkutils import (bitfield_summarize, bitfield_add, bitfield_remove,
+- bitfield_contains)
+-from .utils import split_package_id
+-
+-
+-pklog = logging.getLogger("AptDaemon.PackageKit")
+-
+-# Check if update-manager-core is installed to get aware of the
+-# latest distro releases
+-try:
+- from UpdateManager.Core.MetaRelease import MetaReleaseCore
+-except ImportError:
+- META_RELEASE_SUPPORT = False
+-else:
+- META_RELEASE_SUPPORT = True
+-
+-PACKAGEKIT_DBUS_INTERFACE = "org.freedesktop.PackageKit"
+-PACKAGEKIT_DBUS_SERVICE = "org.freedesktop.PackageKit"
+-PACKAGEKIT_DBUS_PATH = "/org/freedesktop/PackageKit"
+-
+-PACKAGEKIT_TRANS_DBUS_INTERFACE = "org.freedesktop.PackageKit.Transaction"
+-PACKAGEKIT_TRANS_DBUS_SERVICE = "org.freedesktop.PackageKit.Transaction"
+-
+-MAP_EXIT_ENUM = {
+- aptd_enums.EXIT_SUCCESS: pk.ExitEnum.SUCCESS,
+- aptd_enums.EXIT_CANCELLED: pk.ExitEnum.CANCELLED,
+- aptd_enums.EXIT_FAILED: pk.ExitEnum.FAILED,
+- aptd_enums.EXIT_FAILED: pk.ExitEnum.FAILED,
+- aptd_enums.EXIT_PREVIOUS_FAILED: pk.ExitEnum.FAILED}
+-
+-MAP_STATUS_ENUM = {
+- aptd_enums.STATUS_AUTHENTICATING: pk.StatusEnum.WAITING_FOR_AUTH,
+- aptd_enums.STATUS_SETTING_UP: pk.StatusEnum.SETUP,
+- aptd_enums.STATUS_QUERY: pk.StatusEnum.QUERY,
+- aptd_enums.STATUS_WAITING: pk.StatusEnum.WAIT,
+- aptd_enums.STATUS_RUNNING: pk.StatusEnum.RUNNING,
+- aptd_enums.STATUS_CANCELLING: pk.StatusEnum.CANCEL,
+- aptd_enums.STATUS_CLEANING_UP: pk.StatusEnum.CLEANUP,
+- aptd_enums.STATUS_COMMITTING: pk.StatusEnum.COMMIT,
+- aptd_enums.STATUS_DOWNLOADING: pk.StatusEnum.DOWNLOAD,
+- aptd_enums.STATUS_DOWNLOADING_REPO: pk.StatusEnum.DOWNLOAD_REPOSITORY,
+- aptd_enums.STATUS_FINISHED: pk.StatusEnum.FINISHED,
+- aptd_enums.STATUS_LOADING_CACHE: pk.StatusEnum.LOADING_CACHE,
+- aptd_enums.STATUS_RESOLVING_DEP: pk.StatusEnum.DEP_RESOLVE,
+- aptd_enums.STATUS_RUNNING: pk.StatusEnum.RUNNING,
+- aptd_enums.STATUS_WAITING_LOCK: pk.StatusEnum.WAITING_FOR_LOCK,
+- aptd_enums.STATUS_WAITING_MEDIUM: pk.StatusEnum.UNKNOWN,
+- aptd_enums.STATUS_WAITING_CONFIG_FILE_PROMPT: pk.StatusEnum.UNKNOWN}
+-
+-MAP_ERROR_ENUM = {
+- aptd_enums.ERROR_CACHE_BROKEN: pk.ErrorEnum.NO_CACHE,
+- aptd_enums.ERROR_DEP_RESOLUTION_FAILED: (
+- pk.ErrorEnum.DEP_RESOLUTION_FAILED),
+- aptd_enums.ERROR_INCOMPLETE_INSTALL: pk.ErrorEnum.NO_CACHE,
+- aptd_enums.ERROR_INVALID_PACKAGE_FILE: (
+- pk.ErrorEnum.PACKAGE_CORRUPT),
+- aptd_enums.ERROR_KEY_NOT_INSTALLED: pk.ErrorEnum.GPG_FAILURE,
+- aptd_enums.ERROR_KEY_NOT_REMOVED: pk.ErrorEnum.GPG_FAILURE,
+- aptd_enums.ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE: (
+- pk.ErrorEnum.PACKAGE_FAILED_TO_REMOVE),
+- aptd_enums.ERROR_NO_CACHE: pk.ErrorEnum.NO_CACHE,
+- aptd_enums.ERROR_NO_LOCK: pk.ErrorEnum.CANNOT_GET_LOCK,
+- aptd_enums.ERROR_NO_PACKAGE: pk.ErrorEnum.PACKAGE_NOT_FOUND,
+- aptd_enums.ERROR_PACKAGE_ALREADY_INSTALLED: (
+- pk.ErrorEnum.PACKAGE_ALREADY_INSTALLED),
+- aptd_enums.ERROR_PACKAGE_DOWNLOAD_FAILED: (
+- pk.ErrorEnum.PACKAGE_DOWNLOAD_FAILED),
+- aptd_enums.ERROR_PACKAGE_MANAGER_FAILED: (
+- pk.ErrorEnum.TRANSACTION_ERROR),
+- aptd_enums.ERROR_PACKAGE_NOT_INSTALLED: (
+- pk.ErrorEnum.PACKAGE_NOT_INSTALLED),
+- aptd_enums.ERROR_PACKAGE_UNAUTHENTICATED: (
+- pk.ErrorEnum.BAD_GPG_SIGNATURE),
+- aptd_enums.ERROR_PACKAGE_UPTODATE: (
+- pk.ErrorEnum.NO_PACKAGES_TO_UPDATE),
+- aptd_enums.ERROR_REPO_DOWNLOAD_FAILED: (
+- pk.ErrorEnum.REPO_NOT_AVAILABLE),
+- aptd_enums.ERROR_UNREADABLE_PACKAGE_FILE: (
+- pk.ErrorEnum.INVALID_PACKAGE_FILE),
+- aptd_enums.ERROR_SYSTEM_ALREADY_UPTODATE: (
+- pk.ErrorEnum.NO_PACKAGES_TO_UPDATE),
+- aptd_enums.ERROR_NOT_AUTHORIZED: pk.ErrorEnum.NOT_AUTHORIZED,
+- aptd_enums.ERROR_AUTH_FAILED: pk.ErrorEnum.NOT_AUTHORIZED}
+-
+-MAP_PACKAGE_ENUM = {
+- aptd_enums.PKG_CONFIGURING: pk.InfoEnum.INSTALLING,
+- aptd_enums.PKG_DISAPPEARING: pk.InfoEnum.UNKNOWN,
+- aptd_enums.PKG_INSTALLED: pk.InfoEnum.FINISHED,
+- aptd_enums.PKG_INSTALLING: pk.InfoEnum.INSTALLING,
+- aptd_enums.PKG_PREPARING_INSTALL: pk.InfoEnum.PREPARING,
+- aptd_enums.PKG_PREPARING_PURGE: pk.InfoEnum.PREPARING,
+- aptd_enums.PKG_PREPARING_REMOVE: pk.InfoEnum.PREPARING,
+- aptd_enums.PKG_PURGED: pk.InfoEnum.FINISHED,
+- aptd_enums.PKG_PURGING: pk.InfoEnum.REMOVING,
+- aptd_enums.PKG_REMOVED: pk.InfoEnum.FINISHED,
+- aptd_enums.PKG_REMOVING: pk.InfoEnum.REMOVING,
+- aptd_enums.PKG_RUNNING_TRIGGER: pk.InfoEnum.CLEANUP,
+- aptd_enums.PKG_UNKNOWN: pk.InfoEnum.UNKNOWN,
+- aptd_enums.PKG_UNPACKING: pk.InfoEnum.DECOMPRESSING,
+- aptd_enums.PKG_UPGRADING: pk.InfoEnum.UPDATING}
+-
+-MAP_POLICY = {
+- "org.freedesktop.packagekit.cancel-foreign": (
+- policykit1.PK_ACTION_CANCEL_FOREIGN),
+- "org.freedesktop.packagekit.package-install": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.package-install-untrusted": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.system-trust-signing-key": (
+- policykit1.PK_ACTION_CHANGE_REPOSITORY),
+- "org.freedesktop.packagekit.package-eula-accept": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.package-remove": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.system-update": (
+- policykit1.PK_ACTION_UPGRADE_PACKAGES),
+- "org.freedesktop.packagekit.system-sources-configure": (
+- policykit1.PK_ACTION_CHANGE_REPOSITORY),
+- "org.freedesktop.packagekit.system-sources-refresh": (
+- policykit1.PK_ACTION_UPDATE_CACHE),
+- "org.freedesktop.packagekit.system-network-proxy-configure": (
+- policykit1.PK_ACTION_SET_PROXY),
+- "org.freedesktop.packagekit.device-rebind": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.upgrade-system": (
+- policykit1.PK_ACTION_UPGRADE_PACKAGES),
+- "org.freedesktop.packagekit.repair-system": (
+- policykit1.PK_ACTION_INSTALL_OR_REMOVE_PACKAGES),
+- "org.freedesktop.packagekit.trigger-offline-update": (
+- policykit1.PK_ACTION_UPGRADE_PACKAGES),
+- "org.freedesktop.packagekit.clear-offline-update": (
+- policykit1.PK_ACTION_UPGRADE_PACKAGES)}
+-
+-
+-class PackageKit(core.DBusObject):
+-
+- """Provides a limited set of the PackageKit system D-Bus API."""
+-
+- def __init__(self, queue, connect=True, bus=None):
+- """Initialize a new PackageKit compatibility layer.
+-
+- Keyword arguments:
+- connect -- if the daemon should connect to the D-Bus (default is True)
+- bus -- the D-Bus to connect to (defaults to the system bus)
+- """
+- pklog.info("Initializing PackageKit compat layer")
+- bus_name = None
+- bus_path = None
+- if connect is True:
+- if bus is None:
+- bus = dbus.SystemBus()
+- self.bus = bus
+- bus_path = PACKAGEKIT_DBUS_PATH
+- bus_name = dbus.service.BusName(PACKAGEKIT_DBUS_SERVICE, self.bus)
+- core.DBusObject.__init__(self, bus_name, bus_path)
+- self._updates_changed_timeout_id = None
+- self._updates_changed = False
+- self.queue = queue
+- self.queue.worker.connect("transaction-done",
+- self._on_transaction_done)
+- self.queue.connect("queue-changed", self._on_queue_changed)
+- self._distro_id = None
+- self.netmon = networking.get_network_monitor()
+- self.netmon.connect("network-state-changed",
+- self._on_network_state_changed)
+- self._get_network_state()
+-
+- @inline_callbacks
+- def _get_network_state(self):
+- """Helper to defer the network state checking."""
+- yield self.netmon.get_network_state()
+-
+- # SIGNALS
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_DBUS_INTERFACE,
+- signature="")
+- def RestartSchedule(self):
+- """A system restart has been sceduled."""
+- pass
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_DBUS_INTERFACE,
+- signature="as")
+- def TransactionListChanged(self, transactions):
+- """The transaction list has changed, because either a transaction
+- has finished or a new transaction created.
+-
+- :param transactions: A list of transaction ID's.
+- :type transactions: as
+- """
+- pklog.debug("Emitting TransactionListChanged signal: %s", transactions)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_DBUS_INTERFACE,
+- signature="")
+- def UpdatesChanged(self):
+- """This signal is emitted when the number of updates has changed."""
+- pklog.debug("Emitting UpdatesChanged signal")
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_DBUS_INTERFACE,
+- signature="")
+- def RepoListChanged(self):
+- """This signal is emitted when the repository list has changed."""
+- pass
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_DBUS_INTERFACE,
+- signature="")
+- def Changed(self):
+- """This signal is emitted when a property on the interface changes."""
+- pklog.debug("Emitting PackageKit Changed()")
+-
+- # METHODS
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_DBUS_INTERFACE,
+- in_signature="s", out_signature="u",
+- sender_keyword="sender")
+- def CanAuthorize(self, action_id, sender):
+- """Allows a client to find out if it would be allowed to authorize
+- an action.
+-
+- :param action_id: The action ID, e.g.
+- org.freedesktop.packagekit.system-network-proxy-configure
+- :returns: The result, either yes, no or interactive.
+- """
+- pklog.info("CanAuthorize() was called: %s", str(action_id))
+- return self._can_authorize(action_id, sender)
+-
+- @inline_callbacks
+- def _can_authorize(self, action_id, sender):
+- try:
+- action_id_aptd = MAP_POLICY[action_id]
+- except KeyError:
+- return_value(pk.AuthorizeEnum.UNKNOWN)
+- try:
+- policykit1.check_authorization_by_name(
+- self, action_id, flags=policykit1.CHECK_AUTH_NONE)
+- except policykit1.NotAuthorizedError:
+- return_value(pk.AuthorizeEnum.NO)
+- except policykit1.AuthorizationFailed:
+- # check_authorization_* behaves a little bit different if the
+- # flags are set to NONE instead of INTERACTIVE
+- return_value(pk.AuthorizeEnum.INTERACTIVE)
+- except:
+- return_value(pk.AuthorizeEnum.UNKNOWN)
+- return_value(pk.AuthorizeEnum.YES)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.method(PACKAGEKIT_DBUS_INTERFACE,
+- in_signature="s", out_signature="")
+- def StateHasChanged(self, reason):
+- """This method suggests to PackageKit that the package backend state
+- may have changed. This allows plugins to the native package manager
+- to suggest that PackageKit drops it's caches.
+-
+- :param reason:
+- The reason of the state change. Valid reasons are resume or
+- posttrans. Resume is given a lower priority than posttrans.
+- """
+- pklog.info("StateHasChanged() was called: %s", str(reason))
+- self._updates_changed = True
+- if reason == "cache-update":
+- self._check_updates_changed(timeout=30)
+- elif reason == "resume":
+- self._check_updates_changed(timeout=180)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_DBUS_INTERFACE,
+- in_signature="", out_signature="o",
+- sender_keyword="sender")
+- def CreateTransaction(self, sender):
+- """Gets a new transaction ID from the daemon.
+-
+- :returns: The tid, e.g. 45_dafeca_checkpoint32
+- """
+- pklog.info("CreateTransaction() was called")
+- return self._create_transaction(sender)
+-
+- @inline_callbacks
+- def _create_transaction(self, sender):
+- pid, uid, gid, cmdline = yield policykit1.get_proc_info_from_dbus_name(
+- sender, self.bus)
+- pktrans = PackageKitTransaction(
+- pid, uid, gid, cmdline, self.queue, sender)
+- return_value(pktrans.tid)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.method(PACKAGEKIT_DBUS_INTERFACE,
+- in_signature="", out_signature="s")
+- def GetDaemonState(self):
+- """Return the state of the currently running transactions."""
+- pklog.info("GetDaemonState() was called")
+- # FIXME: Add some useful data here
+- return "All is fine!"
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.method(PACKAGEKIT_DBUS_INTERFACE,
+- in_signature="", out_signature="ao")
+- def GetTransactionList(self):
+- """Gets the transaction list of any transactions that are in
+- progress.
+-
+- :returns: A list of transaction ID's
+- """
+- pklog.info("GetTransactionList() was called")
+- return self._get_transaction_list()
+-
+- # HELPERS
+-
+- def _get_properties(self, iface):
+- """Helper to get the properties of a D-Bus interface."""
+- if iface == PACKAGEKIT_DBUS_INTERFACE:
+- return {
+- # Claim that we are a current version
+- "VersionMajor": dbus.UInt32(0),
+- "VersionMinor": dbus.UInt32(8),
+- "VersionMicro": dbus.UInt32(9),
+- "BackendName": dbus.String("aptdaemon"),
+- "BackendDescription": dbus.String("Compatibility layer"),
+- "BackendAuthor": dbus.String(__author__),
+- "Groups": dbus.UInt64(self.queue.worker.groups),
+- "Provides": dbus.UInt64(self.queue.worker.provides),
+- "Filters": dbus.UInt64(self.queue.worker.filters),
+- "Roles": dbus.UInt64(self.queue.worker.roles),
+- "MimeTypes": dbus.Array(self.queue.worker.mime_types,
+- signature="s"),
+- "Locked": dbus.Boolean(False),
+- "NetworkState": dbus.UInt32(self.netmon.state),
+- "DistroId": dbus.String(self._get_distro_id())}
+- else:
+- return {}
+-
+- def _get_distro_id(self):
+- """Return information about the distibution."""
+- if self._distro_id is None:
+- distro, version, _codename = platform.dist()
+- self._distro_id = "%s;%s;%s" % (distro or "unknown",
+- version or "unknown",
+- self.queue.worker.NATIVE_ARCH)
+- return self._distro_id
+-
+- def _on_network_state_changed(self, mon, state):
+- self.Changed()
+- self.PropertiesChanged(PACKAGEKIT_DBUS_INTERFACE,
+- {"NetworkState": dbus.UInt32(state)}, [])
+-
+- def _on_queue_changed(self, queue):
+- self.TransactionListChanged(self._get_transaction_list())
+- self._check_updates_changed()
+-
+- def _get_transaction_list(self):
+- pk_transactions = []
+- for trans in self.queue.items:
+- # We currently only emit PackageKit transaction
+- # FIXME: Should we use MergedTransaction for all transactions and
+- # ROLE_UNKOWN for aptdaemon only transactions?
+- try:
+- pk_transactions.append(trans.pktrans.tid)
+- except AttributeError:
+- pass
+- try:
+- pk_transactions.append(self.queue.worker.trans.pktrans.tid)
+- except AttributeError:
+- pass
+- return pk_transactions
+-
+- def _on_transaction_done(self, worker, trans):
+- # If a cache modifing transaction is completed schedule an
+- # UpdatesChanged signal
+- if trans.role in (aptd_enums.ROLE_INSTALL_FILE,
+- aptd_enums.ROLE_INSTALL_PACKAGES,
+- aptd_enums.ROLE_REMOVE_PACKAGES,
+- aptd_enums.ROLE_UPGRADE_PACKAGES,
+- aptd_enums.ROLE_COMMIT_PACKAGES,
+- aptd_enums.ROLE_UPGRADE_SYSTEM,
+- aptd_enums.ROLE_FIX_BROKEN_DEPENDS):
+- self._updates_changed = True
+- self._check_updates_changed()
+- elif trans.role == aptd_enums.ROLE_UPDATE_CACHE:
+- self._updates_changed = True
+- self._check_updates_changed(timeout=30)
+-
+- def _check_updates_changed(self, timeout=60):
+- """After the queue was processed schedule a delayed UpdatesChanged
+- signal if required.
+- """
+- if not self.queue.items and self._updates_changed:
+- if self._updates_changed_timeout_id:
+- # If we already have a scheduled UpdatesChanged signal
+- # delay it even further
+- pklog.debug("UpdatesChanged signal re-scheduled")
+- GLib.source_remove(self._updates_changed_timeout_id)
+- else:
+- pklog.debug("UpdatesChanged signal scheduled")
+- self._updates_changed_timeout_id = \
+- GLib.timeout_add_seconds(timeout,
+- self._delayed_updates_changed)
+-
+- def _delayed_updates_changed(self):
+- """Emit the UpdatesChanged signal and clear the timeout."""
+- self.UpdatesChanged()
+- self._updates_changed_timeout_id = None
+- self._updates_changed = False
+- return False
+-
+-
+-class MergedTransaction(core.Transaction):
+-
+- """Overlay of an Aptdaemon transaction which also provides the
+- PackageKit object and its interfaces.
+- """
+-
+- def __init__(self, pktrans, role, queue, connect=True,
+- bus=None, packages=None, kwargs=None):
+- core.Transaction.__init__(self, pktrans.tid[1:], role, queue,
+- pktrans.pid, pktrans.uid, pktrans.gid,
+- pktrans.cmdline, pktrans.sender,
+- connect, bus, packages, kwargs)
+- self.pktrans = pktrans
+- self.run_time = 0
+-
+- @inline_callbacks
+- def _run(self, sender):
+- """Run the transaction and convert exceptions to PackageKit ones."""
+- try:
+- yield core.Transaction._run(self, sender)
+- except (TransactionFailed, errors.NotAuthorizedError,
+- errors.AuthorizationFailed):
+- # It is sufficient for PackageKit if the exit state and error
+- # code of the transaction are set. So silently drop the execp
+- if self.error:
+- pass
+- except Exception as error:
+- raise error
+-
+- @inline_callbacks
+- def _check_auth(self):
+- """Override the auth method to allow simulates without any
+- authorization.
+- """
+- if bitfield_contains(self.pktrans.flags,
+- pk.TransactionFlagEnum.SIMULATE):
+- raise StopIteration
+- else:
+- yield core.Transaction._check_auth(self)
+-
+- @inline_callbacks
+- def _check_simulated(self):
+- """Skip simulate calls for simulated transactions."""
+- if bitfield_contains(self.pktrans.flags,
+- pk.TransactionFlagEnum.SIMULATE):
+- raise StopIteration
+- else:
+- yield core.Transaction._check_simulated(self)
+-
+- def _set_status(self, enum):
+- core.Transaction._set_status(self, enum)
+- self.pktrans.status = get_pk_status_enum(enum)
+-
+- status = property(core.Transaction._get_status, _set_status)
+-
+- def _set_progress(self, percent):
+- core.Transaction._set_progress(self, percent)
+- self.pktrans.percentage = self._progress
+-
+- progress = property(core.Transaction._get_progress, _set_progress)
+-
+- def _set_progress_details(self, details):
+- core.Transaction._set_progress_details(self, details)
+- self.pktrans.download_size_remaing = int(details[3]) - int(details[2])
+- self.pktrans.speed = int(details[4])
+- self.pktrans.remaining_time = int(details[5])
+- self.pktrans.elapsed_time = int(time.time() - self.pktrans.start_time)
+-
+- progress_details = property(core.Transaction._get_progress_details,
+- _set_progress_details)
+-
+- def _set_progress_package(self, progress):
+- core.Transaction._set_progress_package(self, progress)
+- pkg_name, enum = progress
+- # Ignore dpkg triggers
+- if enum == aptd_enums.PKG_RUNNING_TRIGGER or pkg_name == "dpkg-exec":
+- return
+- try:
+- id = self.pktrans.pkg_id_cache[pkg_name]
+- except KeyError:
+- id = get_pk_package_id(pkg_name)
+- self.emit_package(get_pk_package_enum(enum), id, "")
+-
+- progress_package = property(core.Transaction._get_progress_package,
+- _set_progress_package)
+-
+- def _set_progress_download(self, progress_download):
+- core.Transaction._set_progress_download(self, progress_download)
+- prog_enum = progress_download[1]
+- prog_name = progress_download[2]
+- total_size = progress_download[3]
+- partial_size = progress_download[4]
+-
+- try:
+- id = self.pktrans.pkg_id_cache[prog_name]
+- except KeyError:
+- return
+- self.pktrans.Package(pk.InfoEnum.DOWNLOADING, id, "")
+- if prog_enum == aptd_enums.DOWNLOAD_IDLE:
+- percentage = 0
+- elif prog_enum == aptd_enums.DOWNLOAD_FETCHING and total_size > 0:
+- percentage = partial_size * 100 / total_size
+- elif prog_enum == aptd_enums.DOWNLOAD_DONE:
+- percentage = 100
+- else:
+- # In the case of an error
+- percentage = 0
+- self.pktrans.ItemProgress(id, pk.InfoEnum.DOWNLOADING, percentage)
+-
+- progress_download = property(core.Transaction._get_progress_download,
+- _set_progress_download)
+-
+- def _set_exit(self, enum):
+- core.Transaction._set_exit(self, enum)
+- self.pktrans.exit = get_pk_exit_enum(enum)
+-
+- exit = property(core.Transaction._get_exit, _set_exit)
+-
+- def _set_error(self, excep):
+- core.Transaction._set_error(self, excep)
+- self.pktrans.ErrorCode(get_pk_error_enum(excep.code),
+- self._error_property[1])
+-
+- error = property(core.Transaction._get_error, _set_error)
+-
+- def _remove_from_connection_no_raise(self):
+- core.Transaction._remove_from_connection_no_raise(self)
+- if self.pktrans is None:
+- return False
+- self.pktrans.Destroy()
+- try:
+- self.pktrans.remove_from_connection()
+- except LookupError as error:
+- pklog.debug("remove_from_connection() raised LookupError: %s",
+- error)
+- finally:
+- self.pktrans.trans = None
+- self.pktrans = None
+- return False
+-
+- def emit_details(self, package_id, license, group, detail, url, size):
+- self.pktrans.Details(package_id, license, group, detail, url, size)
+-
+- def emit_files(self, id, file_list):
+- self.pktrans.Files(id, file_list)
+-
+- def emit_package(self, info, id, summary):
+- if id.startswith("dpkg-exec;"):
+- # PackageKit would show a non existing package
+- pklog.debug("Don't emit Package() signal for the dpkg trigger")
+- return
+- self.pktrans.Package(info, id, summary)
+- self.pktrans.last_package = id
+-
+- def emit_update_detail(self, package_id, updates, obsoletes, vendor_urls,
+- bugzilla_urls, cve_urls, restart, update_text,
+- changelog, state, issued, updated):
+- self.pktrans.UpdateDetail(package_id, updates, obsoletes, vendor_urls,
+- bugzilla_urls, cve_urls, restart,
+- update_text, changelog, state, issued,
+- updated)
+-
+-
+-class PackageKitTransaction(core.DBusObject):
+-
+- """Provides a PackageKit transaction object."""
+-
+- def __init__(self, pid, uid, gid, cmdline, queue, sender,
+- connect=True, bus=None):
+- pklog.info("Initializing PackageKit transaction")
+- bus_name = None
+- bus_path = None
+- self.tid = "/%s" % uuid.uuid4().hex
+- if connect is True:
+- if bus is None:
+- bus = dbus.SystemBus()
+- self.bus = bus
+- bus_path = self.tid
+- bus_name = dbus.service.BusName(PACKAGEKIT_DBUS_SERVICE, bus)
+- core.DBusObject.__init__(self, bus_name, bus_path)
+- self.queue = queue
+- self.hints = {}
+- self.start_time = time.time()
+- self._elapsed_time = dbus.UInt32(0)
+- self._remaining_time = dbus.UInt32(0)
+- self._download_size_remaining = dbus.UInt64(0)
+- self._speed = dbus.UInt32(0)
+- self._caller_active = True
+- self._allow_cancel = False
+- self._percentage = dbus.UInt32(0)
+- self._status = pk.StatusEnum.SETUP
+- self._last_package = ""
+- self.uid = dbus.UInt32(uid)
+- self.gid = dbus.UInt32(gid)
+- self.pid = pid
+- self.cmdline = cmdline
+- self.role = pk.RoleEnum.UNKNOWN
+- self.sender = sender
+- self.trans = None
+- self.flags = pk.TransactionFlagEnum.NONE
+- self.pkg_id_cache = {}
+-
+- @property
+- def allow_cancel(self):
+- return self._allow_cancel
+-
+- @allow_cancel.setter
+- def allow_cancel(self, value):
+- self._allow_cancel = dbus.Boolean(value)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"AllowCancel": self._allow_cancel}, [])
+- self.Changed()
+-
+- @property
+- def last_package(self):
+- return self._last_package
+-
+- @last_package.setter
+- def last_package(self, value):
+- self._last_package = dbus.String(value)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"LastPackage": self._last_package}, [])
+- self.Changed()
+-
+- @property
+- def caller_active(self):
+- return self._caller_active
+-
+- @caller_active.setter
+- def caller_active(self, value):
+- self._caller_active = dbus.Boolean(value)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"CallerActive": self._caller_active}, [])
+- self.Changed()
+-
+- @property
+- def percentage(self):
+- return self._percentage
+-
+- @percentage.setter
+- def percentage(self, progress):
+- self._percentage = dbus.UInt32(progress)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"Percentage": self._percentage}, [])
+- self.Changed()
+-
+- @property
+- def status(self):
+- return self._status
+-
+- @status.setter
+- def status(self, enum):
+- self._status = dbus.UInt32(enum)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"Status": self._status}, [])
+- self.Changed()
+-
+- @property
+- def elapsed_time(self):
+- return self._elapsed_time
+-
+- @elapsed_time.setter
+- def elapsed_time(self, ela):
+- self._elpased_time = dbus.UInt32(ela)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"ElapsedTime": self._elapsed_time}, [])
+- self.Changed()
+-
+- @property
+- def remaining_time(self):
+- return self._remaining_time
+-
+- @remaining_time.setter
+- def remaining_time(self, value):
+- self._remaining_time = dbus.UInt32(value)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"RemainingTime": self._remaining_time}, [])
+- self.Changed()
+-
+- @property
+- def download_size_remaining(self):
+- return self._download_size_remaining
+-
+- @download_size_remaining.setter
+- def download_size_remaining(self, value):
+- self._download_size_remaining = dbus.UInt64(value)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"DownloadSizeRemaining":
+- self._download_size_remaining}, [])
+- self.Changed()
+-
+- @property
+- def speed(self):
+- return self._speed
+-
+- @speed.setter
+- def speed(self, speed):
+- self._speed = dbus.UInt32(speed)
+- self.PropertiesChanged(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- {"Speed": self._speed}, [])
+- self.Changed()
+-
+- @property
+- def exit(self):
+- return self._exit
+-
+- @exit.setter
+- def exit(self, enum):
+- self._exit = enum
+- self.run_time = int((time.time() - self.start_time) * 1000)
+- # The time could go backwards ...
+- if self.run_time < 0:
+- self.run_time = 0
+- if enum == pk.ExitEnum.CANCELLED:
+- self.ErrorCode(pk.ErrorEnum.TRANSACTION_CANCELLED, "")
+- self.status = pk.StatusEnum.FINISHED
+- self.Finished(enum, self.run_time)
+-
+- # SIGNALS
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="osbuusus")
+- def Transaction(self, object_path, timespec, succeeded, role, duration,
+- data, uid, cmdline):
+- """This signal is sent when more details are required about a
+- specific transaction.
+-
+- :param object_path: The transaction ID of the old transaction.
+- :param timespec: The timespec of the old transaction in ISO8601 format.
+- :param succeeded: If the transaction succeeded.
+- :param role: The role enumerated type.
+- :param duration: The duration of the transaction in milliseconds.
+- :param data: Any data associated
+- :param uid: The user ID of the user that scheduled the action.
+- :param cmdline: The command line of the tool that scheduled the action,
+- e.g. /usr/bin/gpk-application.
+- """
+- pklog.debug("Emitting Transaction signal: %s, %s, %s, %s, %s, %s, "
+- "%s, %s", object_path, timespec, succeeded,
+- pk.role_enum_to_string(role), duration, data, uid,
+- cmdline)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="us")
+- def ErrorCode(self, code, details):
+- """This signal is used to report errors back to the session program.
+- Errors should only be send on fatal abort.
+-
+- :param code: Enumerated type, e.g. no-network.
+- :param details: Long description or error, e.g. "failed to connect"
+-
+- :type code: u
+- :type details: s
+- """
+- pklog.debug("Emitting ErrorCode signal: %s, %s",
+- pk.error_enum_to_string(code), details)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="")
+- def Changed(self):
+- """This signal is emitted when a property on the interface changes."""
+- pklog.debug("Emitting Changed signal")
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="")
+- def Destroy(self):
+- """This signal is sent when the transaction has been destroyed
+- and is no longer available for use."""
+- pklog.debug("Emitting Destroy signal")
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="uu")
+- def Finished(self, exit_enum, runtime):
+- """This signal is used to signal that the transaction has finished.
+- :param exit: The PkExitEnum describing the exit status of the
+- transaction.
+- :param runtime: The amount of time in milliseconds that the
+- transaction ran for.
+-
+- :type exit: s
+- :type runtime: u
+- """
+- pklog.debug("Emitting Finished signal: %s, %s",
+- pk.exit_enum_to_string(exit_enum), runtime)
+- pass
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="ssusst")
+- def Details(self, package_id, license, group, detail, url, size):
+- """This signal allows the backend to convey more details about the
+- package.
+-
+- :param package_id: The package ID
+-
+- :param license:
+- The license string, e.g. GPLv2+ or BSD and (MPLv1.1 or GPLv2+).
+- Moredetails about the correct way to format licensing strings can
+- be found on the Fedora packaging wiki.
+- :param group:
+- The enumerated package group description
+- :param detail:
+- The multi-line package description. If formatting is required,
+- then markdown syntax should be used, e.g. This is **critically**
+- important
+- :param url:
+- The upstream project homepage
+- :param size:
+- The size of the package in bytes. This should be the size of the
+- entire package file, not the size of the files installed on the
+- system. If the package is not installed, and already downloaded
+- and present in the package manager cache, then this value should
+- be set to zero.
+- """
+- pklog.debug("Emitting Details signal for %s", package_id)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="us")
+- def Message(self, kind, details):
+- """This signal is sent when the backend wants to send a message to
+- the session.
+-
+- The message will be shown after the transaction has been completed.
+- """
+- pklog.debug("Emitting Message signal: %s, %s", kind, details)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="sas")
+- def Files(self, package_id, file_list):
+- """This signal is used to push file lists from the backend to the
+- session.
+-
+- :param package_id:
+- The Package ID that called the method.
+- :param file_list:
+- The file list
+- """
+- pklog.debug("Emitting Files signal: %s, %s", package_id, file_list)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="suu")
+- def ItemProgress(self, package_id, status, percentage):
+- """This signal allows the backend to send information about
+- package or repository progress when using Simultanous mode.
+-
+- :param package_id: The package ID
+- :param status:
+- The status enumerated value that is being completed
+- :param percentage:
+- The percentage of this action is completed
+- """
+- pklog.debug("Emitting ItemProgress signal for %s: %s, %s",
+- package_id, pk.info_enum_to_string(status), percentage)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="sasasasasasussuss")
+- def UpdateDetail(self, package_id, updates, obsoletes, vendor_urls,
+- bugzilla_urls, cve_urls, restart, update_text, changelog,
+- state, issued, updated):
+- """This signal is sent when more details are required about a
+- specific update.
+-
+- :param package_id: The package ID
+- :param updates:
+- A list of package_id's that are to be updated.
+- :param obsoletes:
+- A list of package_id's that are to be obsoleted.
+- :param vendor_urls:
+- A URL with more details on the update, e.g. a page with more
+- information on the update. The format of this command should
+- be http://www.foo.org/page.html?4567;Update to SELinux
+- :param bugzilla_urls:
+- A bugzilla URL with more details on the update. If no URL is
+- available then this field should be left empty.
+- :param cve_urls:
+- A CVE URL with more details on the security advisory.
+- :param restart:
+- A valid restart type, e.g. system.
+- :param update_text:
+- The update text describing the update. If formatting is required,
+- then markdown syntax should be used, e.g. This is **critically**
+- important.
+- :param changelog:
+- The ChangeLog text describing the changes since the last version.
+- :param state:
+- The state of the update, e.g. stable or testing.
+- :param issued:
+- The ISO8601 encoded date that the update was issued.
+- :param updated:
+- The ISO8601 encoded date that the update was updated.
+- """
+- pklog.debug("Emitting UpdateDetail signal for %s", package_id)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="uss")
+- def Package(self, info, package_id, summary):
+- """This signal allows the backend to communicate packages to the
+- session.
+-
+- If updating, as packages are updated then emit them to the screen.
+- This allows a summary to be presented after the transaction.
+- When returning results from a search always return installed
+- before available for the same package name.
+-
+- :param info: A valid info enumerated type
+- :param package_id: This identifier is of the form
+- name;version;arch;data in a single string and is meant to
+- represent a single package unique across all local and remote
+- data stores. For a remote, not-installed package the data
+- field should be set as the repository identifier or repository
+- name. The data field for an installed package must be prefixed
+- with installed as this is used to identify which packages are
+- installable or installed in the client tools. As a special
+- extension, if the package manager is able to track which
+- repository a package was originally installed from, then the data
+- field can be set to installed:REPO-NAME which allows the frontend
+- client to advise the user of the package origin. The data field
+- for a non-installed local package must be local as this signifies
+- a repository name is not available and that package resides
+- locally on the client system rather than in any specific
+- repository.
+- :param summary: The one line package summary, e.g. Clipart for
+- OpenOffice
+- """
+- pklog.debug("Emitting Package signal: %s, %s, %s'",
+- pk.info_enum_to_string(info), package_id, summary[:10])
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="sss")
+- def DistroUpgrade(self, distro_type, name, summary):
+- """This signal allows the backend to communicate distribution upgrades
+- to the session.
+- :param type: A valid upgrade string enumerated type, e.g. stable
+- or unstable
+- :param name: The short name of the distribution, e.g. Fedora Core
+- 10 RC1
+- :param summary: The multi-line description of the release
+- """
+- pklog.debug("Emitting DistroUpgrade signal: %s, %s, %s",
+- pk.distro_upgrade_enum_to_string(distro_type),
+- name, summary)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.signal(dbus_interface=PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- signature="us")
+- def RequireRestart(self, restart_type, package_id):
+- """This signal is sent when the session client should notify the user
+- that a restart is required to get all changes into effect.
+-
+- :param package_id:
+- The Package ID of the package tiggering the restart
+- :param file_list:
+- One of system, application or session
+- """
+- pklog.debug("Emitting RequireRestart signal: %s, %s",
+- pk.restart_enum_to_string(restart_type), package_id)
+-
+- # METHODS
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="as", out_signature="")
+- def SetHints(self, hints):
+- """This method allows the calling session to set transaction hints
+- for the package manager which can change as the transaction runs.
+-
+- This method can be sent before the transaction has been run or
+- whilst it is running. There is no limit to the number of times
+- this method can be sent, although some backends may only use the
+- values that were set before the transaction was started.
+-
+- Each parameter value is optional.
+-
+- :param hints: The values as an array of strings, for example
+- ['locale=en_GB.utf8','interactive=false','cache-age=3600']
+- """
+- pklog.info("SetHints() was called: %s", get_string_from_array(hints))
+- for hint in hints:
+- key, value = hint.split("=", 1)
+- if key not in ["locale", "idle", "background", "interactive",
+- "cache-age", "frontend-socket"]:
+- raise Exception("Invalid option %s" % key)
+- self.hints[key] = value
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="", out_signature="",
+- sender_keyword="sender")
+- def Cancel(self, sender):
+- """This method cancels a transaction that is already running."""
+- if self.trans:
+- return self.trans._cancel(sender)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tasbb", out_signature="",
+- sender_keyword="sender")
+- def RemovePackages(self, flags, package_ids, allow_deps, autoremove,
+- sender):
+- """This method removes packages from the local system.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be downloading, updating,
+- installing or removing.
+-
+- :param flags: If the transaction should be simulated or prepared
+- :param package_ids: An array of package IDs.
+- :param allow_deps:
+- Either true or false. If true allow other packages to be removed
+- with the package, but false should cause the script to abort if
+- other packages are dependant on the package.
+- :param autoremove:
+- Either true or false. This option is only really interesting on
+- embedded devices with a limited amount of flash storage. It
+- suggests to the packagekit backend that dependencies installed at
+- the same time as the package should also be removed if they are not
+- required by anything else. For instance, if you install OpenOffice,
+- it might download libneon as a dependency. When auto_remove is set
+- to true, and you remove OpenOffice then libneon will also get
+- removed automatically.
+- """
+- pklog.info("RemovePackages() was called: %s, %s",
+- get_string_from_flags(flags),
+- get_string_from_array(package_ids))
+- return self._remove_packages(flags, package_ids, allow_deps,
+- autoremove, sender)
+-
+- @inline_callbacks
+- def _remove_packages(self, flags, package_ids, allow_deps, autoremove,
+- sender):
+- self.role = pk.RoleEnum.REMOVE_PACKAGES
+- self.flags = flags
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_REMOVE_PACKAGES,
+- pkg_ids=package_ids,
+- pkg_type=aptd_enums.PKGS_REMOVE)
+- yield self.trans._set_property(APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+- "RemoveObsoletedDepends", autoremove,
+- sender)
+- # FIXME: Implement allow_deps
+- yield self.trans._run(sender)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def UpdatePackages(self, flags, package_ids, sender):
+- """This method updates existing packages on the local system.
+-
+- The installer should always update extra packages automatically
+- to fulfil dependencies.
+-
+- This should allow an application to find out what package owns a
+- file on the system.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- :param flags:
+- If the transaction is only allowed to install trusted packages.
+- Unsigned packages should not be installed if the flags
+- contains ONLY_TRUSED.
+- If this method is can only install trusted packages, and
+- the packages are unsigned, then the backend will send a
+- ErrorCode(missing-gpg-signature). On recieving this error, the
+- client may choose to retry with ONLY_TRUSTED set after
+- gaining further authentication.
+- : param package_ids: An array of package IDs.
+- """
+- pklog.info("UpdatePackages() was called: %s, %s",
+- get_string_from_flags(flags),
+- get_string_from_array(package_ids))
+- return self._update_packages(flags, package_ids, sender)
+-
+- @inline_callbacks
+- def _update_packages(self, flags, package_ids, sender):
+- self.role = pk.RoleEnum.UPDATE_PACKAGES
+- self.flags = flags
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_UPGRADE_PACKAGES,
+- pkg_ids=package_ids,
+- pkg_type=aptd_enums.PKGS_UPGRADE)
+- yield self.trans._set_property(
+- APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+- "AllowUnauthenticated",
+- not bitfield_contains(flags,
+- pk.TransactionFlagEnum.ONLY_TRUSTED),
+- sender)
+- yield self.trans._run(sender)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="uas", out_signature="",
+- sender_keyword="sender")
+- def InstallPackages(self, flags, package_ids, sender):
+- """This method installs new packages on the local system.
+-
+- The installer should always install extra packages automatically
+- as the use could call GetDepends prior to the install if a
+- confirmation is required in the UI.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be downloading, updating,
+- installing or removing.
+-
+- :param flags:
+- If the transaction is only allowed to install trusted packages.
+- Unsigned packages should not be installed if the flags
+- contains ONLY_TRUSED.
+- If this method is can only install trusted packages, and
+- the packages are unsigned, then the backend will send a
+- ErrorCode(missing-gpg-signature). On recieving this error, the
+- client may choose to retry with ONLY_TRUSTED set after
+- gaining further authentication.
+- : param package_ids: An array of package IDs.
+- """
+- pklog.info("InstallPackages() was called: %s, %s",
+- get_string_from_flags(flags),
+- get_string_from_array(package_ids))
+- return self._install_packages(flags, package_ids, sender)
+-
+- @inline_callbacks
+- def _install_packages(self, flags, package_ids, sender):
+- self.role = pk.RoleEnum.INSTALL_PACKAGES
+- self.flags = flags
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_INSTALL_PACKAGES,
+- pkg_ids=package_ids,
+- pkg_type=aptd_enums.PKGS_INSTALL)
+- yield self.trans._set_property(
+- APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+- "AllowUnauthenticated",
+- not bitfield_contains(flags,
+- pk.TransactionFlagEnum.ONLY_TRUSTED),
+- sender)
+- yield self.trans._run(sender)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="su", out_signature="",
+- sender_keyword="sender")
+- def UpgradeSystem(self, distro_id, upgrade_kind, sender):
+- """This method updates existing packages on the local system.
+-
+- The installer should always update extra packages automatically
+- to fulfil dependencies.
+-
+- This should allow an application to find out what package owns a
+- file on the system.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- :param distro_id: The distribution id to upgrade to, e.g. saucy
+- :param upgrade_kind:
+- The type of upgrade e.g. minimal, default or complete.
+- Minimal upgrades will download the smallest amount of data
+- before launching a installer.
+- The default is to download enough data to launch a full graphical
+- installer, but a complete upgrade will be required if there is no
+- internet access during install time.
+- """
+- pklog.info("UpgradeSystem() was called")
+- GLib.idle_add(self._fail_not_implemented)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="t", out_signature="",
+- sender_keyword="sender")
+- def RepairSystem(self, flags, sender):
+- """This method recovers the package managment system from e.g.
+- unsatisified dependencies of installed packages.
+-
+- :param flags:
+- If the transaction is only allowed to install trusted packages.
+- Unsigned packages should not be installed if the flags
+- contains ONLY_TRUSED.
+- If this method is can only install trusted packages, and
+- the packages are unsigned, then the backend will send a
+- ErrorCode(missing-gpg-signature). On recieving this error, the
+- client may choose to retry with ONLY_TRUSTED set after
+- gaining further authentication.
+- """
+- pklog.info("RepairSystem() was called")
+- return self._repair_system(flags, sender)
+-
+- @inline_callbacks
+- def _repair_system(self, flags, sender):
+- self.role = pk.RoleEnum.REPAIR_SYSTEM
+- self.flags = flags
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_FIX_BROKEN_DEPENDS)
+- yield self.trans._set_property(
+- APTDAEMON_TRANSACTION_DBUS_INTERFACE,
+- "AllowUnauthenticated",
+- not bitfield_contains(flags,
+- pk.TransactionFlagEnum.ONLY_TRUSTED),
+- sender)
+- yield self.trans._run(sender)
+-
+- # pylint: disable-msg=C0103,C0322
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="b", out_signature="",
+- sender_keyword="sender")
+- def RefreshCache(self, force, sender):
+- """This method should fetch updated meta-data for all enabled
+- repositories.
+-
+- When fetching each software source, ensure to emit RepoDetail for
+- the current source to give the user interface some extra details.
+- Be sure to have the "enabled" field set to true, otherwise you
+- wouldn't be fetching that source.
+-
+- This method typically emits Progress, Error and RepoDetail.
+-
+- :param force: If the caches should be cleaned and reloaded even if
+- there is valid, up to date data.
+- """
+- pklog.info("RefreshCache() was called")
+- self.role = pk.RoleEnum.REFRESH_CACHE
+- return self._refresh_cache(force, sender)
+-
+- @inline_callbacks
+- def _refresh_cache(self, force, sender):
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_UPDATE_CACHE,
+- kwargs={"sources_list": None})
+- yield self.trans._run(sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="as", out_signature="",
+- sender_keyword="sender")
+- def GetUpdateDetail(self, package_ids, sender):
+- """This method returns details about a specific update.
+-
+- This method typically emits UpdateDetail and Error
+-
+- :param package_ids: An array of package IDs.
+- """
+- pklog.info("GetUpdateDetail() was called")
+- self.role = pk.RoleEnum.GET_UPDATE_DETAIL
+- kwargs = {"package_ids": package_ids}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="t", out_signature="",
+- sender_keyword="sender")
+- def GetUpdates(self, filter, sender):
+- """This method should return a list of packages that are installed
+- and are upgradable. It should only return the newest update for
+- each installed package.
+-
+- This method typically emits Progress, Error and Package.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- """
+- pklog.info("GetUpdates() was called")
+- self.role = pk.RoleEnum.GET_UPDATES
+- kwargs = {"filters": filter}
+- return self._run_query(kwargs, sender)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="", out_signature="",
+- sender_keyword="sender")
+- def GetDistroUpgrades(self, sender):
+- """This method should return a list of distribution upgrades that are
+- available. It should not return updates, only major upgrades.
+-
+- This method typically emits DistroUpgrade, Error
+- """
+- pklog.info("GetDistroUpgrades() was called")
+- self.role = pk.RoleEnum.GET_DISTRO_UPGRADES
+- self.status = pk.StatusEnum.RUNNING
+- GLib.idle_add(defer_idle, self._get_distro_upgrades)
+-
+- def _get_distro_upgrades(self):
+- # FIXME: Should go into the worker after the threading branch is merged
+- # It allows to run a nested loop until the download is finished
+- self.allow_cancel = False
+- self.percentage = 101
+- self.status = pk.StatusEnum.DOWNLOAD_UPDATEINFO
+-
+- if META_RELEASE_SUPPORT is False:
+- self.ErrorCode(pk.ErrorEnum.INTERNAL_ERROR,
+- "Please make sure that update-manager-core is"
+- "correctly installed.")
+- self.exit = pk.ExitEnum.FAILED
+- return
+-
+- # FIXME Evil to start the download during init
+- meta_release = GMetaRelease()
+- meta_release.connect("download-done",
+- self._on_distro_upgrade_download_done)
+-
+- def _on_distro_upgrade_download_done(self, meta_release):
+- # FIXME: Add support for description
+- if meta_release.new_dist is not None:
+- self.DistroUpgrade("stable",
+- "%s %s" % (meta_release.new_dist.name,
+- meta_release.new_dist.version),
+- "The latest stable release")
+- self.exit = pk.ExitEnum.SUCCESS
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def Resolve(self, filter, packages, sender):
+- """This method turns a single package name into a package_id suitable
+- for the other methods.
+-
+- If the package is a fully formed package_id, then this should be
+- treated as an exact package match. This is useful to find the summary
+- or installed status of a package_id returned from other methods.
+-
+- This method typically emits Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param packages:
+- An array of package names, e.g. scribus-clipart. The package
+- names are case sensitive, so for instance: Resolve('Packagekit')
+- would not match PackageKit. As a special case, if Resolve() is
+- called with a name prefixed with @ then this should be treated as
+- a category, for example: @web-development. In this instance, a
+- meta-package should be emitted, for example:
+- web-development;;;meta with the correct installed status and
+- summary for the category.
+- """
+- pklog.info("Resolve() was called: %s", get_string_from_array(packages))
+- self.role = pk.RoleEnum.RESOLVE
+- kwargs = {"filters": filter, "packages": packages}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="t", out_signature="",
+- sender_keyword="sender")
+- def GetPackages(self, filter, sender):
+- """This method returns all the packages without a search term.
+-
+- This method typically emits Progress, Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- """
+- pklog.info("GetPackages() was called")
+- self.role = pk.RoleEnum.GET_PACKAGES
+- kwargs = {"filters": filter}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="as", out_signature="",
+- sender_keyword="sender")
+- def GetDetails(self, package_ids, sender):
+- """This method should return all the details about a specific
+- package_id.
+-
+- This method typically emits Progress, Status and Error and Details.
+-
+- :param package_ids: An array of package IDs.
+- """
+- pklog.info("GetDetails() was called")
+- self.role = pk.RoleEnum.GET_DETAILS
+- kwargs = {"package_ids": package_ids}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="as", out_signature="",
+- sender_keyword="sender")
+- def GetFiles(self, package_ids, sender):
+- """This method should return the file list of the package_id.
+-
+- This method typically emits Progress, Status and Error and Files.
+-
+- :param package_ids: An array of package IDs.
+- """
+- pklog.info("GetFiles() was called")
+- self.role = pk.RoleEnum.GET_FILES
+- kwargs = {"package_ids": package_ids}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def SearchFiles(self, filter, values, sender):
+- """This method searches for files on the local system and files in
+- available packages.
+-
+- This should search for files. This should allow an application to
+- find out what package owns a file on the system.
+-
+- This method typically emits Progress, Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param values:
+- A filename or fully qualified path and filename on the system.
+- If the search term begins with a / it will be assumed the entire
+- path has been given and only packages that contain this exact
+- path and filename will be returned. If the search term does not
+- start with / then it should be treated as a single filename,
+- which can be in any directory. The search is case sensitive,
+- and should not be escaped or surrounded in quotes.
+- """
+- pklog.info("SearchFiles() was called")
+- self.role = pk.RoleEnum.SEARCH_FILE
+- kwargs = {"filters": filter,
+- "values": values}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def SearchDetails(self, filter, values, sender):
+- """This method allows deeper searching than SearchName().
+-
+- Do not refresh the package cache. This should be fast. This is very
+- similar to search-name. This should search as much data as possible,
+- including, if possible repo names, package summaries, descriptions,
+- licenses and URLs.
+-
+- Try to emit installed before available packages first, as it allows
+- the client program to perform the GUI filtering and matching whilst
+- the daemon is running the transaction.
+-
+- If the backend includes installed and available versions of the same
+- package when searching then the available version will have to be
+- filtered in the backend.
+-
+- This method typically emits Progress, Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param values:
+- A single word search term with no wildcard chars. The search term
+- can contain many words separated by spaces. In this case, the
+- search operator is AND. For example, search of gnome power should
+- returns gnome-power-manager but not gnomesword or powertop.
+- The search should not be treated as case sensitive.
+- """
+- pklog.info("SearchDetails() was called")
+- self.role = pk.RoleEnum.SEARCH_DETAILS
+- kwargs = {"filters": filter,
+- "values": values}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def SearchGroups(self, filter, values, sender):
+- """This method returns packages from a given group enumerated type.
+-
+- Do not refresh the package cache. This should be fast.
+-
+- Try to emit installed before available packages first, as it
+- allows the client program to perform the GUI filtering and matching
+- whilst the daemon is running the transaction.
+-
+- If the backend includes installed and available versions of the same
+- package when searching then the available version will have to be
+- filtered in the backend.
+-
+- This method typically emits Progress, Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param values:
+- An enumerated group type, or unknown. The search cannot contain
+- spaces. The following recommendations are made below: If the values
+- strings are prefixed with category: then the request is treated
+- as a 'category search', for example: category:web-development.
+- repo: then the request is treated as a 'repository search', for
+- example: repo:fedora-debuginfo. In this instance all packages that
+- were either installed from, or can be installed from the
+- fedora-debuginfo source would be returned.
+- """
+- pklog.info("SearchGroups() was called")
+- self.role = pk.RoleEnum.SEARCH_GROUP
+- kwargs = {"filters": filter,
+- "values": values}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def SearchNames(self, filter, values, sender):
+- """This method searches the package database by package name.
+-
+- Try to emit installed before available packages first, as it
+- allows the client program to perform the GUI filtering and matching
+- whilst the daemon is running the transaction.
+-
+- If the backend includes installed and available versions of the same
+- package when searching then the available version will have to be
+- filtered in the backend.
+-
+- The search methods should return all results in all repositories.
+- This may mean that multiple versions of package are returned. If this
+- is not what is wanted by the client program, then the newest filter
+- should be used.
+-
+- This method typically emits Progress, Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param values:
+- A single word search term with no wildcard chars. The search term
+- can contain many words separated by spaces. In this case, the
+- search operator is AND. For example, search of gnome power should
+- returns gnome-power-manager but not gnomesword or powertop.
+- The search should not be treated as case sensitive.
+- """
+- pklog.info("SearchNames() was called")
+- self.role = pk.RoleEnum.SEARCH_NAME
+- kwargs = {"filters": filter,
+- "values": values}
+- return self._run_query(kwargs, sender)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="s", out_signature="",
+- sender_keyword="sender")
+- def AcceptEula(self, eula_id, sender):
+- """This method allows the user to accept a end user licence agreement.
+-
+- :param eula_id: A valid EULA ID
+- """
+- self.role = pk.RoleEnum.ACCEPT_EULA
+- GLib.idle_add(self._fail_not_implemented)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="bas", out_signature="",
+- sender_keyword="sender")
+- def DownloadPackages(self, store_in_cache, package_ids, sender):
+- """This method downloads packages into a temporary directory.
+-
+- This method should emit one Files signal for each package that
+- is downloaded, with the file list set as the name of the complete
+- downloaded file and directory, so for example:
+-
+- DownloadPackages('hal;0.1.2;i386;fedora',
+- 'hal-info;2009-09-07;no-arch;updates') should send two signals,
+- e.g. Files('hal;0.1.2;i386;fedora', '/tmp/hal-0.1.2.i386.rpm')
+- and Files('hal-info;2009-09-07;no-arch;updates',
+- '/tmp/hal-info-2009-09-07.noarch.rpm').
+-
+- :param store_in_cache:
+- If the downloaded files should be stored in the system package
+- cache rather than copied into a newly created directory. See the
+- developer docs for more details on how this is supposed to work.
+- :param package_ids: An array of package IDs.
+- """
+- pklog.info("DownloadPackages() was called: %s",
+- get_string_from_array(package_ids))
+- self.role = pk.RoleEnum.DOWNLOAD_PACKAGES
+- kwargs = {"store_in_cache": store_in_cache,
+- "package_ids": package_ids}
+- return self._run_query(kwargs, sender)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="u", out_signature="",
+- sender_keyword="sender")
+- def GetOldTransactions(self, number, sender):
+- """This method allows a client to view details for old transactions.
+-
+- :param number:
+- The number of past transactions, or 0 for all known transactions.
+- """
+- pklog.info("GetOldTransactions() was called: %s", str(number))
+- self.role = pk.RoleEnum.GET_OLD_TRANSACTIONS
+- GLib.idle_add(self._fail_not_implemented)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="t", out_signature="",
+- sender_keyword="sender")
+- def GetRepoList(self, filter, sender):
+- """This method returns the list of repositories used in the system.
+-
+- This method should emit RepoDetail.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- """
+- pklog.info("GetRepoList() was called")
+- self.role = pk.RoleEnum.GET_REPO_LIST
+- GLib.idle_add(self._fail_not_implemented)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tas", out_signature="",
+- sender_keyword="sender")
+- def InstallFiles(self, flags, full_paths, sender):
+- """This method installs local package files onto the local system.
+-
+- The installer should always install extra dependant packages
+- automatically.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be downloading, updating, installing
+- or removing.
+-
+- :param flags:
+- If the transaction is only allowed to install trusted packages.
+- Unsigned packages should not be installed if the flags
+- contains ONLY_TRUSED.
+- If this method is can only install trusted packages, and
+- the packages are unsigned, then the backend will send a
+- ErrorCode(missing-gpg-signature). On recieving this error, the
+- client may choose to retry with ONLY_TRUSTED set after
+- gaining further authentication.
+- :param full_paths: An array of full path and filenames to packages.
+- """
+- pklog.info("InstallFiles() was called: %s, %s",
+- get_string_from_flags(flags),
+- get_string_from_array(full_paths))
+- return self._install_files(flags, full_paths, sender)
+-
+- @inline_callbacks
+- def _install_files(self, flags, full_paths, sender):
+- self.role = pk.RoleEnum.INSTALL_FILES
+- self.flags = flags
+- # Python-APT only supports installing one file
+- if len(full_paths) != 1:
+- self.ErrorCode(pk.ErrorEnum.NOT_SUPPORTED,
+- "Only one package can be "
+- "installed at the same time.")
+- self.exit = pk.ExitEnum.FAILED
+- raise StopIteration
+- path = full_paths[0]
+- if not os.path.abspath(path):
+- self.ErrorCode(pk.ErrorEnum.NOT_SUPPORTED,
+- "Path is not absolute: %s")
+- self.exit = pk.ExitEnum.FAILED
+- raise StopIteration
+- if not os.path.isfile(path):
+- self.ErrorCode(pk.ErrorEnum.INVALID_PACKAGE_FILE,
+- "File doesn't exist: %s" % path)
+- self.exit = pk.ExitEnum.FAILED
+- raise StopIteration
+-
+- kwargs = {"path": path,
+- "force": True}
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_INSTALL_FILE,
+- kwargs=kwargs)
+- yield self.trans._run(sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="uss", out_signature="",
+- sender_keyword="sender")
+- def InstallSignature(self, sig_type, key_id, package_id, sender):
+- """This method allows us to install new security keys.
+-
+- :param sig_type: A key type, e.g. gpg
+- :param key_id: A key ID, e.g. BB7576AC
+- :param package_id:
+- A PackageID for the package that the user is trying to install
+- (ignored)
+- """
+- pklog.info("InstallSignature() was called: %s", str(key_id))
+- self.role = pk.RoleEnum.INSTALL_SIGNATURE
+- kwargs = {"sig_type": sig_type,
+- "key_id": key_id,
+- "package_id": package_id}
+- return self._run_query(kwargs, sender)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="sss", out_signature="",
+- sender_keyword="sender")
+- def RepoSetData(self, repo_id, parameter, value, sender):
+- """This method allows arbitary data to be passed to the repository
+- handler.
+-
+- :param repo_id:
+- A repository identifier, e.g. fedora-development-debuginfo
+- :param parameter:
+- The backend specific value, e.g. set-download-url.
+- :param value:
+- The backend specific value, e.g. http://foo.bar.org/baz.
+- """
+- pklog.info("RepoSetData() was called: %s, %s, %s",
+- str(repo_id), str(parameter), str(value))
+- self.role = pk.RoleEnum.REPO_SET_DATA
+- GLib.idle_add(self._fail_not_implemented)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="sb", out_signature="",
+- sender_keyword="sender")
+- def RepoEnable(self, repo_id, enabled, sender):
+- """This method enables the repository specified.
+-
+- :param repo_id:
+- A repository identifier, e.g. fedora-development-debuginfo or an
+- apt source ("deb http://... unstable main")
+- :param enabled: true if enabled, false if disabled.
+- """
+- pklog.info("RepoEnable() was called(): %s, %s",
+- str(repo_id), str(enabled))
+- self.role = pk.RoleEnum.REPO_ENABLE
+- kwargs = {"repo_id": repo_id,
+- "enabled": enabled}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tsas", out_signature="",
+- sender_keyword="sender")
+- def WhatProvides(self, filter, type, values, sender):
+- """This method returns packages that provide the supplied attributes.
+- This method is useful for finding out what package(s) provide a
+- modalias or GStreamer codec string.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter:
+- A correct filter, e.g. none or installed;~devel
+- :param type:
+- A PkProvideType, e.g. PK_PROVIDES_ENUM_CODEC.
+- :param values:
+- The data to send to the backend to get the packages. Note: This
+- is backend specific.
+- """
+- pklog.info("WhatProvides() was called")
+- self.role = pk.RoleEnum.WHAT_PROVIDES
+- kwargs = {"filters": filter,
+- "provides_type": type,
+- "values": values}
+- return self._run_query(kwargs, sender)
+-
+- @dbus.service.method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="", out_signature="",
+- sender_keyword="sender")
+- def GetCategories(self, sender):
+- pklog.info("GetCategories() was called")
+- """This method return the collection categories"""
+- self.role = pk.RoleEnum.GET_CATEGORIES
+- GLib.idle_add(self._fail_not_implemented)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tasb", out_signature="",
+- sender_keyword="sender")
+- def GetRequires(self, filter, package_ids, recursive, sender):
+- """This method returns packages that depend on this package. This is
+- useful to know, as if package_id is being removed, we can warn the
+- user what else would be removed.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param package_ids: An array of package IDs.
+- :param recursive:
+- Either true or false. If yes then the requirements should be
+- returned for all packages returned. This means if
+- gnome-power-manager depends on NetworkManager and NetworkManager
+- depends on HAL, then GetRequires on HAL should return both
+- gnome-power-manager and NetworkManager.
+- """
+- pklog.info("GetRequires() was called")
+- self.role = pk.RoleEnum.GET_REQUIRES
+- kwargs = {"filters": filter,
+- "package_ids": package_ids,
+- "recursive": recursive}
+- return self._run_query(kwargs, sender)
+-
+- @dbus_deferred_method(PACKAGEKIT_TRANS_DBUS_INTERFACE,
+- in_signature="tasb", out_signature="",
+- sender_keyword="sender")
+- def GetDepends(self, filter, package_ids, recursive, sender):
+- """This method returns packages that this package depends on.
+-
+- This method typically emits Progress, Status and Error and Package.
+-
+- Package enumerated types should be available or installed.
+-
+- :param filter: A correct filter, e.g. none or installed;~devel
+- :param package_ids: An array of package IDs.
+- :param recursive:
+- Either true or false. If yes then the requirements should be
+- returned for all packages returned. This means if
+- gnome-power-manager depends on NetworkManager and NetworkManager
+- depends on HAL, then GetDepends on gnome-power-manager should
+- return both HAL and NetworkManager.
+- """
+- pklog.info("GetDepends() was called")
+- self.role = pk.RoleEnum.GET_DEPENDS
+- kwargs = {"filters": filter,
+- "package_ids": package_ids,
+- "recursive": recursive}
+- return self._run_query(kwargs, sender)
+-
+- # HELPERS
+-
+- def _fail_not_implemented(self):
+- self.ErrorCode(pk.ErrorEnum.NOT_SUPPORTED, "Unimplemented method")
+- self.exit = pk.ExitEnum.FAILED
+- return False
+-
+- def _get_properties(self, iface):
+- """Helper to get the properties of a D-Bus interface."""
+- if iface == PACKAGEKIT_TRANS_DBUS_INTERFACE:
+- return {"Role": dbus.UInt32(self.role),
+- "Status": dbus.UInt32(self.status),
+- "LastPackage": dbus.String(self.last_package),
+- "Uid": dbus.UInt32(self.uid),
+- "Percentage": dbus.UInt32(self.percentage),
+- "AllowCancel": dbus.Boolean(self.allow_cancel),
+- "CallerActive": dbus.Boolean(self.caller_active),
+- "ElapsedTime": dbus.UInt32(self.elapsed_time),
+- "RemainingTime": dbus.UInt32(self.remaining_time),
+- "DownloadSizeRemaining": dbus.UInt64(
+- self.download_size_remaining),
+- "TransactionFlags": dbus.UInt64(self.flags),
+- "Speed": dbus.UInt32(self.speed)
+- }
+- else:
+- return {}
+-
+- @inline_callbacks
+- def _run_query(self, kwargs, sender):
+- self.trans = self._get_merged_trans(aptd_enums.ROLE_PK_QUERY,
+- kwargs=kwargs)
+- yield self.trans._run(sender)
+-
+- def _get_aptd_package_id(self, pk_id):
+- """Convert a PackageKit Package ID to the apt syntax.
+- e.g. xterm;235;i386;installed to xterm:i386=235
+- """
+- name, version, arch, data = pk_id.split(";")
+- id = name
+- if arch != self.queue.worker.NATIVE_ARCH and arch != "all":
+- id += ":%s" % arch
+- if version:
+- id += "=%s" % version
+- return id
+-
+- def _get_merged_trans(self, role, pkg_ids=None, pkg_type=None,
+- kwargs=None):
+- if pkg_ids:
+- packages = [[], [], [], [], [], []]
+- packages[pkg_type] = [self._get_aptd_package_id(pkg)
+- for pkg in pkg_ids]
+- else:
+- packages = None
+- if self.trans:
+- raise Exception("%s: Transaction may only run once." %
+- pk.ErrorEnum.TRANSACTION_FAILED)
+- trans = MergedTransaction(self, role, self.queue,
+- packages=packages, kwargs=kwargs)
+- try:
+- trans._set_locale(self.hints["locale"])
+- except (KeyError, ValueError):
+- # If the locale isn't vaild or supported a ValueError
+- # will be raised
+- pass
+- try:
+- trans._set_debconf(self.hints["frontend-socket"])
+- except KeyError:
+- pass
+- self.queue.limbo[trans.tid] = trans
+- return trans
+-
+-
+-if META_RELEASE_SUPPORT:
+-
+- class GMetaRelease(GObject.GObject, MetaReleaseCore):
+-
+- __gsignals__ = {"download-done": (GObject.SignalFlags.RUN_FIRST,
+- None,
+- ())}
+-
+- def __init__(self):
+- GObject.GObject.__init__(self)
+- MetaReleaseCore.__init__(self, False, False)
+-
+- def download(self):
+- MetaReleaseCore.download(self)
+- self.emit("download-done")
+-
+-
+-def get_pk_exit_enum(enum):
+- try:
+- return MAP_EXIT_ENUM[enum]
+- except KeyError:
+- return pk.ExitEnum.UNKNOWN
+-
+-
+-def get_pk_status_enum(enum):
+- try:
+- return MAP_STATUS_ENUM[enum]
+- except KeyError:
+- return pk.StatusEnum.UNKNOWN
+-
+-
+-def get_pk_package_enum(enum):
+- try:
+- return MAP_PACKAGE_ENUM[enum]
+- except KeyError:
+- return pk.InfoEnum.UNKNOWN
+-
+-
+-def get_pk_error_enum(enum):
+- try:
+- return MAP_ERROR_ENUM[enum]
+- except KeyError:
+- return pk.ErrorEnum.UNKNOWN
+-
+-
+-def get_pk_package_id(pk_id, data=""):
+- """Convert an AptDaemon package ID to the PackageKit syntax.
+- e.g. xterm:i368=235; to xterm;235;i386;installed
+- """
+- # FIXME add arch support
+- name, version, release = split_package_id(pk_id)
+- try:
+- name, arch = name.split(":", 1)
+- except ValueError:
+- arch = ""
+- if version is None:
+- version = ""
+- if release is None:
+- release = ""
+- return "%s;%s;%s;%s" % (name, version, arch, data or release)
+-
+-
+-def defer_idle(func, *args):
+- func(*args)
+- return False
+-
+-
+-def get_string_from_flags(flags):
+- """Return a human readable string of the applied transaction flags."""
+- ret = ""
+- if flags == pk.TransactionFlagEnum.NONE:
+- return "simulate"
+- if bitfield_contains(flags, pk.TransactionFlagEnum.SIMULATE):
+- ret += " simulate"
+- if bitfield_contains(flags, pk.TransactionFlagEnum.ONLY_DOWNLOAD):
+- ret += " only-download"
+- if bitfield_contains(flags, pk.TransactionFlagEnum.ONLY_TRUSTED):
+- ret += " only-trusted"
+- return ret.strip()
+-
+-
+-def get_string_from_array(array):
+- """Convert a DBus Array to a human readable format"""
+- return [str(value) for value in array]
+-
+-
+-# vim: ts=4 et sts=4
diff --git a/debian/patches/failing-tests.patch b/debian/patches/failing-tests.patch
new file mode 100644
index 0000000..f871fde
--- /dev/null
+++ b/debian/patches/failing-tests.patch
@@ -0,0 +1,85 @@
+Description: Fix tests
+ Various test fixes, and disabling of broken ones
+Author: Julian Andres Klode <julian.klode@canonical.com>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/tests/test_lock.py
++++ b/tests/test_lock.py
+@@ -74,7 +74,7 @@ class LockTest(unittest.TestCase):
+ # Lock!
+ aptdaemon.worker.aptworker.lock.status_lock.acquire()
+ self.assertEqual(2, subprocess.call(self.dpkg_cmd, env=self.env))
+- self.assertEqual(100, subprocess.call(self.apt_cmd, env=self.env,
++ self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ # Relase and all should work again!
+ aptdaemon.worker.aptworker.lock.status_lock.release()
+@@ -105,7 +105,7 @@ class LockTest(unittest.TestCase):
+ # Dpkg and apt-get doen't care about the lock as long as there aren't
+ # any downloads required
+ self.assertEqual(0, subprocess.call(self.dpkg_cmd, env=self.env))
+- self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
++ self.assertEqual(100, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ self.assertEqual(100, subprocess.call(self.inst_cmd, env=self.env,
+ shell=True))
+--- a/tests/test_pep8.py
++++ b/tests/test_pep8.py
+@@ -26,6 +26,7 @@ import subprocess
+ import unittest
+
+
++@unittest.skip("Does not work")
+ class AptDaemonPep8TestCase(unittest.TestCase):
+
+ def test(self):
+--- a/tests/test_pk.py
++++ b/tests/test_pk.py
+@@ -34,6 +34,7 @@ REPO_PATH = os.path.join(aptdaemon.test.
+ DEBUG = True
+
+
++@unittest.skip("Removed PackageKit compat")
+ class PackageKitTest(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the PackageKit compatibility layer."""
+--- a/tests/test_progress.py
++++ b/tests/test_progress.py
+@@ -8,11 +8,17 @@ import mock
+ import sys
+ import unittest
+
++import aptdaemon.test
+ from aptdaemon.progress import DaemonOpenProgress
+
+
+ class TestProgress(unittest.TestCase):
+
++ def setUp(self):
++ self.chroot = aptdaemon.test.Chroot()
++ self.chroot.setup()
++ self.addCleanup(self.chroot.remove)
++
+ def test_open_progress(self):
+ transaction = mock.Mock()
+ begin = 0
+--- a/aptdaemon/test.py
++++ b/aptdaemon/test.py
+@@ -75,6 +75,7 @@ class Chroot(object):
+ os.makedirs(os.path.join(self.path, "etc/apt/apt.conf.d"))
+ os.makedirs(os.path.join(self.path, "etc/apt/sources.list.d"))
+ os.makedirs(os.path.join(self.path, "etc/apt/preferences.d"))
++ os.makedirs(os.path.join(self.path, "etc/apt/trusted.gpg.d"))
+ os.makedirs(os.path.join(self.path, "var/log"))
+ os.makedirs(os.path.join(self.path, "media"))
+
+--- a/tests/test_client.py
++++ b/tests/test_client.py
+@@ -77,6 +77,7 @@ class ClientTest(aptdaemon.test.AptDaemo
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_test_repository()
++ self.chroot.add_trusted_key()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
diff --git a/debian/patches/fix-dependency-solving.patch b/debian/patches/fix-dependency-solving.patch
new file mode 100644
index 0000000..56779fe
--- /dev/null
+++ b/debian/patches/fix-dependency-solving.patch
@@ -0,0 +1,97 @@
+Description: Fix dependency solving
+ The install_protect() method was deprecated ages ago, and there are all
+ sorts of issues here.
+ .
+ So first of all, remove the install_protect() call as it was removed in apt
+ 1.9.
+ .
+ Secondly, do not pass auto_fix=True to mark_install(), as that creates its
+ own solver for each package and solves just that packages dependencies, which
+ causes odd results (the package could no longer be marked for install after
+ calling mark_install if its dependencies cannot be satisfied)
+ .
+ Thirdly, move the whole marking bits below any changes to the candidate
+ version so we actually mark the correct version for install. This worked
+ OK-ish before, because the install_protect() call would re-mark the packages,
+ but ugh, it's just crazy.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+--- a/aptdaemon/worker/aptworker.py
++++ b/aptdaemon/worker/aptworker.py
+@@ -338,7 +338,6 @@ class AptWorker(BaseWorker):
+ def _resolve_depends(self, trans, resolver):
+ """Resolve the dependencies using the given ProblemResolver."""
+ self._call_plugins("modify_cache_before", resolver)
+- resolver.install_protect()
+ try:
+ resolver.resolve()
+ except SystemError:
+@@ -421,9 +420,7 @@ class AptWorker(BaseWorker):
+ raise TransactionFailed(
+ ERROR_PACKAGE_ALREADY_INSTALLED,
+ _("Package %s is already installed"), pkg_name)
+- pkg.mark_install(False, True, from_user)
+- resolver.clear(pkg)
+- resolver.protect(pkg)
++
+ if pkg_ver:
+ try:
+ pkg.candidate = pkg.versions[pkg_ver]
+@@ -434,6 +431,10 @@ class AptWorker(BaseWorker):
+ elif pkg_rel:
+ self._set_candidate_release(pkg, pkg_rel)
+
++ pkg.mark_install(False, False, from_user)
++ resolver.clear(pkg)
++ resolver.protect(pkg)
++
+ def enable_distro_comp(self, trans, component):
+ """Enable given component in the sources list.
+
+@@ -777,10 +778,7 @@ class AptWorker(BaseWorker):
+ _("Package %s isn't installed"),
+ pkg_name)
+ auto = pkg.is_auto_installed
+- pkg.mark_install(False, True, True)
+- pkg.mark_auto(auto)
+- resolver.clear(pkg)
+- resolver.protect(pkg)
++
+ if pkg_ver:
+ if pkg.installed and pkg.installed.version < pkg_ver:
+ # FIXME: We need a new error enum
+@@ -805,6 +803,11 @@ class AptWorker(BaseWorker):
+ "downgrade %s to"),
+ pkg_name)
+
++ pkg.mark_install(False, False, True)
++ pkg.mark_auto(auto)
++ resolver.clear(pkg)
++ resolver.protect(pkg)
++
+ def _mark_packages_for_upgrade(self, packages, resolver):
+ """Mark packages for upgrade."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+@@ -820,10 +823,7 @@ class AptWorker(BaseWorker):
+ _("Package %s isn't installed"),
+ pkg_name)
+ auto = pkg.is_auto_installed
+- pkg.mark_install(False, True, True)
+- pkg.mark_auto(auto)
+- resolver.clear(pkg)
+- resolver.protect(pkg)
++
+ if pkg_ver:
+ if (pkg.installed and
+ apt_pkg.version_compare(pkg.installed.version,
+@@ -849,6 +849,11 @@ class AptWorker(BaseWorker):
+ elif pkg_rel:
+ self._set_candidate_release(pkg, pkg_rel)
+
++ pkg.mark_install(False, False, True)
++ pkg.mark_auto(auto)
++ resolver.clear(pkg)
++ resolver.protect(pkg)
++
+ @staticmethod
+ def _set_candidate_release(pkg, release):
+ """Set the candidate of a package to the one from the given release."""
diff --git a/debian/patches/fix-high-trust-pkcompat.diff b/debian/patches/fix-high-trust-pkcompat.diff
new file mode 100644
index 0000000..6084b5c
--- /dev/null
+++ b/debian/patches/fix-high-trust-pkcompat.diff
@@ -0,0 +1,16 @@
+Index: aptdaemon/aptdaemon/worker/aptworker.py
+===================================================================
+--- aptdaemon.orig/aptdaemon/worker/aptworker.py
++++ aptdaemon/aptdaemon/worker/aptworker.py
+@@ -113,8 +113,10 @@ def trans_only_installs_pkgs_from_high_t
+ # paranoia(2): we must want to install something
+ if not trans.packages[PKGS_INSTALL]:
+ return False
++ # we only care about the name, not the version
++ pkgs = [pkg.split("=")[0] for pkg in trans.packages[PKGS_INSTALL]]
+ # if the install packages matches the whitelisted set we are good
+- return set(trans.packages[PKGS_INSTALL]) == set(trans.high_trust_packages)
++ return set(pkgs) == set(trans.high_trust_packages)
+
+
+ def read_high_trust_repository_dir(whitelist_cfg_d):
diff --git a/debian/patches/fix-installation.patch b/debian/patches/fix-installation.patch
new file mode 100644
index 0000000..c961842
--- /dev/null
+++ b/debian/patches/fix-installation.patch
@@ -0,0 +1,18 @@
+Description: Don't consider the "data" when installing a package - this is usually "Ubuntu" and isn't useful to pass to apt.
+Author: Justin McPherson <justin.mcpherson@canonical.com>
+Forwarded: https://code.launchpad.net/~justinmcp/aptdaemon/1352654/+merge/243354
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/1352654
+
+Index: b/aptdaemon/pkcompat.py
+===================================================================
+--- a/aptdaemon/pkcompat.py
++++ b/aptdaemon/pkcompat.py
+@@ -1904,8 +1904,6 @@
+ id += ":%s" % arch
+ if version:
+ id += "=%s" % version
+- if data and data not in ["local", "installed"]:
+- id += "/%s" % data
+ return id
+
+ def _get_merged_trans(self, role, pkg_ids=None, pkg_type=None,
diff --git a/debian/patches/fix-some-deprecated-code.patch b/debian/patches/fix-some-deprecated-code.patch
new file mode 100644
index 0000000..2cbca09
--- /dev/null
+++ b/debian/patches/fix-some-deprecated-code.patch
@@ -0,0 +1,182 @@
+Description: Fix some deprecated code
+Author: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/1951985
+Last-Update: 2021-11-23
+---
+ aptdaemon/client.py | 52 ++++++++++++++++++++++++++--------------------------
+ aptdaemon/errors.py | 2 +-
+ aptdaemon/gtk3widgets.py | 6 +++---
+ 3 files changed, 30 insertions(+), 30 deletions(-)
+
+diff --git a/aptdaemon/client.py b/aptdaemon/client.py
+index c9fccd2..db032a3 100644
+--- a/aptdaemon/client.py
++++ b/aptdaemon/client.py
+@@ -385,10 +385,10 @@ class AptTransaction(GObject.Object):
+ dependencies before the transaction will be executed.
+ """
+
+- __gsignals__ = {"finished": (GObject.SIGNAL_RUN_FIRST,
++ __gsignals__ = {"finished": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "dependencies-changed": (GObject.SIGNAL_RUN_FIRST,
++ "dependencies-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+@@ -397,37 +397,37 @@ class AptTransaction(GObject.Object):
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT)),
+- "download-changed": (GObject.SIGNAL_RUN_FIRST,
++ "download-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT64,)),
+- "space-changed": (GObject.SIGNAL_RUN_FIRST,
++ "space-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT64,)),
+- "error": (GObject.SIGNAL_RUN_FIRST,
++ "error": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING, GObject.TYPE_STRING)),
+- "role-changed": (GObject.SIGNAL_RUN_FIRST,
++ "role-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "terminal-attached-changed": (GObject.SIGNAL_RUN_FIRST,
++ "terminal-attached-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+- "cancellable-changed": (GObject.SIGNAL_RUN_FIRST,
++ "cancellable-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+- "meta-data-changed": (GObject.SIGNAL_RUN_FIRST,
++ "meta-data-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,)),
+- "status-changed": (GObject.SIGNAL_RUN_FIRST,
++ "status-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "status-details-changed": (GObject.SIGNAL_RUN_FIRST,
++ "status-details-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "progress-changed": (GObject.SIGNAL_RUN_FIRST,
++ "progress-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT,)),
+- "progress-details-changed": (GObject.SIGNAL_RUN_FIRST,
++ "progress-details-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_INT,
+ GObject.TYPE_INT,
+@@ -435,7 +435,7 @@ class AptTransaction(GObject.Object):
+ GObject.TYPE_INT64,
+ GObject.TYPE_INT,
+ GObject.TYPE_INT64)),
+- "progress-download-changed": (GObject.SIGNAL_RUN_FIRST,
++ "progress-download-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING,
+@@ -443,7 +443,7 @@ class AptTransaction(GObject.Object):
+ GObject.TYPE_INT64,
+ GObject.TYPE_INT64,
+ GObject.TYPE_STRING)),
+- "packages-changed": (GObject.SIGNAL_RUN_FIRST,
++ "packages-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+@@ -451,39 +451,39 @@ class AptTransaction(GObject.Object):
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT,
+ GObject.TYPE_PYOBJECT)),
+- "unauthenticated-changed": (GObject.SIGNAL_RUN_FIRST,
++ "unauthenticated-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_PYOBJECT,)),
+- "paused": (GObject.SIGNAL_RUN_FIRST,
++ "paused": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ ()),
+- "resumed": (GObject.SIGNAL_RUN_FIRST,
++ "resumed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ ()),
+- "allow-unauthenticated-changed": (GObject.SIGNAL_RUN_FIRST,
++ "allow-unauthenticated-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+ "remove-obsoleted-depends-changed": (
+- GObject.SIGNAL_RUN_FIRST,
++ GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_BOOLEAN,)),
+- "locale-changed": (GObject.SIGNAL_RUN_FIRST,
++ "locale-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "terminal-changed": (GObject.SIGNAL_RUN_FIRST,
++ "terminal-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "debconf-socket-changed": (GObject.SIGNAL_RUN_FIRST,
++ "debconf-socket-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "http-proxy-changed": (GObject.SIGNAL_RUN_FIRST,
++ "http-proxy-changed": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,)),
+- "medium-required": (GObject.SIGNAL_RUN_FIRST,
++ "medium-required": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING)),
+- "config-file-conflict": (GObject.SIGNAL_RUN_FIRST,
++ "config-file-conflict": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE,
+ (GObject.TYPE_STRING,
+ GObject.TYPE_STRING)),
+diff --git a/aptdaemon/errors.py b/aptdaemon/errors.py
+index 4783179..cd98d6e 100644
+--- a/aptdaemon/errors.py
++++ b/aptdaemon/errors.py
+@@ -174,7 +174,7 @@ def convert_dbus_exception(func):
+ This decorator requires introspection to the decorated function. So it
+ cannot be used on any already decorated method.
+ """
+- argnames, varargs, kwargs, defaults = inspect.getargspec(func)
++ argnames, varargs, kwargs, defaults = inspect.getfullargspec(func)[:4]
+
+ @wraps(func)
+ def _convert_dbus_exception(*args, **kwargs):
+diff --git a/aptdaemon/gtk3widgets.py b/aptdaemon/gtk3widgets.py
+index af9faec..5c99c1d 100644
+--- a/aptdaemon/gtk3widgets.py
++++ b/aptdaemon/gtk3widgets.py
+@@ -562,7 +562,7 @@ class AptProgressDialog(Gtk.Dialog):
+ features a progress bar, cancel button, status icon and label
+ """
+
+- __gsignals__ = {"finished": (GObject.SIGNAL_RUN_FIRST,
++ __gsignals__ = {"finished": (GObject.SignalFlags.RUN_FIRST,
+ GObject.TYPE_NONE, ())}
+
+ def __init__(self, transaction=None, parent=None, terminal=True,
+@@ -1086,8 +1086,8 @@ class AptConfigFileConflictDialog(_ExpandableDialog):
+ return _ExpandableDialog.run(self)
+
+
+-REGEX_RANGE = "^@@ \-(?P<from_start>[0-9]+)(?:,(?P<from_context>[0-9]+))? " \
+- "\+(?P<to_start>[0-9]+)(?:,(?P<to_context>[0-9]+))? @@"
++REGEX_RANGE = "^@@ \\-(?P<from_start>[0-9]+)(?:,(?P<from_context>[0-9]+))? " \
++ "\\+(?P<to_start>[0-9]+)(?:,(?P<to_context>[0-9]+))? @@"
+
+
+ class DiffView(Gtk.TextView):
diff --git a/debian/patches/frontend-locking.patch b/debian/patches/frontend-locking.patch
new file mode 100644
index 0000000..1045124
--- /dev/null
+++ b/debian/patches/frontend-locking.patch
@@ -0,0 +1,56 @@
+Description: Various locking fixes (LP: #1831981)
+ - Implement frontend locking
+ - Adjust locking order to match APT
+ - Use reverse order for unlocking
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1831981
+
+--- a/aptdaemon/lock.py
++++ b/aptdaemon/lock.py
+@@ -118,6 +118,7 @@ apt_pkg.init()
+ #: The lock for dpkg status file
+ _status_dir = os.path.dirname(apt_pkg.config.find_file("Dir::State::status"))
+ status_lock = FileLock(os.path.join(_status_dir, "lock"))
++frontend_lock = FileLock(os.path.join(_status_dir, "lock-frontend"))
+
+ #: The lock for the package archive
+ _archives_dir = apt_pkg.config.find_dir("Dir::Cache::Archives")
+@@ -131,19 +132,25 @@ lists_lock = FileLock(os.path.join(
+ def acquire():
+ """Acquire an exclusive lock for the package management system."""
+ try:
+- for lock in archive_lock, status_lock, lists_lock:
++ for lock in frontend_lock, status_lock, archive_lock, lists_lock:
+ if not lock.locked:
+ lock.acquire()
+ except:
+ release()
+ raise
+
++ os.environ['DPKG_FRONTEND_LOCKED'] = '1'
+
+ def release():
+ """Release an exclusive lock for the package management system."""
+- for lock in archive_lock, status_lock, lists_lock:
++ for lock in lists_lock, archive_lock, status_lock, frontend_lock:
+ lock.release()
+
++ try:
++ del os.environ['DPKG_FRONTEND_LOCKED']
++ except KeyError:
++ pass
++
+
+ def wait_for_lock(trans, alt_lock=None):
+ """Acquire the system lock or the optionally given one. If the lock
+--- a/aptdaemon/worker/aptworker.py
++++ b/aptdaemon/worker/aptworker.py
+@@ -198,6 +198,8 @@ class AptWorker(BaseWorker):
+ apt_pkg.config["DPkg::Options::"] = ("--log=%s/var/log/dpkg.log" %
+ chroot)
+ status_file = apt_pkg.config.find_file("Dir::State::status")
++ lock.frontend_lock.path = os.path.join(os.path.dirname(status_file),
++ "lock-frontend")
+ lock.status_lock.path = os.path.join(os.path.dirname(status_file),
+ "lock")
+ archives_dir = apt_pkg.config.find_dir("Dir::Cache::Archives")
diff --git a/debian/patches/gdk-gtk-versions.py b/debian/patches/gdk-gtk-versions.py
new file mode 100644
index 0000000..ce1e950
--- /dev/null
+++ b/debian/patches/gdk-gtk-versions.py
@@ -0,0 +1,13 @@
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/gtk3widgets.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+@@ -40,6 +40,8 @@ import re
+
+ import gi
+ gi.require_version("Vte", "2.91")
++gi.require_version("Gdk", "3.0")
++gi.require_version("Gtk", "3.0")
+
+ import apt_pkg
+ from gi.repository import GObject
diff --git a/debian/patches/key_value_typo.patch b/debian/patches/key_value_typo.patch
new file mode 100644
index 0000000..b286df1
--- /dev/null
+++ b/debian/patches/key_value_typo.patch
@@ -0,0 +1,18 @@
+Description: Remove trailing comma, was causing a TypeError.
+Author: Justin McPherson <justin.mcpherson@canonical.com>
+Forwarded: https://code.launchpad.net/~justinmcp/aptdaemon/1352654/+merge/243354
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/aptdaemon/+bug/1352654
+=== modified file 'aptdaemon/aptdaemon/worker/aptworker.py'
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/worker/aptworker.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/worker/aptworker.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/worker/aptworker.py
+@@ -1511,7 +1511,7 @@ class AptWorker(BaseWorker):
+ key = "APT::Periodic::AutocleanInterval"
+ return apt_pkg.config.find_i(key, 0)
+ elif option == "UnattendedUpgrade":
+- key = "APT::Periodic::Unattended-Upgrade",
++ key = "APT::Periodic::Unattended-Upgrade"
+ return apt_pkg.config.find_b(key, False)
+ elif option == "GetPopconParticipation":
+ return self._get_popcon_pariticipation()
diff --git a/debian/patches/lintian_deprecated_error.patch b/debian/patches/lintian_deprecated_error.patch
new file mode 100644
index 0000000..a9b0309
--- /dev/null
+++ b/debian/patches/lintian_deprecated_error.patch
@@ -0,0 +1,20 @@
+Description: don't list deprecated lintian case
+Author: Sebastien Bacher <seb128@ubuntu.com>
+Forwarded: https://code.launchpad.net/~seb128/aptdaemon/lintian-upx-deprecated/+merge/272924
+Bug-Ubuntu: https://launchpad.net/bugs/1490169
+=== modified file 'aptdaemon/data/lintian/ubuntu/aptdaemon.profile'
+Index: aptdaemon-1.1.1+bzr982/data/lintian/ubuntu/aptdaemon.profile
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/data/lintian/ubuntu/aptdaemon.profile
++++ aptdaemon-1.1.1+bzr982/data/lintian/ubuntu/aptdaemon.profile
+@@ -5,9 +5,8 @@ Disable-Tags:
+ FSSTND-dir-in-usr,
+ FSSTND-dir-in-var,
+ arch-dependent-file-in-usr-share,
+- binary-file-compressed-with-upx,
+ binary-or-shlib-defines-rpath,
+- control-interpreter-in-usr-local,
++ control-interpreter-in-usr-local,
+ copyright-contains-dh_make-todo-boilerplate,
+ copyright-file-compressed,
+ copyright-file-is-symlink,
diff --git a/debian/patches/lock-is-held-typo.patch b/debian/patches/lock-is-held-typo.patch
new file mode 100644
index 0000000..5220b7d
--- /dev/null
+++ b/debian/patches/lock-is-held-typo.patch
@@ -0,0 +1,15 @@
+Description: Fix typo hold vs held.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+Last-Update: 2019-06-21
+
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/lock.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/lock.py
+@@ -45,7 +45,7 @@ class LockFailedError(Exception):
+ """
+ msg = "Could not acquire lock on %s." % flock
+ if process:
+- msg += " The lock is hold by %s." % process
++ msg += " The lock is held by %s." % process
+ Exception.__init__(self, msg)
+ self.flock = flock
+ self.process = process
diff --git a/debian/patches/lp1153725-temporary-workaround.patch b/debian/patches/lp1153725-temporary-workaround.patch
new file mode 100644
index 0000000..8332058
--- /dev/null
+++ b/debian/patches/lp1153725-temporary-workaround.patch
@@ -0,0 +1,25 @@
+Description: Skip expected failures due to LP: #1153725.
+ Remove this when the actual bug is fixed or when we have a better patch.
+Author: Barry Warsaw <barry@ubuntu.com>
+Forwarded: not-needed
+
+Index: aptdaemon-1.0/tests/test_high_trust_repository_whitelist.py
+===================================================================
+--- aptdaemon-1.0.orig/tests/test_high_trust_repository_whitelist.py 2013-03-18 14:24:18.377381909 +0100
++++ aptdaemon-1.0/tests/test_high_trust_repository_whitelist.py 2013-03-18 14:24:43.493382864 +0100
+@@ -72,6 +72,7 @@
+ self.worker.connect("transaction-simulated",
+ lambda w, t: self.loop.quit())
+
++ @unittest.expectedFailure
+ def test_read_high_trust_repository_whitelist_dir(self):
+ whitelist = read_high_trust_repository_dir(
+ os.path.join(aptdaemon.test.get_tests_dir(),
+@@ -167,6 +168,7 @@
+ self.start_fake_polkitd(PK_ACTION)
+ time.sleep(1)
+
++ @unittest.expectedFailure
+ def test_high_trust_polkit_ok(self):
+ self.client = aptdaemon.client.AptClient(self.bus)
+ # test that the high trust whitelist works
diff --git a/debian/patches/lp1356823.diff b/debian/patches/lp1356823.diff
new file mode 100644
index 0000000..db7efb4
--- /dev/null
+++ b/debian/patches/lp1356823.diff
@@ -0,0 +1,13 @@
+=== modified file 'aptdaemon/pkcompat.py'
+--- old/aptdaemon/pkcompat.py 2014-06-26 07:07:15 +0000
++++ new/aptdaemon/pkcompat.py 2015-04-16 15:04:08 +0000
+@@ -586,6 +586,8 @@
+
+ def _remove_from_connection_no_raise(self):
+ core.Transaction._remove_from_connection_no_raise(self)
++ if self.pktrans is None:
++ return False
+ self.pktrans.Destroy()
+ try:
+ self.pktrans.remove_from_connection()
+
diff --git a/debian/patches/lp1439769-aptdaemon-autoinstall.patch b/debian/patches/lp1439769-aptdaemon-autoinstall.patch
new file mode 100644
index 0000000..91120c9
--- /dev/null
+++ b/debian/patches/lp1439769-aptdaemon-autoinstall.patch
@@ -0,0 +1,50 @@
+Description: Take a flag to indicate whether a requested package is auto-installed
+ The aptdaemon API takes a complete list of packages to be installed,
+ including dependencies. This means that all packages are marked as
+ "selected" by the "user" for installation, even if on the other end of the
+ API they were selected for installation only to resolve dependencies of
+ other packages.
+ .
+ This patch adds an optional "auto" flag to the list of packages passed from
+ the client, so that aptdaemon can pass this information on to apt.
+Author: Michael Vogt <mvo@ubuntu.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1439769
+
+=== modified file 'aptdaemon/core.py'
+Index: wily/aptdaemon/core.py
+===================================================================
+--- wily.orig/aptdaemon/core.py
++++ wily/aptdaemon/core.py
+@@ -2069,6 +2069,10 @@ class AptDaemon(DBusObject):
+ """
+ for fullname in pkg_names:
+ name, version, release = split_package_id(fullname)
++ name, sep, auto_flag = name.partition("#")
++ if not auto_flag in ("", "auto"):
++ raise errors.AptDaemonError("%s isn't a valid flag" %
++ auto_flag)
+ if not re.match(REGEX_VALID_PACKAGENAME, name):
+ raise errors.AptDaemonError("%s isn't a valid package name" %
+ name)
+Index: wily/aptdaemon/worker/aptworker.py
+===================================================================
+--- wily.orig/aptdaemon/worker/aptworker.py
++++ wily/aptdaemon/worker/aptworker.py
+@@ -388,6 +388,8 @@ class AptWorker(BaseWorker):
+ """Mark packages for installation."""
+ for pkg_name, pkg_ver, pkg_rel in [self._split_package_id(pkg)
+ for pkg in packages]:
++ pkg_name, sep, auto_marker = pkg_name.partition("#")
++ from_user = (auto_marker != "auto")
+ try:
+ pkg = self._cache[pkg_name]
+ except KeyError:
+@@ -417,7 +419,7 @@ class AptWorker(BaseWorker):
+ raise TransactionFailed(
+ ERROR_PACKAGE_ALREADY_INSTALLED,
+ _("Package %s is already installed"), pkg_name)
+- pkg.mark_install(False, True, True)
++ pkg.mark_install(False, True, from_user)
+ resolver.clear(pkg)
+ resolver.protect(pkg)
+ if pkg_ver:
diff --git a/debian/patches/lp1449587.diff b/debian/patches/lp1449587.diff
new file mode 100644
index 0000000..16f82b6
--- /dev/null
+++ b/debian/patches/lp1449587.diff
@@ -0,0 +1,363 @@
+=== modified file 'aptdaemon/core.py'
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/core.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/core.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/aptdaemon/core.py 2015-06-11 09:18:21.906695457 -0400
+@@ -324,7 +324,7 @@
+ "DebconfSocket", "MetaData", "Locale",
+ "RemoveObsoleteDepends")
+
+- def __init__(self, tid, role, queue, pid, uid, cmdline, sender,
++ def __init__(self, tid, role, queue, pid, uid, gid, cmdline, sender,
+ connect=True, bus=None, packages=None, kwargs=None):
+ """Initialize a new Transaction instance.
+
+@@ -360,6 +360,7 @@
+ kwargs = {}
+ self.queue = queue
+ self.uid = uid
++ self.gid = gid
+ self.locale = dbus.String("")
+ self.allow_unauthenticated = dbus.Boolean(False)
+ self.remove_obsoleted_depends = dbus.Boolean(False)
+@@ -1521,11 +1522,12 @@
+ @inline_callbacks
+ def _create_trans(self, role, sender, packages=None, kwargs=None):
+ """Helper method which returns the tid of a new transaction."""
+- pid, uid, cmdline = (
++ pid, uid, gid, cmdline = (
+ yield policykit1.get_proc_info_from_dbus_name(sender, self.bus))
+ tid = uuid.uuid4().hex
+- trans = Transaction(tid, role, self.queue, pid, uid, cmdline, sender,
+- packages=packages, kwargs=kwargs, bus=self.bus)
++ trans = Transaction(
++ tid, role, self.queue, pid, uid, gid, cmdline, sender,
++ packages=packages, kwargs=kwargs, bus=self.bus)
+ self.queue.limbo[trans.tid] = trans
+ return_value(trans.tid)
+
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/pkcompat.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/pkcompat.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/aptdaemon/pkcompat.py 2015-06-11 09:18:21.910695506 -0400
+@@ -334,9 +334,10 @@
+
+ @inline_callbacks
+ def _create_transaction(self, sender):
+- pid, uid, cmdline = yield policykit1.get_proc_info_from_dbus_name(
++ pid, uid, gid, cmdline = yield policykit1.get_proc_info_from_dbus_name(
+ sender, self.bus)
+- pktrans = PackageKitTransaction(pid, uid, cmdline, self.queue, sender)
++ pktrans = PackageKitTransaction(
++ pid, uid, gid, cmdline, self.queue, sender)
+ return_value(pktrans.tid)
+
+ # pylint: disable-msg=C0103,C0322
+@@ -468,7 +469,7 @@
+ def __init__(self, pktrans, role, queue, connect=True,
+ bus=None, packages=None, kwargs=None):
+ core.Transaction.__init__(self, pktrans.tid[1:], role, queue,
+- pktrans.pid, pktrans.uid,
++ pktrans.pid, pktrans.uid, pktrans.gid,
+ pktrans.cmdline, pktrans.sender,
+ connect, bus, packages, kwargs)
+ self.pktrans = pktrans
+@@ -626,7 +627,7 @@
+
+ """Provides a PackageKit transaction object."""
+
+- def __init__(self, pid, uid, cmdline, queue, sender,
++ def __init__(self, pid, uid, gid, cmdline, queue, sender,
+ connect=True, bus=None):
+ pklog.info("Initializing PackageKit transaction")
+ bus_name = None
+@@ -652,6 +653,7 @@
+ self._status = pk.StatusEnum.SETUP
+ self._last_package = ""
+ self.uid = dbus.UInt32(uid)
++ self.gid = dbus.UInt32(gid)
+ self.pid = pid
+ self.cmdline = cmdline
+ self.role = pk.RoleEnum.UNKNOWN
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/policykit1.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/policykit1.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/aptdaemon/policykit1.py 2015-06-11 09:18:21.910695506 -0400
+@@ -161,12 +161,15 @@
+ bus = dbus.SystemBus()
+ pid = yield get_pid_from_dbus_name(dbus_name, bus)
+ with open("/proc/%s/status" % pid) as proc:
+- values = [v for v in proc.readlines() if v.startswith("Uid:")]
++ lines = proc.readlines()
++ uid_values = [v for v in lines if v.startswith("Uid:")]
++ gid_values = [v for v in lines if v.startswith("Gid:")]
+ # instead of ", encoding='utf8'" we use the "rb"/decode() here for
+ # py2 compatibility
+ with open("/proc/%s/cmdline" % pid, "rb") as cmdline_file:
+ cmdline = cmdline_file.read().decode("utf-8")
+- uid = int(values[0].split()[1])
+- return_value((pid, uid, cmdline))
++ uid = int(uid_values[0].split()[1])
++ gid = int(gid_values[0].split()[1])
++ return_value((pid, uid, gid, cmdline))
+
+ # vim:ts=4:sw=4:et
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/progress.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/progress.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/aptdaemon/progress.py 2015-06-11 09:18:21.910695506 -0400
+@@ -628,6 +628,11 @@
+
+ def _child(self, path):
+ # Avoid running lintian as root
++ try:
++ os.setgroups([self.transaction.gid])
++ except OSError:
++ pass
++ os.setgid(self.transaction.gid)
+ os.setuid(self.transaction.uid)
+
+ if platform.dist()[1] == "debian":
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/worker/aptworker.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/worker/aptworker.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/aptdaemon/worker/aptworker.py 2015-06-11 09:18:21.910695506 -0400
+@@ -91,6 +91,25 @@
+ """
+
+
++@contextlib.contextmanager
++def set_euid_egid(uid, gid):
++ # no need to drop privs
++ if os.getuid() != 0 and os.getgid() != 0:
++ yield
++ return
++ # temporary drop privs
++ os.setegid(gid)
++ old_groups = os.getgroups()
++ os.setgroups([gid])
++ os.seteuid(uid)
++ try:
++ yield
++ finally:
++ os.seteuid(os.getuid())
++ os.setegid(os.getgid())
++ os.setgroups(old_groups)
++
++
+ def trans_only_installs_pkgs_from_high_trust_repos(trans,
+ whitelist=set()):
+ """Return True if this transaction only touches packages in the
+@@ -1199,8 +1218,16 @@
+
+ :returns: An apt.debfile.Debfile instance.
+ """
+- if not os.path.isfile(path):
+- raise TransactionFailed(ERROR_UNREADABLE_PACKAGE_FILE, path)
++ # This code runs as root for simulate and simulate requires no
++ # authentication - so we need to ensure we do not leak information
++ # about files here (LP: #1449587, CVE-2015-1323)
++ #
++ # Note that the actual lintian run is also droping privs (real,
++ # not just seteuid)
++ with set_euid_egid(trans.uid, trans.gid):
++ if not os.path.isfile(path):
++ raise TransactionFailed(ERROR_UNREADABLE_PACKAGE_FILE, path)
++
+ if not force and os.path.isfile("/usr/bin/lintian"):
+ with DaemonLintianProgress(trans) as progress:
+ progress.run(path)
+Index: aptdaemon-1.1.1+bzr982/tests/test_high_trust_repository_whitelist.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/tests/test_high_trust_repository_whitelist.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/tests/test_high_trust_repository_whitelist.py 2015-06-11 09:18:21.910695506 -0400
+@@ -115,7 +115,7 @@
+ ("Ubuntu", "", "silly.*"))
+ # a high-trust whitelisted pkg and a non-whitelisted one
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base", "other-pkg"], [], [], [],
+ [], []])
+@@ -127,7 +127,7 @@
+ trans, self.worker._high_trust_repositories))
+ # whitelisted only
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ self.worker.simulate(trans)
+Index: aptdaemon-1.1.1+bzr982/tests/test_worker.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/tests/test_worker.py 2015-06-11 09:18:21.910695506 -0400
++++ aptdaemon-1.1.1+bzr982/tests/test_worker.py 2015-06-11 09:18:21.910695506 -0400
+@@ -77,7 +77,8 @@
+ self.chroot.add_repository("/does/not/exist", copy_list=False)
+ # Only update the repository from the working snippet
+ trans = Transaction(None, enums.ROLE_UPDATE_CACHE,
+- self.queue, os.getpid(), os.getuid(), sys.argv[0],
++ self.queue, os.getpid(), os.getuid(),
++ os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"sources_list": "test.list"})
+ self.worker.simulate(trans)
+@@ -99,7 +100,7 @@
+ "silly-base_0.1-0_all.deb"))
+ # Install the package
+ trans = Transaction(None, enums.ROLE_UPGRADE_SYSTEM,
+- self.queue, os.getpid(),
++ self.queue, os.getpid(), os.getgid(),
+ os.getuid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"safe_mode": False})
+@@ -130,7 +131,7 @@
+ self.chroot.add_test_repository(copy_sig=False)
+ # Install the package
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ self.worker.simulate(trans)
+@@ -144,7 +145,7 @@
+
+ # Allow installation of unauthenticated packages
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ trans.allow_unauthenticated = True
+@@ -164,7 +165,7 @@
+ self.chroot.add_test_repository()
+ # Install the package
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-depend-base"], [], [], [],
+ [], []])
+@@ -193,7 +194,7 @@
+ Architecture: all
+ Auto-Installed: 1""")
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-depend-base"], [],
+ [], []])
+@@ -219,7 +220,7 @@
+ "silly-depend-base_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-base"], [], [], []])
+ self.worker.simulate(trans)
+@@ -240,7 +241,7 @@
+ pass
+ # Don't allow to remove essential packages
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-essential"], [], [], []])
+ self.worker.run(trans)
+@@ -263,7 +264,7 @@
+ Architecture: all
+ Auto-Installed: 1""")
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], [],
+ ["silly-base=0.1-0update1"], []])
+@@ -283,7 +284,7 @@
+ pkg = os.path.join(REPO_PATH, "silly-base_0.1-0update1_all.deb")
+ self.chroot.install_debfile(pkg)
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], [], [],
+ ["silly-base=0.1-0"]])
+@@ -301,7 +302,7 @@
+ for pkg in ["silly-base_0.1-0_all.deb", "silly-config_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], ["silly-config"], [], []])
+ self.worker.run(trans)
+@@ -324,7 +325,7 @@
+ pkg = os.path.join(REPO_PATH,
+ "silly-depend-base-lintian-broken_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": False})
+@@ -359,7 +360,7 @@
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg_base))
+ pkg = os.path.join(REPO_PATH, "silly-bully_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": True})
+@@ -379,7 +380,7 @@
+ """
+ pkg = os.path.join(REPO_PATH, "silly-base_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": True})
+@@ -400,7 +401,7 @@
+ for pkg in ["silly-base_0.1-0_all.deb", "silly-broken_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+ trans = Transaction(None, enums.ROLE_FIX_BROKEN_DEPENDS, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False)
+ self.worker.simulate(trans)
+ self.loop.run()
+@@ -420,7 +421,7 @@
+ """
+ self.chroot.add_test_repository()
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test",
+ packages=[["silly-broken"], [], [], [], [], []],
+ connect=False)
+@@ -459,7 +460,7 @@
+
+ self.chroot.add_test_repository()
+ trans = Transaction(None, enums.ROLE_ADD_LICENSE_KEY, self.queue,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test",
+ kwargs={"pkg_name": "silly-license",
+ "json_token": "lalelu",
+Index: aptdaemon-1.1.1+bzr982/tests/_test_py2_string_handling.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/tests/_test_py2_string_handling.py 2012-12-29 18:40:46.000000000 -0500
++++ aptdaemon-1.1.1+bzr982/tests/_test_py2_string_handling.py 2015-06-11 09:47:02.608070571 -0400
+@@ -49,7 +49,8 @@
+ self.start_dbus_daemon()
+ self.dbus = dbus.bus.BusConnection(self.dbus_address)
+ self.trans = Transaction(None, "role-test", None,
+- os.getpid(), os.getuid(), sys.argv[0],
++ os.getpid(), os.getuid(), os.getgid(),
++ sys.argv[0],
+ "org.debian.apt.test", bus=self.dbus)
+
+ def test(self):
diff --git a/debian/patches/lp1487087.diff b/debian/patches/lp1487087.diff
new file mode 100644
index 0000000..fdab301
--- /dev/null
+++ b/debian/patches/lp1487087.diff
@@ -0,0 +1,21 @@
+Description: .assert_called() is not a valid mock method, and its presence
+ masks a failing test. Under Python 3.5, an AttributeError is raised whereas
+ in earlier Python's this just silently passed. Since the intent of the test
+ can't be determined, for now just skip it. We don't use @unittest.skip
+ though because there is apparently some test leakage, so that if this entire
+ test is skipped, other tests fail.
+Author: Barry Warsaw <barry@ubuntu.com>
+Bug: https://bugs.launchpad.net/aptdaemon/+bug/1487087
+
+--- a/tests/test_high_trust_repository_whitelist.py
++++ b/tests/test_high_trust_repository_whitelist.py
+@@ -96,7 +96,8 @@
+ "data/high-trust-repository-whitelist-broken.cfg"))
+ self.assertEqual(whitelist, set())
+ # ensure we log a error if the config file is broken
+- mock_log.error.assert_called()
++ # Skip due to LP: #1487087
++ #mock_log.error.assert_called()
+
+ @patch("aptdaemon.worker.log")
+ def test_read_high_trust_repository_whitelist_not_there(self, mock_log):
diff --git a/debian/patches/lp1623856-window-height.patch b/debian/patches/lp1623856-window-height.patch
new file mode 100644
index 0000000..a042895
--- /dev/null
+++ b/debian/patches/lp1623856-window-height.patch
@@ -0,0 +1,15 @@
+Description: Set the minimum scrolled window height
+Author: Martin Wimpress
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/1623856
+
+=== modified file 'aptdaemon/gtk3widgets.py'
+--- a/aptdaemon/gtk3widgets.py
++++ b/aptdaemon/gtk3widgets.py
+@@ -338,6 +338,7 @@
+ self.download_scrolled.set_policy(Gtk.PolicyType.NEVER,
+ Gtk.PolicyType.AUTOMATIC)
+ self.download_scrolled.add(self.download_view)
++ self.download_scrolled.set_min_content_height(200)
+ hbox = Gtk.HBox()
+ hbox.pack_start(self.download_scrolled, True, True, 0)
+ if self.terminal:
diff --git a/debian/patches/lp1689668-config-file-window.patch b/debian/patches/lp1689668-config-file-window.patch
new file mode 100644
index 0000000..15d05c5
--- /dev/null
+++ b/debian/patches/lp1689668-config-file-window.patch
@@ -0,0 +1,13 @@
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/gtk3widgets.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+@@ -1066,7 +1066,7 @@ class AptConfigFileConflictDialog(_Expan
+ "the configuration file?") % from_path
+ msg = _("If you don't know why the file is there already, it is "
+ "usually safe to replace it.")
+- scrolled = Gtk.ScrolledWindow()
++ scrolled = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+ scrolled.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
+ self.diffview = DiffView()
diff --git a/debian/patches/lp1690541-details-open-twice.patch b/debian/patches/lp1690541-details-open-twice.patch
new file mode 100644
index 0000000..329515f
--- /dev/null
+++ b/debian/patches/lp1690541-details-open-twice.patch
@@ -0,0 +1,12 @@
+Index: aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+===================================================================
+--- aptdaemon-1.1.1+bzr982.orig/aptdaemon/gtk3widgets.py
++++ aptdaemon-1.1.1+bzr982/aptdaemon/gtk3widgets.py
+@@ -395,6 +395,7 @@ class AptTerminal(Vte.Terminal):
+ self._master, self._slave = pty.openpty()
+ self._ttyname = os.ttyname(self._slave)
+ self.set_size(80, 24)
++ self.set_vexpand(True)
+ self.set_pty(Vte.Pty.new_foreign_sync(self._master))
+ if transaction is not None:
+ self.set_transaction(transaction)
diff --git a/debian/patches/native-arch.patch b/debian/patches/native-arch.patch
new file mode 100644
index 0000000..a0c37fa
--- /dev/null
+++ b/debian/patches/native-arch.patch
@@ -0,0 +1,17 @@
+Description: Fix NATIVE_ARCH not being defined
+Author: Justin McPherson <justin.mcpherson@canonical.com>
+Forwarded: https://code.launchpad.net/~justinmcp/aptdaemon/1352654/+merge/243354
+
+Index: b/aptdaemon/pkcompat.py
+===================================================================
+--- a/aptdaemon/pkcompat.py
++++ b/aptdaemon/pkcompat.py
+@@ -392,7 +392,7 @@
+ distro, version, _codename = platform.dist()
+ self._distro_id = "%s;%s;%s" % (distro or "unknown",
+ version or "unknown",
+- NATIVE_ARCH)
++ self.queue.worker.NATIVE_ARCH)
+ return self._distro_id
+
+ def _on_network_state_changed(self, mon, state):
diff --git a/debian/patches/pep8-accommodations.diff b/debian/patches/pep8-accommodations.diff
new file mode 100644
index 0000000..68ee5e4
--- /dev/null
+++ b/debian/patches/pep8-accommodations.diff
@@ -0,0 +1,35 @@
+Description: Various accommodations so that the PEP 8 tests don't cause
+ autopkgtests to fail. These include fixing the --exclude argument, adding
+ more files to the exclude pattern, and ignoring E402, which is bogus; see
+ https://github.com/PyCQA/pep8/issues/394. I also fixed one legitimate
+ looking violation.
+Author: Barry Warsaw <barry@ubuntu.com>
+Bug: https://bugs.launchpad.net/aptdaemon/+bug/1486646
+
+--- a/tests/test_pep8.py
++++ b/tests/test_pep8.py
+@@ -30,9 +30,11 @@
+
+ def test(self):
+ """Check if the source code matches the PEP8 style conventions."""
+- subprocess.check_call(["pep8", "--statistics", "--show-source",
+- "--show-pep8", "--exclude", "pkenums.py",
+- "aptdaemon", "tests"])
++ subprocess.check_call([
++ "pep8", "--statistics", "--show-source",
++ "--show-pep8", "--exclude",
++ "pkenums.py,aptdaemon,tests,debian,doc,.pc,gtk3-demo.py,setup.py",
++ "--ignore=E402"])
+
+
+ if __name__ == "__main__":
+--- a/apport/aptdaemon.py
++++ b/apport/aptdaemon.py
+@@ -28,6 +28,7 @@
+
+ apt_pkg.init()
+
++
+ def add_info(report):
+ """Collect and append additional information about a crash.
+
diff --git a/debian/patches/pk-debconf-helper.patch b/debian/patches/pk-debconf-helper.patch
new file mode 100644
index 0000000..9e672c7
--- /dev/null
+++ b/debian/patches/pk-debconf-helper.patch
@@ -0,0 +1,40 @@
+Description: Use PackageKit debconf socket
+Author: Julian Andres Klode <julian.klode@canonical.com>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1726068
+Last-Update: 2019-05-24 <YYYY-MM-DD, last update of the meta-information, optional>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/aptdaemon/client.py
++++ b/aptdaemon/client.py
+@@ -888,6 +888,16 @@ class AptTransaction(GObject.Object):
+ _reply_handler = lambda: reply_handler(self)
+ else:
+ _reply_handler = None
++
++ pk_socket = "/run/user/%d/pk-debconf-socket" % os.getuid()
++ if os.path.exists(pk_socket):
++ self._proxy.Set("org.debian.apt.transaction", "DebconfSocket",
++ pk_socket,
++ dbus_interface=dbus.PROPERTIES_IFACE,
++ reply_handler=_reply_handler,
++ error_handler=error_handler)
++ return
++
+ self._debconf_helper = debconf.DebconfProxy(frontend)
+ self._proxy.Set("org.debian.apt.transaction", "DebconfSocket",
+ self._debconf_helper.socket_path,
+--- a/aptdaemon/core.py
++++ b/aptdaemon/core.py
+@@ -368,7 +368,11 @@ class Transaction(DBusObject):
+ self.pid = pid
+ self.http_proxy = dbus.String("")
+ self.terminal = dbus.String("")
+- self.debconf = dbus.String("")
++ pk_socket = "/run/user/%d/pk-debconf-socket" % self.uid
++ if os.path.exists(pk_socket):
++ self.debconf = dbus.String(pk_socket)
++ else:
++ self.debconf = dbus.String("")
+ self.kwargs = kwargs
+ self._translation = None
+ # The transaction which should be executed after this one
diff --git a/debian/patches/pk1.1.1_compat.patch b/debian/patches/pk1.1.1_compat.patch
new file mode 100644
index 0000000..a744413
--- /dev/null
+++ b/debian/patches/pk1.1.1_compat.patch
@@ -0,0 +1,29 @@
+From: Michael Vogt <mvo@ubuntu.com>
+Subject: Remove API that is no longer available in PK 1.1.1
+
+---
+ aptdaemon/worker/pkworker.py | 6 ------
+ 1 file changed, 6 deletions(-)
+
+--- a/aptdaemon/worker/pkworker.py
++++ b/aptdaemon/worker/pkworker.py
+@@ -172,8 +172,6 @@
+ pk.RoleEnum.GET_UPDATE_DETAIL,
+ pk.RoleEnum.GET_PACKAGES,
+ pk.RoleEnum.GET_DETAILS,
+- pk.RoleEnum.GET_DEPENDS,
+- pk.RoleEnum.GET_REQUIRES,
+ pk.RoleEnum.SEARCH_NAME,
+ pk.RoleEnum.SEARCH_DETAILS,
+ pk.RoleEnum.SEARCH_GROUP,
+@@ -289,10 +287,6 @@
+ self.search_details(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.SEARCH_FILE:
+ self.search_files(trans, **trans.kwargs)
+- elif trans.pktrans.role == pk.RoleEnum.GET_DEPENDS:
+- self.get_depends(trans, **trans.kwargs)
+- elif trans.pktrans.role == pk.RoleEnum.GET_REQUIRES:
+- self.get_requires(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.GET_DETAILS:
+ self.get_details(trans, **trans.kwargs)
+ elif trans.pktrans.role == pk.RoleEnum.DOWNLOAD_PACKAGES:
diff --git a/debian/patches/py3_inheritable.patch b/debian/patches/py3_inheritable.patch
new file mode 100644
index 0000000..f642733
--- /dev/null
+++ b/debian/patches/py3_inheritable.patch
@@ -0,0 +1,14 @@
+=== modified file 'aptdaemon/progress.py'
+--- a/aptdaemon/progress.py 2014-02-07 20:40:15 +0000
++++ b/aptdaemon/progress.py 2014-04-11 11:58:33 +0000
+@@ -395,6 +395,9 @@
+ self.last_activity = 0
+ self.child_pid = 0
+ self.status_parent_fd, self.status_child_fd = os.pipe()
++ if hasattr(os, "set_inheritable"):
++ os.set_inheritable(self.status_parent_fd, True)
++ os.set_inheritable(self.status_child_fd, True)
+ self.output = ""
+ self._line_buffer = ""
+
+
diff --git a/debian/patches/python3.7-compat.patch b/debian/patches/python3.7-compat.patch
new file mode 100644
index 0000000..867c6d2
--- /dev/null
+++ b/debian/patches/python3.7-compat.patch
@@ -0,0 +1,53 @@
+Description: do not use 'async' as a variable name
+ It is a keyword in Python 3.7.
+Author: Michael Hudson-Doyle <michael.hudson@ubuntu.com>
+Origin: vendor
+Last-Update: 2018-08-02
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/aptdaemon/client.py
++++ b/aptdaemon/client.py
+@@ -1567,17 +1567,17 @@
+
+ def _run_transaction(self, method_name, args, wait, reply_handler,
+ error_handler):
+- async = reply_handler and error_handler
++ async_ = reply_handler and error_handler
+ try:
+ deferred = self._run_transaction_helper(method_name, args, wait,
+- async)
++ async_)
+ except Exception as error:
+- if async:
++ if async_:
+ error_handler(error)
+ return
+ else:
+ raise
+- if async:
++ if async_:
+ def on_error(error):
+ """Convert the DeferredException to a normal exception."""
+ try:
+@@ -1609,10 +1609,10 @@
+ return trans
+
+ @defer.inline_callbacks
+- def _run_transaction_helper(self, method_name, args, wait, async):
++ def _run_transaction_helper(self, method_name, args, wait, async_):
+ daemon = get_aptdaemon(self.bus)
+ dbus_method = daemon.get_dbus_method(method_name)
+- if async:
++ if async_:
+ deferred = defer.Deferred()
+ dbus_method(reply_handler=deferred.callback,
+ error_handler=deferred.errback, *args,
+@@ -1626,7 +1626,7 @@
+ if self.terminal:
+ yield trans.set_terminal(self.terminal)
+ yield trans.sync()
+- if wait and async:
++ if wait and async_:
+ deferred_wait = defer.Deferred()
+ sig = trans.connect("finished",
+ lambda trans, exit:
diff --git a/debian/patches/remove-lintian-scanning-of-local-packages.patch b/debian/patches/remove-lintian-scanning-of-local-packages.patch
new file mode 100644
index 0000000..64f20a4
--- /dev/null
+++ b/debian/patches/remove-lintian-scanning-of-local-packages.patch
@@ -0,0 +1,180 @@
+From: Michael Hudson-Doyle <michael.hudson@canonical.com>
+Date: Thu, 1 Aug 2019 12:13:07 +1200
+Subject: Remove lintian scanning of local packages.
+
+lintian has changed in Debian in ways that break this feature and
+removing it seems like a better use of time than fixing it.
+---
+ aptdaemon/progress.py | 30 +-----------------------------
+ aptdaemon/worker/aptworker.py | 12 ------------
+ setup.py | 4 ----
+ tests/test_pk.py | 6 +++---
+ tests/test_worker.py | 14 ++------------
+ 5 files changed, 6 insertions(+), 60 deletions(-)
+
+diff --git a/aptdaemon/progress.py b/aptdaemon/progress.py
+index 0a0cd7b..5312c5a 100644
+--- a/aptdaemon/progress.py
++++ b/aptdaemon/progress.py
+@@ -14,8 +14,7 @@ __author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+ __all__ = ("DaemonAcquireProgress", "DaemonOpenProgress",
+ "DaemonInstallProgress", "DaemonDpkgInstallProgress",
+- "DaemonForkProgress", "DaemonDpkgRecoverProgress",
+- "DaemonLintianProgress")
++ "DaemonForkProgress", "DaemonDpkgRecoverProgress")
+
+ import locale
+ import logging
+@@ -622,33 +621,6 @@ class DaemonForkProgress(object):
+ return False
+
+
+-class DaemonLintianProgress(DaemonForkProgress):
+-
+- """Performs a lintian call."""
+-
+- def _child(self, path):
+- # Avoid running lintian as root
+- try:
+- os.setgroups([self.transaction.gid])
+- except OSError:
+- pass
+- os.setgid(self.transaction.gid)
+- os.setuid(self.transaction.uid)
+-
+- if platform.dist()[1] == "debian":
+- profile = "debian/aptdaemon"
+- else:
+- profile = "ubuntu/aptdaemon"
+- # If HOME isn't set lintian won't try to load user profiles
+- os.unsetenv("HOME")
+-
+- lintian_path = apt_pkg.config.find_file("Dir::Bin::Lintian",
+- "/usr/bin/lintian")
+- os.execlp(lintian_path, lintian_path, "--no-cfg", "--fail-on-warnings",
+- "--profile", profile, path)
+- os._exit(1)
+-
+-
+ class DaemonInstallProgress(DaemonForkProgress):
+
+ """Progress to execute APT package operations in a child process."""
+diff --git a/aptdaemon/worker/aptworker.py b/aptdaemon/worker/aptworker.py
+index 5211365..d936e10 100644
+--- a/aptdaemon/worker/aptworker.py
++++ b/aptdaemon/worker/aptworker.py
+@@ -66,7 +66,6 @@ from ..progress import (
+ DaemonDpkgInstallProgress,
+ DaemonDpkgReconfigureProgress,
+ DaemonDpkgRecoverProgress,
+- DaemonLintianProgress,
+ DaemonForkProgress)
+
+ log = logging.getLogger("AptDaemon.Worker")
+@@ -1230,21 +1229,10 @@ class AptWorker(BaseWorker):
+ # This code runs as root for simulate and simulate requires no
+ # authentication - so we need to ensure we do not leak information
+ # about files here (LP: #1449587, CVE-2015-1323)
+- #
+- # Note that the actual lintian run is also droping privs (real,
+- # not just seteuid)
+ with set_euid_egid(trans.uid, trans.gid):
+ if not os.path.isfile(path):
+ raise TransactionFailed(ERROR_UNREADABLE_PACKAGE_FILE, path)
+
+- if not force and os.path.isfile("/usr/bin/lintian"):
+- with DaemonLintianProgress(trans) as progress:
+- progress.run(path)
+- # FIXME: Add an error to catch return state 2 (failure)
+- if progress._child_exit != 0:
+- raise TransactionFailed(ERROR_INVALID_PACKAGE_FILE,
+- "Lintian check results for %s:"
+- "\n%s" % (path, progress.output))
+ try:
+ deb = apt.debfile.DebPackage(path, self._cache)
+ except IOError:
+diff --git a/setup.py b/setup.py
+index 45273df..c08cb5e 100755
+--- a/setup.py
++++ b/setup.py
+@@ -50,10 +50,6 @@ setup(name="aptdaemon",
+ ("share/dbus-1/system-services/",
+ ["data/org.debian.apt.service",
+ "data/org.freedesktop.PackageKit.service"]),
+- ("share/lintian/profiles/ubuntu/",
+- ["data/lintian/ubuntu/aptdaemon.profile"]),
+- ("share/lintian/profiles/debian/",
+- ["data/lintian/debian/aptdaemon.profile"]),
+ ("share/man/man1",
+ ["doc/aptd.1", "doc/aptdcon.1"]),
+ ("share/man/man7",
+diff --git a/tests/test_pk.py b/tests/test_pk.py
+index dd386b4..1c73632 100644
+--- a/tests/test_pk.py
++++ b/tests/test_pk.py
+@@ -119,9 +119,9 @@ class PackageKitTest(aptdaemon.test.AptDaemonTestCase):
+ def test_install_files(self):
+ """Test installing local package files."""
+
+- path_pkg_lintian_fail = os.path.join(
++ path_pkg_config = os.path.join(
+ REPO_PATH,
+- "silly-depend-base-lintian-broken_0.1-0_all.deb")
++ "silly-config_.1-0_all.deb")
+ path_pkg = os.path.join(
+ REPO_PATH,
+ "silly-depend-base_0.1-0_all.deb")
+@@ -131,7 +131,7 @@ class PackageKitTest(aptdaemon.test.AptDaemonTestCase):
+ # Fail if more than package should be installed
+ try:
+ client.install_files(pk.TransactionFlagEnum.NONE,
+- [path_pkg_lintian_fail, path_pkg], None,
++ [path_pkg_config, path_pkg], None,
+ lambda p, t, d: True, None)
+ except GLib.GError as error:
+ self.assertTrue("Only one package" in error.message)
+diff --git a/tests/test_worker.py b/tests/test_worker.py
+index 474be13..e82ace0 100644
+--- a/tests/test_worker.py
++++ b/tests/test_worker.py
+@@ -315,15 +315,12 @@ Auto-Installed: 1""")
+ "etc/silly-packages.cfg")),
+ "Configuration file wasn't removed.")
+
+- @unittest.skipUnless(
+- os.path.exists('/usr/share/lintian/profiles/debian/aptdaemon.profile'),
+- 'this test needs aptdaemon installed, for the lintian profiles')
+ def test_install_file(self):
+ """Test the installation of a local package file."""
+ # test
+ self.chroot.add_test_repository()
+ pkg = os.path.join(REPO_PATH,
+- "silly-depend-base-lintian-broken_0.1-0_all.deb")
++ "silly-depend-base_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+@@ -331,13 +328,6 @@ Auto-Installed: 1""")
+ "force": False})
+ self.worker.simulate(trans)
+ self.loop.run()
+- self.assertIn("wrong-file-owner-uid-or-gid", trans.error.details)
+- self.assertEqual(trans.error.code, enums.ERROR_INVALID_PACKAGE_FILE,
+- "Lintian failed to detect a broken package")
+- # Now allow to install invalid packages
+- trans.kwargs["force"] = True
+- self.worker.simulate(trans)
+- self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_INSTALL],
+ ["silly-base=0.1-0update1"])
+ self.assertTrue(trans.space > 0)
+@@ -347,7 +337,7 @@ Auto-Installed: 1""")
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+- pkg = self.worker._cache["silly-depend-base-lintian-broken"]
++ pkg = self.worker._cache["silly-depend-base"]
+ self.assertTrue(pkg.is_installed)
+
+ def test_install_conflicting_file(self):
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..0202a08
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,33 @@
+fix-high-trust-pkcompat.diff
+dbus_timeout.patch
+py3_inheritable.patch
+lp1356823.diff
+lp1449587.diff
+pep8-accommodations.diff
+lp1487087.diff
+fix-installation.patch
+native-arch.patch
+key_value_typo.patch
+lintian_deprecated_error.patch
+lp1439769-aptdaemon-autoinstall.patch
+drop_pkcompat.patch
+pk1.1.1_compat.patch
+lp1623856-window-height.patch
+lp1689668-config-file-window.patch
+lp1690541-details-open-twice.patch
+python3.7-compat.patch
+do-not-raise-stopiteration.patch
+pk-debconf-helper.patch
+failing-tests.patch
+frontend-locking.patch
+lock-is-held-typo.patch
+fix-dependency-solving.patch
+remove-lintian-scanning-of-local-packages.patch
+allow-unauthenticated.patch
+apport-report.patch
+CVE-2020-15703.patch
+test-with-timeout.patch
+CVE-2020-16128.patch
+CVE-2020-27349.patch
+fix-some-deprecated-code.patch
+gdk-gtk-versions.py
diff --git a/debian/patches/test-with-timeout.patch b/debian/patches/test-with-timeout.patch
new file mode 100644
index 0000000..8a51396
--- /dev/null
+++ b/debian/patches/test-with-timeout.patch
@@ -0,0 +1,15 @@
+Description: Run tests with a timeout
+ Tests are getting stuck for almost 3 hours because we race somewhere and end up
+ getting stuck waiting for calls that never happen.
+Author: Julian Andres Klode <juliank@ubuntu.com>
+--- a/aptdaemon/test.py
++++ b/aptdaemon/test.py
+@@ -223,7 +223,7 @@ class AptDaemonTestCase(unittest.TestCas
+ path = "/usr/sbin/aptd"
+ else:
+ path = os.path.join(dir, "../aptd")
+- cmd = ["python3", path, "--disable-timeout", "--disable-plugins",
++ cmd = ["python3", path, "--disable-plugins",
+ "--chroot", chroot]
+ if debug:
+ cmd.append("--debug")
diff --git a/debian/python3-aptdaemon.gtk3widgets.examples b/debian/python3-aptdaemon.gtk3widgets.examples
new file mode 100644
index 0000000..a88c1fa
--- /dev/null
+++ b/debian/python3-aptdaemon.gtk3widgets.examples
@@ -0,0 +1 @@
+gtk3-demo.py
diff --git a/debian/python3-aptdaemon.gtk3widgets.install b/debian/python3-aptdaemon.gtk3widgets.install
new file mode 100644
index 0000000..19938ca
--- /dev/null
+++ b/debian/python3-aptdaemon.gtk3widgets.install
@@ -0,0 +1 @@
+usr/lib/python3*/*-packages/aptdaemon/gtk3widgets.py
diff --git a/debian/python3-aptdaemon.install b/debian/python3-aptdaemon.install
new file mode 100644
index 0000000..457c677
--- /dev/null
+++ b/debian/python3-aptdaemon.install
@@ -0,0 +1,17 @@
+usr/lib/python3*/*-packages/aptdaemon/__init__.py
+usr/lib/python3*/*-packages/aptdaemon/client.py
+usr/lib/python3*/*-packages/aptdaemon/config.py
+usr/lib/python3*/*-packages/aptdaemon/console.py
+usr/lib/python3*/*-packages/aptdaemon/core.py
+usr/lib/python3*/*-packages/aptdaemon/crash.py
+usr/lib/python3*/*-packages/aptdaemon/debconf.py
+usr/lib/python3*/*-packages/aptdaemon/enums.py
+usr/lib/python3*/*-packages/aptdaemon/errors.py
+usr/lib/python3*/*-packages/aptdaemon/logger.py
+usr/lib/python3*/*-packages/aptdaemon/loop.py
+usr/lib/python3*/*-packages/aptdaemon/lock.py
+usr/lib/python3*/*-packages/aptdaemon/networking.py
+usr/lib/python3*/*-packages/aptdaemon/policykit1.py
+usr/lib/python3*/*-packages/aptdaemon/progress.py
+usr/lib/python3*/*-packages/aptdaemon/utils.py
+usr/lib/python3*/*-packages/aptdaemon/worker/*.py
diff --git a/debian/python3-aptdaemon.test.examples b/debian/python3-aptdaemon.test.examples
new file mode 100644
index 0000000..b0f0377
--- /dev/null
+++ b/debian/python3-aptdaemon.test.examples
@@ -0,0 +1 @@
+tests/test_client.py
diff --git a/debian/python3-aptdaemon.test.install b/debian/python3-aptdaemon.test.install
new file mode 100644
index 0000000..1eef8bb
--- /dev/null
+++ b/debian/python3-aptdaemon.test.install
@@ -0,0 +1,9 @@
+usr/lib/python3*/*-packages/aptdaemon/test.py
+tests/repo/glatzor.gpg /usr/share/aptdaemon/tests/repo/
+tests/repo/Packages /usr/share/aptdaemon/tests/repo/
+tests/repo/Release /usr/share/aptdaemon/tests/repo/
+tests/repo/Release.gpg /usr/share/aptdaemon/tests/repo/
+tests/repo/*.deb /usr/share/aptdaemon/tests/repo/
+tests/dpkg-wrapper.sh /usr/share/aptdaemon/tests/
+tests/fake-polkitd.py /usr/share/aptdaemon/tests/
+tests/dbus.conf /usr/share/aptdaemon/tests/
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..3e9ea40
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,24 @@
+#!/usr/bin/make -f
+
+#DH_VERBOSE=1
+
+PYTHON3=$(shell py3versions -vr)
+
+%:
+ dh $@ --with=python3,translations --buildsystem=pybuild
+
+override_dh_auto_clean:
+ dh_auto_clean
+ rm -rf build *.egg-info po/aptdaemon.pot
+
+# ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+# test-python%:
+# # wait until previous xvfb-run has finished
+# while [ -e /tmp/.X99-lock ]; do sleep 1; done
+# xvfb-run python$* setup.py test -vv
+
+# override_dh_auto_test: $(PYTHON3:%=test-python%)
+# endif
+
+override_dh_auto_test:
+ true
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..fffa7ec
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: run-test
+Depends: @, xvfb, pep8, python3-nose, python3-setuptools, python3-distutils-extra, python3-mock, gir1.2-packagekitglib-1.0, gir1.2-gtk-3.0, gir1.2-vte-2.91, fakeroot, lintian
diff --git a/debian/tests/run-test b/debian/tests/run-test
new file mode 100755
index 0000000..b0fb0f7
--- /dev/null
+++ b/debian/tests/run-test
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+# clean up old crash reports
+rm -rf /var/crash/* 2>&1 || true
+
+# succeeding test must not write anything to stderr, as per DEP-8
+# work around LP #972324
+env -u TMPDIR xvfb-run python3 setup.py test 2>&1
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..0668194
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://launchpad.net/aptdaemon/+download .*/aptdaemon-([0-9.]+)\.tar\.gz
diff --git a/doc/aptd.1 b/doc/aptd.1
new file mode 100644
index 0000000..438cdfb
--- /dev/null
+++ b/doc/aptd.1
@@ -0,0 +1,54 @@
+.\" groff -man -Tascii foo.1
+.TH APTD 1 "December 2009" aptdaemon "User manual"
+.SH NAME
+aptd \- package managing daemon proving a D-Bus interface
+.SH SYNOPSIS
+.B aptd
+.RI [ OPTIONS ]
+.SH DESCRIPTION
+.B aptd
+allows to perform package management tasks, e.g. installing or removing
+software, using a D-Bus interface. The privileges are handled by PolicyKit
+so the client application doesn't need to run as root. Furthermore aptd is
+started by D-Bus activation only when an user calls a method.
+.SH OPTIONS
+.IP "-d, --debug"
+Show additional information on the command line.
+.IP "-h, --help"
+Show information about the usage of the command.
+.IP "-r, --replace"
+Replace another aptd instance if it is running.
+.IP "-p PROFILE_FILE"
+Write profiling data to
+.I PROFILE_FILE
+using Python's profiler. This is only of use to developers.
+.IP "-t, --disable-timeout"
+Do not shutdown the daemon after an idle time.
+.IP "--dummy"
+Instead of applying the changes to the system only show a progress. This option is only usable for developers to locate problems in client applications.
+.SH FILES
+.TP
+.I /etc/apt/apt.conf.d/20dbus
+Adds a small post update hook which will emit the org.debian.apt.CacheChanged signal on the system D-Bus to indicate that the cache has been changed and a possible running aptd instance should reloade its internal cache.
+.TP
+.I /usr/share/polkit-1/actions/org.debian.apt.policy
+The PolicyKit definitions of the privileges used by aptdaemon, e.g. to install packages. To change the privileges please have a look at
+.BR PolicyKit.conf (1).
+.TP
+.I /etc/dbus-1/system.d/org.debian.apt.conf
+The D-Bus configuration of the org.debian.apt name space.
+.SH DIAGNOSTICS
+By default aptdaemon logs to the syslog facility AptDaemon. Furthermore you
+can use the -d option to get additional information on the command line.
+.SH HOMEPAGE
+https://launchpad.net/aptdaemon
+.SH BUGS
+You can report bugs at the Launchpad site of aptdaemon:
+https://bugs.launchpad.net/aptdaemon/+filebug
+.SH AUTHOR
+Sebastian Heinlein <devel at glatzor dot de>
+.SH SEE ALSO
+.BR aptdcon (1),
+.BR org.debian.apt (7),
+.BR org.debian.apt.transaction (7),
+.BR PolicyKit.conf (7)
diff --git a/doc/aptdcon.1 b/doc/aptdcon.1
new file mode 100644
index 0000000..77fa8a0
--- /dev/null
+++ b/doc/aptdcon.1
@@ -0,0 +1,95 @@
+.\" groff -man -Tascii foo.1
+.TH APTDCON 1 "December 2009" aptdaemon "User manual"
+.SH NAME
+aptdcon \- command line client for aptdaemon
+.SH SYNOPSIS
+.B aptdcon
+.RI [ OPTIONS ]
+.SH DESCRIPTION
+.B aptdcon
+allows to perform package management tasks, e.g. installing or removing
+software, using aptdaemon. There isn't any need to be root to run this
+programme.
+.SH OPTIONS
+.IP "-v, --version"
+Show the version number of the aptdcon.
+.IP "-h, --help"
+Show information about the usage of the command.
+.IP "-d, --debug"
+Show additional information on the command line.
+.IP "-i, --install PACKAGES"
+Install the list of PACKAGES. If you want to install more than one package you have to put the package names into quotation marks.
+.IP "--reinstall PACKAGES"
+Reinstall the list of PACKAGES. If you want to reinstall more than one package you have to put the package names into quotation marks.
+.IP "-r, --remove PACKAGES"
+Remove the list of PACKAGES. If you want to remove more than one package you have to put the package names into quotation marks.
+.IP "-p, --purge PACKAGES"
+Purge the list of PACKAGES. If you want to purge more than one package you have to put the package names into quotation marks.
+.IP "-u, --upgrade PACKAGES"
+Upgrade the list of PACKAGES. If you want to upgrade more than one package you have to put the package names into quotation marks.
+.IP --upgrade-system
+Upgrade the whole system.
+.IP --fix-install
+Try to complete a previously cancelled installation by calling "dpkg --configure -a".
+.IP --fix-depends
+Try to resolve unsatisified dependencies. Attention: Currently you don't get a confirmation of the changes, which makes this method quite dangerous since it could remove a lot of packages.
+.IP "--add-vendor-key PUBLIC_KEY_FILE"
+Install the PUBLIC_KEY_FILE to authenticate and trust packages singed by the
+vendor.
+.IP "--add-vendor-key-from-keyserver PUBLIC_KEY_ID"
+Download and install the PUBLIC_KEY_ID to authenticate and trust packages
+singed by the vendor. Requires the --keyserver to be set.
+.IP "--key-server KEYSERVER"
+Download vendor keys from the given KEYSERVER.
+.IP "--remove-vendor-key FINGERPRINT"
+Remove the vendor key of the given FINGERPRINT to no longer trust packages
+from this vendor.
+.IP "--add-repository \'DEB_LINE\'"
+Allow to install software from the repository specified by the given
+DEB_LINE. You have to put quotation marks around the DEB_LINE since it
+normally contains spaces:
+.I \'deb http://ftp.de.debian.org/debian unstable main\'
+.IP "--sources-file SOURCES_FILE"
+Specify an alternative sources file to which the new repository should be
+written. SOURCES_FILE should be only the basename:
+.I backports.list
+.IP --list-trusted-vendors
+Show all trusted software vendors and theirs keys.
+.IP --hide-terminal
+Do not attach to the interactive terminal of the underlying dpkg call.
+.IP --allow-unauthenticated
+Allow to install packages which are not from a trusted vendor.
+.SH EXAMPLES
+The following command will install the package xterm and remove the package eterm in the same run:
+.RS
+$ aptdcon --install "xterm" --remove "eterm"
+.RE
+.PP
+To handle more than one package the names have to be put into quotation marks. The following command will install xterm and eterm:
+.RS
+$ aptdcon --install "xterm eterm"
+.RE
+.PP
+The following command will add the backport repository to the sources.list in
+a separate file
+.I /etc/apt/sources.list.d/backports.list
+:
+.RS
+$ aptdcon --sources-file backports.list \\
+.br
+ --add-repostiry "deb http://archive.backports.org/debian stable main"
+.RE
+.SH DIAGNOSTICS
+By default aptdaemon logs to the syslog facility AptDaemon. Furthermore you
+can use the -d option to get additional information on the command line.
+.SH HOMEPAGE
+https://launchpad.net/aptdaemon
+.SH BUGS
+You can report bugs at the Launchpad site of aptdaemon:
+https://bugs.launchpad.net/aptdaemon/+filebug
+.SH AUTHOR
+Sebastian Heinlein <devel at glatzor dot de>
+.SH SEE ALSO
+.BR aptd (1),
+.BR org.debian.apt (7),
+.BR org.debian.apt.transaction (7)
diff --git a/doc/examples/chained.py b/doc/examples/chained.py
new file mode 100644
index 0000000..3418844
--- /dev/null
+++ b/doc/examples/chained.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python
+
+import dbus
+
+from gi.repository import GLib
+
+from aptdaemon.client import AptClient
+from aptdaemon.defer import inline_callbacks
+from aptdaemon import policykit1
+
+loop = GLib.MainLoop()
+
+def on_finished(trans, exit):
+ loop.quit()
+ print exit
+
+@inline_callbacks
+def main():
+ repo = ["deb", "http://packages.glatzor.de/silly-packages", "sid", ["main"],
+ "Silly packages", "silly.list"]
+ aptclient = AptClient()
+ bus = dbus.SystemBus()
+ name = bus.get_unique_name()
+ # high level auth
+ try:
+ # Preauthentication
+ action = policykit1.PK_ACTION_INSTALL_PURCHASED_PACKAGES
+ flags = policykit1.CHECK_AUTH_ALLOW_USER_INTERACTION
+ yield policykit1.check_authorization_by_name(name, action, flags=flags)
+ # Setting up transactions
+ trans_add = yield aptclient.add_repository(*repo)
+ trans_update = yield aptclient.update_cache("silly.list")
+ trans_inst = yield aptclient.install_packages(["silly-base"])
+ yield trans_inst.set_allow_unauthenticated(True)
+ # Check when the last transaction was done
+ trans_inst.connect("finished", on_finished)
+ # Chaining transactions
+ yield trans_update.run_after(trans_add)
+ yield trans_inst.run_after(trans_update)
+ yield trans_add.run()
+ except Exception as error:
+ print error
+ loop.quit()
+
+if __name__ == "__main__":
+ main()
+ loop.run()
diff --git a/doc/org.debian.apt.7 b/doc/org.debian.apt.7
new file mode 100644
index 0000000..b3bcaf5
--- /dev/null
+++ b/doc/org.debian.apt.7
@@ -0,0 +1,238 @@
+.\" groff -man -Tascii foo.1
+.TH org.debian.apt 7 "December 2009" "aptdaemon" "D-Bus Interface"
+.SH NAME
+org.debian.apt \- the main interface of aptdaemon
+.SH SYNOPSIS
+The daemon is accessed through the D-Bus object at
+.IR /org/debian/apt .
+Which provides the following interface.
+.SH DESCRIPTION
+.SS METHODS
+.TP
+.B AddRepository
+.BI "AddRepository\t(in 's' " type ","
+.br
+.BI "\t\tin 's' " uri ","
+.br
+.BI "\t\tin 's' " dist ","
+.br
+.BI "\t\tin 'as' " comps ","
+.br
+.BI "\t\tin 's' " comment ","
+.br
+.BI "\t\tin 's' " sourcesfile ")"
+.RS
+.PP
+Add a new repository to the sources list file. The repository has to define the type (e.g. deb or deb-src), uri (e.g. http://archive.debian.org/debian), the distribution (e.g. stable) and a list of components (e.g. main).
+.PP
+Optionally a comment and an alternative sources.list file can be specified.
+.RE
+.TP
+.B EnableDistroComponent
+.BI "EnableDistroComponent\t(in 's' " comp ")"
+.RS
+.PP
+Enable a component for all distro repositories, e.g. main or universe.
+.RE
+.TP
+.B GetTrustedVendorKeys
+.BI "GetTrustedVendorKeys\t(out 'as' " keys )
+.RS
+.PP
+Return the GnuPG keys which are used to authenticate packages.
+.RE
+.TP
+.B GetAtiveTransactions
+.BI "GetActiveTransactions\t(out 'as' " tids )
+.RS
+.PP
+Return an array of the currently queued transactions.
+.RE
+.TP
+.B Quit
+.br
+.BI "Quit\t()"
+.RS
+.PP
+Request the shutdown of the daemon. The daemon will finish a currently running transaction before.
+.RE
+.SS TRANSACTION BASED METHODS
+The following methods are handled by transactions. By calling the methods a new transaction will be created for the task. The return value of the method is the D-Bus object path of the corresponding transaction. The transaction can be modified, to use an http proxy or to run in a specific language by setting the corresponding properties on the
+.BR org.debian.apt.transaction (7)
+interface. Afterwards the transaction has to be queued for processing by calling its Run method on the
+.BR org.debian.apt.transaction (7)
+interface.
+.TP
+.B UpdateCache
+.BI "UpdateCache\t(out 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will fetch the latest meta data from the repositories and rebuild the cache of available and installed packages.
+.RE
+.TP
+.B UpdateCachePartially
+.BI "UpdateCachePartially\t(in 's' " sources_list ,
+.br
+.BI "\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will fetch the latest meta data from the repositories specified in the given sources.list snippet only and rebuild the cache of available and installed packages.
+.RE
+.TP
+.B InstallPackages
+.BI "InstallPackages\t(in 'as' " package_names ,
+.br
+.BI "\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will install the packages
+of the given names.
+.PP
+Optionally the to be installed version can be specified by
+appending a "=" and the version to the package name, e.g. "xterm=256-1".
+.RE
+.TP
+.B InstallFile
+.BI "InstallFile\t(in 's' " path ,
+.br
+.BI "\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly create transaction which will install a local *.deb
+package file at the given
+.IR path .
+.RE
+.TP
+.B UpgradePackages
+.BI "UpgradePackages\t(in 'as' " package_names ,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will upgrade the packages of the given names to their latest version.
+.PP
+Optionally the to be installed version can be specified by
+appending a "=" and the version to the package name, e.g. "xterm=256-1".
+.RE
+.TP
+.B RemovePackages
+.BI "RemovePackages\t(in 'as' " package_names ,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will remove the packages of the given names.
+.PP
+Optionally the version of the to be removed packages can be specified by
+appending a "=" and the version to the package name, e.g. "xterm=256-1".
+.RE
+.TP
+.B UpgradeSystem
+.BI "UpgradeSystem\t(in 'b' " safe_mode ,
+.br
+.BI "\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will upgrade the whole system.
+.PP
+If in safe mode only already installed packages will be updated. Updates which require to remove installed packages or to install additional packages will be skipped.
+.RE
+.TP
+.B CommitPackages
+.BI "CommitPackages\t(in 'as' " install ,
+.br
+.BI "\t\t\tin 'as' " reinstall,
+.br
+.BI "\t\t\tin 'as' " remove,
+.br
+.BI "\t\t\tin 'as' " purge,
+.br
+.BI "\t\t\tin 'as' " upgrade ,
+.br
+.BI "\t\t\tin 'as' " downgrade ,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will perform a complex install/removal task at once.
+.IR Install ", " reinstall ", " remove ", " purge " and " upgrade
+are lists of package names.
+.PP
+Optionally the version of the to be removed packages or the version of the
+package which should be installed can be specified by
+appending a "=" and the version to the package name, e.g. "xterm=256-1".
+.RE
+.TP
+.B AddVendorKeyFromFile
+.BI "AddVendorKeyFromFile\t(in 's' " path ,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will install the public GnuPG key at the given
+.I path
+to the list of trusted software vendors. The list will be used to authenticate packages.
+.RE
+.TP
+.B AddVendorKeyFromKeyserver
+.BI "AddVendorKeyFromKeyserver\t(in 's' " keyid ,
+.br
+.BI "\t\t\tin 's' " keyserver,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will download and install the public GnuPG key of the
+.I keyid
+from the given
+.I keyserver
+to the list of trusted software vendors. The list will be used to authenticate packages.
+.RE
+.TP
+.B RemoveVendorKey
+.BI "RemoveVendorKey\t(in 's' " fingerprint ,
+.br
+.BI "\t\t\tout 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will remove the public GnuPG key with the given
+.I fingerprint
+from the list of trusted software vendors. The list will be used to authenticate packages.
+.RE
+.TP
+.B FixBrokenDepends
+.BI "FixBrokenDepends\t(out 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will try to resolve unsatisfied dependencies by installing required packages or removing conflicting ones.
+.RE
+.TP
+.B FixIncompleteInstall
+.BI "FixIncompleteInstall\t(out 's' " tid )
+.RS
+.PP
+Return the id of a newly created transaction which will try to complete previously failed installations by calling "dpkg --configure -a".
+.RE
+.SS SIGNALS
+.TP
+.B ActiveTransactionsChanged
+.BI "ActiveTransactionsChanged\t('s' " active ,
+.br
+.BI "\t\t\t\t'as' " queued )
+.RS
+.PP
+The signal is used to report changes of the currently running or queued
+transactions. If there's any active transaction active will be an empty
+string.
+.RE
+.SH HOMEPAGE
+https://launchpad.net/aptdaemon
+.SH BUGS
+You can report bugs at the Launchpad site of aptdaemon:
+https://bugs.launchpad.net/aptdaemon/+filebug
+.SH AUTHOR
+Sebastian Heinlein <devel at glatzor dot de>
+.SH SEE ALSO
+.BR org.debian.apt.transaction (7),
+.BR aptd (2),
+.BR aptdcon (2)
diff --git a/doc/org.debian.apt.transaction.7 b/doc/org.debian.apt.transaction.7
new file mode 100644
index 0000000..b2b56f6
--- /dev/null
+++ b/doc/org.debian.apt.transaction.7
@@ -0,0 +1,220 @@
+.\" groff -man -Tascii foo.1
+.TH org.debian.apt.transaction 7 "December 2009" "aptdaemon" "D-Bus Interface"
+.SH NAME
+org.debian.apt.transaction \- the main interface of an aptdaemon transaction
+.SH SYNOPSIS
+Each transaction is represented as an unique D-Bus object, e.g. at the D-Bus path
+.IR /or/debian/apt/transaction/12123-123-123213 .
+Which provides the following interface.
+.SH DESCRIPTION
+.SS METHODS
+.TP
+.B ProvideMedium
+.BI "ProvideMedium\t(in 's' " medium )
+.RS
+.PP
+Continue a paused transaction which is waiting for the given
+.IR medium .
+.PP
+If a media change is required to e.g. install packages from a CD/DVD
+the transaction will be paused and the RequiredMedium property changed
+to an array of the
+.IR "medium label" " and its " "mount point" .
+Furthermore the MediumRequired signal will be emitted.
+.RE
+.TP
+.B ResolveConfigFileConflict
+.BI "ResolveConfigFilePrompt\t(in 's' " config ,
+.br
+.BI "\t\t\t\tin 's' " answer )
+.RS
+.PP
+Continue a paused transaction which is waiting for an answer to handle
+a configuration file conflict.
+.I Config
+is the path to the current configuration file and
+.I answer
+can be either "replace" or "keep".
+.PP
+If a later config file is shipped in a package which overrides some
+user modifications the transaction will be paused and the ConfigFileConflict
+property of the transaction will be set to an array of the old and new
+configuration file path. The later one is supposed to replace the former one.
+Furthermore the ConfigFileConflict signal will be emitted.
+.RE
+.TP
+.B Simulate
+.BI "Simulate\t()"
+.RS
+.PP
+Simulate the transaction and calculate dependencies, required disk space and
+download size. If a transaction would fail the corresponding error will be
+raised.
+.RE
+.TP
+.B Run
+.BI "Run\t()"
+.RS
+.PP
+Queue the transaction for processing. Afterwards there cannot be made any further changes to the transaction, e.g. modifing the http proxy.
+.RE
+.TP
+.B Cancel
+.BI "Cancel\t()"
+.RS
+.PP
+Cancel the transaction if possible.
+.RE
+.SS SIGNALS
+.TP
+.B Finished
+.BI "Finished\t('s' " exit_state )
+.RS
+.PP
+The signal will be emitted when the transaction has been processed. The
+.I exit_state
+indicates if the transaction was completed, cancelled or failed.
+.RE
+.TP
+.B MediumRequired
+.BI "MediumRequired\t('s' " label ,
+.br
+.BI "\t\t\t's' " mount_point )
+.RS
+.PP
+The signal will be emitted if the transaction has been paused and waits for a media change to install packages.
+.RE
+.TP
+.B ConfigFileConflict
+.BI "ConfigFileConflict\t('s' " old ,
+.br
+.BI "\t\t\t's' " new )
+.RS
+.PP
+The signal will be emitted if the transaction has been paused because a
+.I new
+configuration file is shipped in a package which would override changes by the
+user in the
+.I old
+configuration file.
+.RE
+.TP
+.B PropertyChanged
+.BI PropertyChanged\t('s' " property_name ,
+.br
+.BI "\t\t\t'v' " value )
+.RS
+.PP
+The signal will be emitted if one of the following properties has changed.
+.RE
+.SS PROPERTIES
+The properties of the transaction are available through the Get And GetAll
+methods of the D-Bus properties interface and can be changed using the
+Set method.
+.TP
+.BR Role " read 's'"
+The role enum of the transaction, e.g. update-cache.
+.TP
+.BR Status " read 's'"
+The current status enum of the transaction, e.g. downloading
+.TP
+.BR StatusDetails " read 's'"
+A clear text message describing the current status.
+.TP
+.BR Progress " read 'i'"
+The progress of the transaction in percent.
+.TP
+.BR ProgressDownload " read 'sssiis'"
+The last download progress information recieved from APT. It is an array
+of the URI, status enum, short description, full size, already downloaded
+size and an error or status message.
+.TP
+.BR Space " read 'i'"
+The additional disk space in Bytes which will be required by the transaction.
+The
+.B Simulate
+method has to be called to calculate the download size.
+.TP
+.BR Download " read 'i'"
+The required download size in Bytes of the transaction.
+The
+.B Simulate
+method has to be called to calculate the download size.
+.TP
+.BR Packages " read 'a(a(s)a(s)a(s)a(s)a(s)a(s)a(s))'"
+The lists of packages which are initially queued to be installed,
+reinstalled, removed, purged, upgraded, downgraded or skipped from upgrading.
+.TP
+.BR Dependenciens " read 'a(a(s)a(s)a(s)a(s)a(s)a(s)a(s))'"
+The lists of packages which are additionally required to be installed,
+reinstalled, removed, purged, upgraded, downgraded or skipped from upgrading.
+The
+.B Simulate
+method has to be called to calculate the dependencies.
+.TP
+.BR Cancellable " read 'b'"
+If the transaction can be cancelled.
+.TP
+.BR TerminalAttached " read 'b'"
+If the master pty which has to be set using the Terminal property is attached as controlling terminal to the underlying dpkg call.
+.TP
+.BR RequiredMedium " read 'a(ss)'"
+The transaction will be stopped if a media change is required to install packages. This property provides the
+.I label
+and the
+.I mount point
+of the requested medium.
+.TP
+.BR ConfigFileConflict " read 'a(ss)'"
+The transaction will be stopped if a configuration file shipped in the package overrides changes of the user. This property provides the path to
+.I current
+and the path to the
+.I new
+configuration file.
+.TP
+.BR ExitState " read 's'"
+The exit state enum of the transaction.
+.TP
+.BR Error " read 'a(ss)'"
+If an error occured this property provides the
+.I error enum
+and the
+.I error message.
+.TP
+.BR Locale " read-write 's'"
+This is the locale which will be used for translating status and error messages of apt, e.g. de_DE@utf-8.
+.TP
+.BR Terminal " read-write 's'"
+The path to the master pty which will be the controlling terminal of the underlying dpkg call. This allows to have an interactive terminal session.
+.TP
+.BR DebconfSocket " read-write 's'"
+The path to the socket which will be used by the debconf passthrough backend to forward the debconf communication to the user session.
+.TP
+.BR Paused " read 'b'"
+If the transaction is paused, e.g. waiting for a conflict file resolution or media change.
+.TP
+.BR Unauthenticated " read 'as'"
+List of unauthenticated packages which are going to be installed.
+.TP
+.BR RemoveObsoletedDepends " read-write 'b'"
+If obsoleted dependencies of to be removed packages which have been installed
+automatically should be removed too.
+.TP
+.BR AllowUnauthenticated " read-write 'b'"
+If it is allowed to install not authenticated software packages.
+.TP
+.BR HttpProxy " read-write 's'"
+The URL of an http proxy which should be used to download repository meta data and package files, e.g. http://myproxy.athome:8080. You should set the system wide proxy if you use this feature regularly.
+.BR MetaData " read-write 'a{ss}'"
+A dictonary which allows client application to store additional data in the transaction. The key name has to include an identifier of the client application separated by an unterscore from the key name, e.g. sc_icon for the application icon name stored by software-center. The property cannot be changed anymore after the transaction has been queued.
+.SH HOMEPAGE
+https://launchpad.net/aptdaemon
+.SH BUGS
+You can report bugs at the Launchpad site of aptdaemon:
+https://bugs.launchpad.net/aptdaemon/+filebug
+.SH AUTHOR
+Sebastian Heinlein <devel at glatzor dot de>
+.SH SEE ALSO
+.BR org.debian.apt.transaction (7),
+.BR aptd (2),
+.BR aptdcon (2)
diff --git a/doc/source/_ext/signals.py b/doc/source/_ext/signals.py
new file mode 100644
index 0000000..0e7cbee
--- /dev/null
+++ b/doc/source/_ext/signals.py
@@ -0,0 +1,20 @@
+"""Adds a new directive signal for GObject signals"""
+
+import re
+
+from sphinx import addnodes
+
+signal_re = re.compile(r"([a-zA-Z-]+)\s->(.*)")
+
+def parse_signal(env, sig, signode):
+ match = signal_re.match(sig)
+ if not match:
+ signode += addnodes.desc_name(sig, sig)
+ return sig
+ name, args = match.groups()
+ signode += addnodes.desc_name(name, name)
+ signode += addnodes.desc_returns(args.strip(), args.strip())
+ return name
+
+def setup(app):
+ app.add_description_unit("signal", "sig", "pair: %s; signal", parse_signal)
diff --git a/doc/source/aptdaemon.client.rst b/doc/source/aptdaemon.client.rst
new file mode 100644
index 0000000..5cd04eb
--- /dev/null
+++ b/doc/source/aptdaemon.client.rst
@@ -0,0 +1,134 @@
+:mod:`aptdaemon.client` --- The client module
+=============================================
+
+Introduction
+------------
+
+Aptdaemon comes with a client module which provides a smoother interface on top
+of the D-Bus interface. It provides GObjects of the daemon and each transaction.
+
+
+.. _life_cycle:
+
+Life cycle of a transaction based action
+----------------------------------------
+
+At first you initialize an AptClient instance.
+
+ >>> from aptdaemon import client
+ >>>
+ >>> apt_client = client.AptClient()
+
+Secondly you call the whished action, e.g. updating the package cache. It will
+give you a new transaction instance.
+
+ >>> transaction = apt_client.update()
+
+The transaction has not been started yet. So you can make some further
+adjustements to it, e.g. setting a different language:
+
+ >>> transaction.set_locale("de_DE")
+
+... or setup the monitoring of the transaction:
+
+ >>> transaction.connect("finished", on_transaction_finished)
+
+You can then put the transaction on the queue by calling its :meth:`run()`
+method:
+
+ >>> transaction.run()
+
+If you don't need the underlying transcation instance of an action, you can
+alternatively set the wait argument to True. The AptClient method will return
+after the transaction is done:
+
+ >>> apt_client.update_cache(wait=True)
+
+This can also be used with asynchronous programming, see below.
+
+
+Asynchronous programming
+------------------------
+
+In the above examples simple synchronous calls have been made to the D-Bus.
+Until these calls return your whole application is blocked/frozen.
+In the case of password prompts this can be quite long. So aptdaemon supports
+the following asynchronous styles:
+
+D-Bus style callbacks
+^^^^^^^^^^^^^^^^^^^^^
+
+Since the client module is basically a wrapper around D-Bus calls, it provides
+a pair of reply_handler and error_handler for each method. You are perhaps
+already familiar with those if you have written a Python D-Bus client before:
+
+ >>> def run(trans):
+ ... trans.run(reply_handler=trans_has_started, error_handler=on_error)
+ ...
+ >>> def trans_has_started():
+ ... pass
+ ...
+ >>> def on_error(error):
+ ... raise error
+ ...
+ >>> client = AptClient()
+ >>> client.update(reply_handler=run, error_handler=on_error)
+
+
+Deferred callbacks
+^^^^^^^^^^^^^^^^^^
+
+Aptdaemon uses a simplified version of Twisted deferreds internally, called
+python-defer. But you can also make use of them in your application.
+
+The inline_callbacks decorator of python-defer allows to write asynchronous
+code in a synchronous way:
+
+ >>> @defer.inline_callbacks
+ ... def update_cache():
+ ... apt_client = client.AptClient()
+ ... try:
+ ... transaction = yield apt_client.update()
+ ... except errors.NotAuthorizedError:
+ ... print "You are not allowed to update the cache!"
+ ... return
+ ... yield transaction.set_locale("de_DE")
+ ... yield transaction.run()
+ ... print "Transaction has started"
+
+
+.. _chaining:
+
+Chaining Transactions
+---------------------
+
+It is possible to chain transactions. This allows to add a simple
+dependency relation, e.g. you want to add a new repository, update
+the cache and finally install a new package.
+
+ >>> client = aptdaemon.client.AptClient()
+ >>> trans1 = client.add_repository("deb", [...])
+ >>> trans2 = client.update_cache()
+ >>> trans3 = client.install_packages(["new-package"])
+ >>> trans2.run_after(trans1)
+ >>> trans3.run_after(trans2)
+ >>> trans1.run()
+
+If a transaction in a chain fails all other ones which follow will
+fail too with the :data:`enums.EXIT_PREVIOUS_FAILED` exit state.
+
+Class Reference
+---------------
+
+.. autoclass:: aptdaemon.client.AptClient
+ :members:
+
+.. autoclass:: aptdaemon.client.AptTransaction
+ :members:
+
+Function Reference
+------------------
+
+.. autofunction:: aptdaemon.client.get_transaction
+
+.. autofunction:: aptdaemon.client.get_aptdaemon
diff --git a/doc/source/aptdaemon.enums.rst b/doc/source/aptdaemon.enums.rst
new file mode 100644
index 0000000..5644820
--- /dev/null
+++ b/doc/source/aptdaemon.enums.rst
@@ -0,0 +1,5 @@
+:mod:`aptdaemon.enums` --- The enums module
+===========================================
+
+.. automodule:: aptdaemon.enums
+ :members:
diff --git a/doc/source/aptdaemon.gtk3widgets.rst b/doc/source/aptdaemon.gtk3widgets.rst
new file mode 100644
index 0000000..d54955a
--- /dev/null
+++ b/doc/source/aptdaemon.gtk3widgets.rst
@@ -0,0 +1,5 @@
+:mod:`aptdaemon.gtk3widgets` --- The gtk3widgets module
+=====================================================
+
+.. automodule:: aptdaemon.gtk3widgets
+ :members:
diff --git a/doc/source/conf.py b/doc/source/conf.py
new file mode 100644
index 0000000..37b4882
--- /dev/null
+++ b/doc/source/conf.py
@@ -0,0 +1,199 @@
+# -*- coding: utf-8 -*-
+#
+# aptdaemon documentation build configuration file, created by
+# sphinx-quickstart on Thu Aug 26 06:52:32 2010.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('../../'))
+sys.path.insert(0, os.path.abspath('_ext/'))
+
+# -- General configuration -----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', 'signals']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'aptdaemon'
+copyright = u'2010, Sebastian Heinlein'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.4'
+# The full version, including alpha/beta/rc tags.
+release = '0.4.0'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'aptdaemondoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'aptdaemon.tex', u'aptdaemon Documentation',
+ u'Sebastian Heinlein', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'http://docs.python.org/': None}
diff --git a/doc/source/dbus.rst b/doc/source/dbus.rst
new file mode 100644
index 0000000..7d4f71a
--- /dev/null
+++ b/doc/source/dbus.rst
@@ -0,0 +1,410 @@
+The D-Bus API of the aptdaemon
+==============================
+
+Aptdaemon provides two D-Bus interfaces on the system bus.
+
+org.debian.apt --- The aptdaemon interface
+------------------------------------------
+
+This is the main interface which allows you to perform package managing tasks.
+It is proivded by the aptdaemon object at ``/org/debian/apt``.
+
+There are two kind of tasks: ones which are performed immediately and ones
+which are queued up in transaction and performed in a sequence.
+
+Non-transaction based methods
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. automethod:: aptdaemon.core.AptDaemon.GetTrustedVendorKeys() -> array(string)
+
+.. automethod:: aptdaemon.core.AptDaemon.Quit()
+
+
+Transaction based methos
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Instead of performing the task immediately, a new transaction will be created
+and the method will return the D-Bus path of it. Afterwards you can simulate
+the transaction or put it on the queue.
+
+:ref:`life_cycle` and :ref:`chaining` are described in the Python client
+documentation with code examples.
+
+.. automethod:: aptdaemon.core.AptDaemon.UpdateCache() -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.UpdateCachePartially(sources_list : string) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.AddRepository(src_type : string, uri : string, dist : string, comps : array(string), comment : string, sourcesfile : string) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.EnableDistroComponent(component : string) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.InstallFile(path : string, force : boolean) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.InstallPackages(package_names : array(string)) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.RemovePackages(package_names : array(string)) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.UpgradePackages(package_names : array(string)) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.CommitPackages(install : array(string), reinstall : array(string), remove : array(string), purge : array(string), upgrade : array(string), downgrade : array(string)) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.UpgradeSystem(safe_mode : boolean) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.FixIncompleteInstall() -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.FixBrokenDepends() -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.AddVendorKeyFromKeyserver(keyid : string, keyserver : string) -> string
+
+.. automethod:: aptdaemon.core.AptDaemon.AddVendorKeyFromFile(path : string) -> string
+
+
+Signals
+^^^^^^^
+
+The following singal can be emitted on the org.debian.apt interface.
+
+.. automethod:: aptdaemon.core.AptDaemon.ActiveTransactionsChanged(current : string, queued : array(string))
+
+Properties
+^^^^^^^^^^
+
+The daemon interface provides a set of properties which can be accessed and modified through :meth:`Set()`, :meth:`Get()` and :meth:`GetAll()` methods of the ``org.freedesktop.DBus.Properties`` interface.
+See the `D-Bus specification <http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties>`_ for more details.
+
+The following properties are available:
+
+.. attribute:: AutoCleanInterval : i
+
+ The interval in days in which the cache of downloaded packages should
+ should be cleaned. A value of 0 disables this feature.
+
+ *writable*
+
+
+.. attribute:: AutoDownload : b
+
+ If available upgrades should be already downloaded in the background.
+ The upgrades won't get installed automatically.
+
+ *writable*
+
+.. attribute:: AutoUpdateInterval : i
+
+ The interval in days in which the software repositories should be checked
+ for updates. A value of 0 disables the automatic check.
+
+ *writable*
+
+.. attribute:: PopConParticipation : b
+
+ If statistics about installed software and how often it is used should be
+ sent to the distribution anonymously. This helps to determine which
+ software should be shipped on the first install CDROMs and to make software
+ recommendations.
+
+ *writable*
+
+.. attribute:: UnattendedUpgrade : i
+
+ The interval in days in which updates should be installed
+ automatically. A value of 0 disables this feature.
+
+ *writable*
+
+.. attribute:: RebootRequired : b
+
+ Set if a reboot is required in order to complete the update.
+
+ *readonly*
+
+
+org.debian.apt.transaction --- The transaction interface
+--------------------------------------------------------
+
+This is the main interface of a transaction object. It allows to control and
+monitor the transaction. Transactions are created by using the org.debian.apt
+interface of aptdaemon.
+
+The path of a transaction object consists of ``/org/debian/apt/transaction/`` and an unique identifier.
+
+Methods
+^^^^^^^
+
+.. automethod:: aptdaemon.core.Transaction.Run()
+
+.. automethod:: aptdaemon.core.Transaction.RunAfter(tid : string)
+
+.. automethod:: aptdaemon.core.Transaction.Cancel()
+
+.. automethod:: aptdaemon.core.Transaction.Simulate()
+
+.. automethod:: aptdaemon.core.Transaction.ProvideMedium(medium : string)
+
+.. automethod:: aptdaemon.core.Transaction.ResolveConfigFileConflict(config : string, answer : string)
+
+Signals
+^^^^^^^
+
+.. automethod:: aptdaemon.core.Transaction.Finished() -> string
+
+.. automethod:: aptdaemon.core.Transaction.PropertyChanged() -> string, variant
+
+Properties
+^^^^^^^^^^
+
+The transaction interface provides a set of properties which can be accessed and modified through :meth:`Set()`, :meth:`Get()` and :meth:`GetAll()` methods of the ``org.freedesktop.DBus.Properties`` interface.
+See the `D-Bus specification <http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties>`_ for more details.
+
+For the documentation of the available string enumerations, see :mod:`aptdaemon.enums`.
+
+The following properties are available:
+
+
+.. attribute:: AllowUnauthenticated : b
+
+ If it is allowed to install not authenticated packages by the transaction.
+ Defaults to False.
+
+ *writable*
+
+.. attribute:: Cancellable : b
+
+ If the transaction can be cancelled at the moment.
+
+ *read-only*
+
+.. attribute:: ConfigFileConflict : (ss)
+
+ If the transaction waits for the resolution of a configuration file
+ conflict, this property contains an array of the path to the old and
+ the path to the new configuration file. See
+ :meth:`ResolveConfigFileConflict()`.
+
+ *read-only*
+
+.. attribute:: DebconfSocket : s
+
+ The path to the socket which should be used to proxy debconf communication
+ to the user.
+
+ *writable*
+
+.. attribute:: Dependencies : (asasasasasasas)
+
+ Array of package groups which will be modified as dependencies:
+
+ * array of the packages to install
+ * array of the packages to re-install
+ * array of the packages to remove
+ * array of the packages to purge
+ * array of the packages to upgrade
+ * array of the packages to downgrade
+ * array of the packages to not upgrade (keep)
+
+ The packages are specified by their name and a version number
+ separated by an "=", e.g. "xterm=261-1".
+ The dependencies are calculated after :meth:`Simulate()` or :meth:`Run()`
+ was called.
+
+ *read-only*
+
+.. attribute:: Download : x
+
+ The required download size in Bytes.
+
+ The property is available after :meth:`Simulate()` or :meth:`Run()` has
+ been called.
+
+ *read-only*
+
+.. attribute:: Error : (ss)
+
+ If the transaction failed this property contains an array of the error
+ code, e.g. ``error-no-lock`` and a detailed error message.
+
+ *read-only*
+
+.. attribute:: ExitState : s
+
+ If the transaction is completed it contains the exit status enum of
+ the transaction, e.g. ``exit-failed``. If the transaction has not yet
+ been completed it is ``exit-unfinished``.
+
+ *read-only*
+
+.. attribute:: HttpProxy : s
+
+ The URL of an http proxy which should be used for downloads by
+ the transaction, e.g. ``http://proxy:8080``.
+
+ *writable*
+
+.. attribute:: Locale : s
+
+ The locale which is used to translate messages, e.g. ``de_DE@UTF-8``.
+
+ *writable*
+
+.. attribute:: MetaData : a{sv}
+
+ The meta data dictionary allows client applications to store additional
+ data persistently in the transaction object. The key has to be a string
+ and be prefixed by an underscore separated identifier of the client
+ application, e.g. Software Center uses ``sc_app`` to store the application
+ corresponding to the transaction.
+
+ If a dict is written to the property it will be merged with the existing
+ one. It is not allowed to override already existing keys.
+
+ *writable*
+
+.. attribute:: Progress : i
+
+ The progress in percent of the transaction.
+
+ *read-only*
+
+.. attribute:: Packages : (asasasasasas)
+
+ Array of package groups which have been specified by the user intially
+ to be modified:
+
+ * array of the packages to install
+ * array of the packages to re-install
+ * array of the packages to remove
+ * array of the packages to purge
+ * array of the packages to upgrade
+ * array of the packages to downgrade
+
+ The packages are specified by their name and an optional version number
+ separated by an "=", e.g. "xterm=261-1". Furthermore if specified the
+ target release of the package will be separated by a "/", e.g.
+ "xterm/experimental".
+
+ *read-only*
+
+.. attribute:: Paused : b
+
+ If the transaction is paused, e.g. it is waiting for a medium or the
+ resolution of a configuration file conflict.
+
+ *read-only*
+
+.. attribute:: ProgressDetails : (iixxdx)
+
+ A list with detailed progress information:
+
+ * number of already processed items
+ * number of total items
+ * number of already downloaded bytes
+ * number of total bytes which have to be downloaded
+ * number of bytes downloaded per second
+ * remaining time in seconds
+
+ *read-only*
+
+.. attribute:: ProgressDownload : (sssxxs)
+
+ The last progress information update of a currently running download.
+ A list of ..
+
+ * URL of the download
+ * status enum of the download, e.g. ``download-fetching``.
+ * short description of the download
+ * number of already downloaded bytes
+ * number of total bytes which have to be downloaded
+ * Status message
+
+ *read-only*
+
+.. attribute:: RemoveObsoletedDepends : b
+
+ If in the case of a removal obsolete dependencies which have been installed
+ automatically before should be removed, too.
+ *writable*
+
+.. attribute:: RequiredMedium : (ss)
+
+ If the transaction waits for a medium to be inserted this property contains
+ an array of the medium name and the path to the drive in which
+ it should be inserted.
+ *read-only*
+
+.. attribute:: Role : s
+
+ The enum representing the type of action performed by the transaction e.g.
+ ``role-install-packages``.
+ *read-only*
+
+.. attribute:: Space : x
+
+ The required disk space in Bytes. If disk spaces is freed the value will
+ be negative.
+
+ The property is available after :meth:`Simulate()` or :meth:`Run()` has
+ been called.
+
+ *read-only*
+
+.. attribute:: Status : s
+
+ The status enum of the transaction, e.g. ``status-loading-cache``.
+
+ *read-only*
+
+.. attribute:: StatusDetails : s
+
+ A human readable string with additional download information.
+
+ *read-only*
+
+.. attribute:: Terminal : s
+
+ The path to the slave end of the controlling terminal which should be
+ used to controll the underlying :command:`dpkg` call.
+
+ *writable*
+
+.. attribute:: TerminalAttached : b
+
+ If the controlling terminal can be used to control the underlying
+ :command:`dpkg` call.
+
+ *read-only*
+
+.. attribute:: Unauthenticated : as
+
+ List of packages which are going to be installed but are not from an
+ authenticated repository.
+
+ *read-only*
+
+
+.. _policykit:
+
+PolicyKit privileges
+--------------------
+
+Most actions require the user to authenticate. The PolicyKit
+framework is used by aptdaemon for the authentication process.
+This allows to run aptdaemon as root and the client application as normal user.
+
+For non-transaction based actions the authentication will happen immediately.
+For transaction based actions the privilege will be checked after :meth:`Run()`
+has been called. If the privilege has not yet been granted the user will
+be requested to authenticate interactively.
+This allows the user to simulate a transaction before having to
+authenticate.
+
+Aptdaemon supports so called high level privileges which allow to perform
+a specified set of actions in a row without having to authenticate for each
+one separately. This only works if the client application authenticates for
+the high level privilge before running the transactions and the authentication
+is cached.
+
+There are two high level privileges ``install-packages-from-new-repo`` and
+``install-purchased-software``. Both allow to add a repository, install the
+key of vendor from a keyserver, update the cache and to install packages.
+
+.. literalinclude:: ../examples/chained.py
diff --git a/doc/source/index.rst b/doc/source/index.rst
new file mode 100644
index 0000000..2b5976e
--- /dev/null
+++ b/doc/source/index.rst
@@ -0,0 +1,22 @@
+Aptdaemon documentation
+=======================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 2
+
+ aptdaemon.client
+ aptdaemon.enums
+ aptdaemon.gtk3widgets
+
+ dbus
+ plugins
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/doc/source/plugins.rst b/doc/source/plugins.rst
new file mode 100644
index 0000000..d3b35ef
--- /dev/null
+++ b/doc/source/plugins.rst
@@ -0,0 +1,68 @@
+Plugins
+=======
+
+Aptdaemon provides a plugin mechanism by making use of setuptools' entry points.
+The group name is ``aptdaemon.plugins``.
+
+Cache modifiers
+---------------
+
+Currently there are two types of plugins available which allow you to modify
+the marked changes of a transaction. Each plugin can be a function which
+accepts the resolver (apt.cache.ProblemResolver) and the cache (apt.cache.Cache)
+as arguments:
+
+ * *modify_cache_before*
+ The plugged-in function is called after the intentional changes of the
+ transaction have been marked, but before the dependencies have been resolved.
+
+ * *modify_cache_after*
+ The plugged-in function is called after the dependency resolution of the
+ transaction. The resolver will be called again afterwards.
+
+A short overview of the steps required to process a transaction:
+
+ 1. Mark intentional changes (e.g. the to be installed packages of a
+ InstallPackages transaction)
+ 2. Call all modify_cache_before plugins
+ 3. Run the dependency resolver
+ 4. Call all modify_cache_after_plugins and re-run the resolver
+ 5. Commit changes
+
+
+External helpers
+----------------
+
+There is also the *get_license_key* plugin which allows to retrieve the license
+key content and path to store. License keys are required by propriatary
+software. The plugged-in function gets called with uid of the user who started
+the transaction, the package name, a JSON OAuth tocken and the name of a
+server to query.
+
+Example
+-------
+
+Here is an example which would install language packages :file:`./plugins/aptd.py`:
+
+>>> def install_language_packs(resolver, cache):
+>>> """Marks the required language packs for installation."""
+>>> #... do the magic here ...
+>>> language_pack.mark_install(False, True)
+>>> # Only protect your changes if they are mantadory. If they cannot be
+>>> # be installed the transaction will fail.
+>>> resolver.clear(language_pack)
+>>> resolver.protect(language_pack)
+
+Finally you would have to register your function as entry point in :file:`setup.py`:
+
+>>> setup(
+>>> ...
+>>> entry_points="""[aptdaemon.plugins]
+>>> modify_cache_after=plugins.aptd:install_language_packs
+>>> """,
+>>> ...
+>>> )
+
+.. note::
+ Keep in mind that you can only register one entry point per name/plugin per
+ distribution.
diff --git a/gtk3-demo.py b/gtk3-demo.py
new file mode 100755
index 0000000..aa37b43
--- /dev/null
+++ b/gtk3-demo.py
@@ -0,0 +1,166 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+"""
+Provides a graphical demo application for aptdaemon
+"""
+# Copyright (C) 2008-2009 Sebastian Heinlein <sevel@glatzor.de>
+#
+# 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.
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+from optparse import OptionParser
+import logging
+
+# uncomment to use GTK 2.0
+#import gi
+#gi.require_version('Gtk', '2.0')
+#gi.require_version('Vte', '0.0')
+
+from gi.repository import GLib, Gtk
+
+import aptdaemon.client
+from aptdaemon.enums import *
+from aptdaemon.gtk3widgets import AptErrorDialog, \
+ AptConfirmDialog, \
+ AptProgressDialog
+import aptdaemon.errors
+
+
+class AptDaemonDemo(object):
+
+ """Provides a graphical test application."""
+
+ def _run_transaction(self, transaction):
+ dia = AptProgressDialog(transaction, parent=self.win)
+ dia.run(close_on_finished=True, show_error=True,
+ reply_handler=lambda: True,
+ error_handler=self._on_error)
+
+ def _simulate_trans(self, trans):
+ trans.simulate(reply_handler=lambda: self._confirm_deps(trans),
+ error_handler=self._on_error)
+
+ def _confirm_deps(self, trans):
+ if [pkgs for pkgs in trans.dependencies if pkgs]:
+ dia = AptConfirmDialog(trans, parent=self.win)
+ res = dia.run()
+ dia.hide()
+ if res != Gtk.ResponseType.OK:
+ return
+ self._run_transaction(trans)
+
+ def _on_error(self, error):
+ if isinstance(error, aptdaemon.errors.NotAuthorizedError):
+ # Silently ignore auth failures
+ return
+ elif not isinstance(error, aptdaemon.errors.TransactionFailed):
+ # Catch internal errors of the client
+ error = aptdaemon.errors.TransactionFailed(ERROR_UNKNOWN,
+ str(error))
+ dia = AptErrorDialog(error)
+ dia.run()
+ dia.hide()
+
+ def _on_upgrade_clicked(self, *args):
+ self.ac.upgrade_system(safe_mode=False,
+ reply_handler=self._simulate_trans,
+ error_handler=self._on_error)
+
+ def _on_update_clicked(self, *args):
+ self.ac.update_cache(reply_handler=self._run_transaction,
+ error_handler=self._on_error)
+
+ def _on_install_clicked(self, *args):
+ self.ac.install_packages([self.package],
+ reply_handler=self._simulate_trans,
+ error_handler=self._on_error)
+
+ def _on_install_file_clicked(self, *args):
+ chooser = Gtk.FileChooserDialog(parent=self.win,
+ action=Gtk.FileChooserAction.OPEN,
+ buttons=(Gtk.STOCK_CANCEL,
+ Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN,
+ Gtk.ResponseType.OK))
+ chooser.set_local_only(True)
+ chooser.run()
+ chooser.hide()
+ path = chooser.get_filename()
+ self.ac.install_file(path, reply_handler=self._simulate_trans,
+ error_handler=self._on_error)
+
+ def _on_remove_clicked(self, *args):
+ self.ac.remove_packages([self.package],
+ reply_handler=self._simulate_trans,
+ error_handler=self._on_error)
+
+ def __init__(self, package):
+ self.win = Gtk.Window()
+ self.package = package
+ self.win.set_resizable(False)
+ self.win.set_title("Aptdaemon Demo")
+ icon_theme = Gtk.IconTheme.get_default()
+ try:
+ Gtk.window_set_default_icon(icon_theme.load_icon("aptdaemon-setup",
+ 32, 0))
+ except (GLib.GError, AttributeError):
+ pass
+ button_update = Gtk.Button.new_with_mnemonic("_Update")
+ button_install = Gtk.Button.new_with_mnemonic("_Install %s" % self.package)
+ button_install_file = Gtk.Button.new_with_mnemonic("Install _file...")
+ button_remove = Gtk.Button.new_with_mnemonic("_Remove %s" % self.package)
+ button_upgrade = Gtk.Button.new_with_mnemonic("Upgrade _System")
+ button_update.connect("clicked", self._on_update_clicked)
+ button_install.connect("clicked", self._on_install_clicked)
+ button_install_file.connect("clicked", self._on_install_file_clicked)
+ button_remove.connect("clicked", self._on_remove_clicked)
+ button_upgrade.connect("clicked", self._on_upgrade_clicked)
+ vbox = Gtk.VBox()
+ vbox.add(button_update)
+ vbox.add(button_install)
+ vbox.add(button_install_file)
+ vbox.add(button_remove)
+ vbox.add(button_upgrade)
+ self.win.add(vbox)
+ self.loop = GLib.MainLoop()
+ self.win.connect("delete-event", lambda w, e: self.loop.quit())
+ self.win.show_all()
+ self.ac = aptdaemon.client.AptClient()
+
+ def run(self):
+ self.loop.run()
+
+
+def main():
+ parser = OptionParser()
+ parser.add_option("-p", "--package", default="cw", action="store",
+ dest="package",
+ help="Use this package for installation and removal")
+ parser.add_option("-d", "--debug", default=False, action="store_true",
+ help="Verbose debugging")
+ options, args = parser.parse_args()
+ if options.debug:
+ logging.basicConfig(level=logging.DEBUG)
+
+ demo = AptDaemonDemo(options.package)
+ demo.run()
+
+if __name__ == "__main__":
+ main()
+
+# vim:ts=4:sw=4:et
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..a3479f7
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,10 @@
+[encoding: UTF-8]
+data/org.debian.apt.policy.in
+aptdaemon/console.py
+aptdaemon/core.py
+aptdaemon/enums.py
+aptdaemon/gtk3widgets.py
+aptdaemon/lock.py
+aptdaemon/progress.py
+aptdaemon/worker/aptworker.py
+aptdaemon/worker/pkworker.py
diff --git a/po/af.po b/po/af.po
new file mode 100644
index 0000000..06d18f7
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,1446 @@
+# Afrikaans translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:40+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: Afrikaans <af@li.org>\n"
+"Language: af\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installeer pakketlêer"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Opdateer pakketinformasie"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Opgradeer pakkette"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Kanselleer die taak van 'n ander gebruiker"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB van %sB by %sB/s afgelaai"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB van %sB afgelaai"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Los afhanklikhede op"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Moet nie die daemoon afskakel weens onaktiwiteit nie"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Vertoon die interne verwerkingsinligting"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Beeindig en vervang 'n reeds hardlopende daemoon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Stoor profielstatistieke in die gespesifiseerde lêer"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Moenie veranderings maak op die stelsel nie (Slegs van nut vir "
+"programmeerders)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Geïnstalleerde lêer"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Geïnstalleerde pakkette"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Sleutel bygevoeg vanuit lêer"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Opgedateerde kas"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Betroubare sleutel verwyder"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Verwyderde pakkette"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Opgedateerde pakkette"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Opgegradeerde stelsel"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Toegepaste veranderings"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Onvoltooide installasie herstel"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Gebroke afhanklikhede herstel"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Suksesvol"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Gekanselleer"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Gefaal"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installeer lêer"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installeer pakkette"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Voeg sleutel by vanuit lêer"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Opdateer kas"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Verwyder betroubare sleutel"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Verwyder pakkette"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Opdateer pakkette"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Opgradeer stelsel"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Pas veranderings toe"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Herstel onvolledige installasie"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installasie van die pakketlêer het misluk"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installasie van die sagteware het misluk"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Verfrissing van die sagteware lys het misluk"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Verwydering van die handelaar vanuit die lys van betroubare handelaars het "
+"misluk"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Verwydering van sagteware het misluk"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Opdatering van sagteware het misluk"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Opgradering van stelsel het misluk"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Toepas van die sagteware veranderinge het misluk"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Herstel van onvolledige installasie het misluk"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Herstel van gebroke afhanklikhede het misluk"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Gaan jou internetkonneksie na"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontroleer of jy derdeparty sagtwarebronne gebruik. Indien wel, skakel dit "
+"uit aangesien dit 'n algemene bron van probleme is.\n"
+"Verder hardloop die volgende bevel in 'n terminaal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Die gekose lêer mag dalk nie 'n GPG sleutel lêer wees nie of is dalk "
+"beskadig."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Hierdie is 'n ernstige probleem. Probeer weer later. As die probleem weer "
+"voorkom, rapporteer die fout aan die programmeerders."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Daar is geen behoefte vir 'n opdatering nie."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Daar is geen behoefte vir 'n installasie nie"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Daar is geen behoefte vir 'n verwydering nie"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Jy het versoek dat 'n pakket, wat 'n noodsaaklike deel van jou stelsel is, "
+"verwyder word"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Die konneksie tot die daemoon is gebreek. Heel moontlik omdat die "
+"agtergronddaemoon gefaal het."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Die installasie of verwydering van 'n sagtewarepakket het misluk"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Die installasie kon misluk het as gevolg van 'n fout in die ooreenstemmende "
+"sagtewarepakket, of dit was gekanselleer op 'n ongeldige manier. Jy sal dit "
+"moet herstel alvorens jy enige verdere sagteware kan installeer of verwyder."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Aflaai van pakketlêers het misluk"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Aflaai van sagtewarebron informasie het misluk"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakketafhanklikhede kon nie opgelos word nie"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Die pakketstelsel is gebreek"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Sleutel was nie geïnstalleer nie"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Sleutel is nie verwyder nie"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Kon nie die pakketbestuurder sluit nie"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Kon nie die pakketlys laai nie"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakket bestaan nie"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakket is reeds geïnstalleer"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakket is nie geïnstalleer nie"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Kon nie die noodsaaklike stelselpakket verwyder nie"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Taak kan nie gemonitor of uitgevoer word nie"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakket operasie het misluk"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Vereis die installasie van onbetroubare pakkette"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Vorige installasie is onvoltooid"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Wag vir die diens om aan te skakel"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Wag tans"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Wag tans op die vereiste medium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Wag tans vir die ander sagtewarebestuurders om af te sluit"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Wag tans op die por vanaf die verstellingslêer"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Aktiewe taak"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Besig om af te laai"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Opruim"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Afgehandel"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Kanselleer"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Laai van sagteware lys"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installeer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Verstel %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Verwyder %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Hardloop postinstallasie sneller %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Opgradeer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB van %sB by %sB/s afgelaai"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB van %sB afgelaai"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' word benodig"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Gaan v_oort"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Vervang jou veranderings in '%s' met 'n latere weergawe van die "
+"verstellingslêer"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Indien jy onseker is hoekom die lêer reeds daar voorkom is dit gewoonlik "
+"veilig om te vervang."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Veranderings"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Behou"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Ve_rvang"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Die byvoeging van die sleutel tot die lys van vertroude "
+#~ "sagtewarehandelaars het misluk"
diff --git a/po/am.po b/po/am.po
new file mode 100644
index 0000000..8fcff04
--- /dev/null
+++ b/po/am.po
@@ -0,0 +1,1420 @@
+# Amharic translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-09-20 00:25+0000\n"
+"Last-Translator: samson <Unknown>\n"
+"Language-Team: Amharic <am@li.org>\n"
+"Language: am\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "የወረዱ ጥቅል ፋይሎችን ማስወገጃ"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "የሶፍትዌር ማጠራቀሚያ ማሰናጃን ለመቀየር ማረጋገጫ ያስፈልጋል"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "የጥቅል ፋይልን መግጠም"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "ይህን ጥቅል ለመግጠም ማረጋገጫ ያስፈልጋል"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "የጥቅል መረጃዎችን ማሻሻል"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "ጥቅሎችን መግጠሚያ ወይም ማስወገጃ"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "ሶፍትዌርን ለመግጠም ወይም ለማስወገድ ማረጋገጫ ያስፈልጋል"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "ሶፍትዌርን ከሌላ ምንጭ ለመግጠም ማረጋገጫ ያስፈልጋል"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "የተገዛ ሶፍትዌርን ለመግጠም ማረጋገጫ ያስፈልጋል"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "ጥቅሎችን ማሻሻል"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "የተሻሻሉ ሶፍትዌሮችን ለመግጠም ማረጋገጫ ያስፈልጋል"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "መሰረዝ የሌላ ተጠቃሚን ስራዎች"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "የሌላ ተጠቃሚን ሶፍትዌር ለመሰረዝ ማረጋገጫ ያስፈልጋል"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ስህተት"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "ወርዷል %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "ወርዷል %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ስህተት :"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "ይህን ተግባር ለመፈጸም አይችሉም"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "መቀጠል ይፈልጋሉ [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "የተሰጠውን ጥቅል መግጠሚያ"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "የውስጥ ሂደቱን መረጃ ማሳያ"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "የተገጠመው ፋይል"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "የተገጠሙት ጥቅሎች"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "ከፋይል የተጨመረ ቁልፍ"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "የተወገዱ ጥቅሎች"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "ጥቅሎችን ማሻሻል"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "ስርአቱን ማሻሻል"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "የተተገበሩ ለውጦች"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "ተሳክቷል"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "የተሰረዘ"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "ወድቋል"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ፋይል በመግጠም ላይ"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "ጥቅሎችን በመግጠም ላይ"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ከፋይል ቁልፍ በመጨመር ላይ"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "ጥቅሎችን በማስወገድ ላይ"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "ጥቅሎችን በማሻሻል ላይ"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "ስርአቱን በማሻሻል ላይ"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "ለውጦችን በመተግበር ላይ"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "የጥቅሉን ፋይል መግጠም አልተሳካም"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "ሶፍትዌሩን መግጠም አልተሳካም"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "ሶፍትዌሩን ማነቃቃት አልተሳካም"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "ሶፍትዌሩን ማስወገድ አልተሳካም"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "ሶፍትዌሩን ማሻሻል አልተሳካም"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "ስርአቱን ማሻሻል አልተሳካም"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "የሶፍትዌር ለውጦቹን መተግበር አልተሳካም"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "የኢንተርኔት ግንኙነቶን ይመርምሩ"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "የተመረጠው ፋይል ምናልባት የጂፒጂ ቁልፍ ፋይል አይደለም ወይም የተበከለ ነው"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "ማሻሻል አይስፈልጎትም"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "መግጠም አይስፈልጎትም"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "ማስወገድ አይስፈልጎትም"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "የሶፍትዌር ጥቅል መግጠም ወይም ማስወገድ ወድቋል"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "ይህን ተግባር ለመፈጸም አይችሉም"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "የጥቅል ፋይሎችን ማውረድ ወድቋል"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "የማስቀመጫ መረጃ ማውረድ ወድቋል"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "ቁልፍ አልተገጠመም"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "ቅልፍ አልተወገደም"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "የጥቅል አስተዳዳሪውን መቆለፍ ወድቋል"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "የጥቅል ዝርዝር መጫን ወድቋል"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "ጥቅሉ አልተገኘም"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "ጥቅሉ ቀደም ብሎ ተገጥሟል"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "ጥቅሉ አልተገጠመም"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "ስራዎቹን መመልከት ወይም መቆጣጠር አልተቻለም"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "ያልታመኑ ጥቅሎችን መግጠም ያስፈልጋል"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "ግልጋሎቱን ለመጀመር በመጠበቅ ላይ"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "ስራዎችን በማስኬድ ላይ"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "በማውረድ ላይ"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "በማጽዳት ላይ"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "ጨርሷል"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "በመሰረዝ ላይ"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "የሶፍትዌር ዝርዝሮችን በመጫን ላይ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "በመግጠም ላይ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "በማዋቀር ላይ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "በማስወገድ ላይ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "በማሻሻል ላይ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "ወርዷል %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "ወርዷል %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "ዝርዝሮች"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "ሲዲ/ዲቪዲ '%s' ያስፈልጋል"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_ማስቀመጥ"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_መተካት"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_ዝርዝሮች"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..a8eed24
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,1462 @@
+# Arabic translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-29 13:50+0000\n"
+"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
+"Language-Team: Arabic <ar@li.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
+"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "قائمه بمفاتيح البائعين الموثوقين"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "لعرض قائمه بالمفاتيح الموثوقة، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "إزالة ملفات الحزم المنزّلة"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "لمسح ملفات الحزم المنزّلة، تحتاج للاستيثاق"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "لتغيير إعدادات البرنامج، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "لتغيير إعدادات مستودعات البرمجيات، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "لتثبيت هذه الحزمة، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "تحديث معلومات الحزم"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "لتحديث فهرس البرمجيات, تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "تثبيت أو إزالة حزم"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "لتثبيت أو إزالة البرمجيات، تحتاج للاستيثاق."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "لتثبيت برنامج، تحتاج للاستيثاق."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "أضِف مصدرا جديدا وثبّت الحزم من خلاله"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "لتثبيت برمجيات من مصادر جديدة، تحتاج للاستيثاق."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "أضِف مستودعا جديدا للبرمجيات المشتراة وثبّت الحزم من خلاله"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "لتثبيت البرمجيات المشتراة، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "ترقية الحزم"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "لتثبيت البرمجيات المُحدّثة، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "إلغاء المهمة لمستخدم آخر"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "لإلغاء التغيرات البرمجية لشخص آخر، تحتاج للاستيثاق."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "لاستخدام خادوم وسيط لتنزيل البرمجيات، تحتاج للاستيثاق."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "خطأ"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "تم تنزيل %sب من %sب بـ %sب/ث"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "تم تنزيل %sب من %sب"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "خطأ:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "غير مسموح لك بتنفيذ هذا الإجراء."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "سيتم تثبيت الحزم الجديدة التالية (%(count)s):"
+msgstr[1] "سيتم تثبيت الحزمة الجديدة التالية:"
+msgstr[2] "سيتم تثبيت الحزمتين الجديدتين التاليتين:"
+msgstr[3] "سيتم تثبيت الحزم الجديدة التالية (%(count)s):"
+msgstr[4] "سيتم تثبيت الحزم الجديدة التالية (%(count)s):"
+msgstr[5] "سيتم تثبيت الحزم الجديدة التالية (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "سيتم ترقية الحزم التالية (%(count)s):"
+msgstr[1] "سيتم ترقية الحزمة التالية:"
+msgstr[2] "سيتم ترقية الحزمتين التاليتين:"
+msgstr[3] "سيتم ترقية الحزم التالية (%(count)s):"
+msgstr[4] "سيتم ترقية الحزم التالية (%(count)s):"
+msgstr[5] "سيتم ترقية الحزم التالية (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "سيتم إزالة الحزم التالية (%(count)s):"
+msgstr[1] "سيتم إزالة الحزمة التالية:"
+msgstr[2] "سيتم إزالة الحزمتين التاليتين:"
+msgstr[3] "سيتم إزالة الحزم التالية (%(count)s):"
+msgstr[4] "سيتم إزالة الحزم التالية (%(count)s):"
+msgstr[5] "سيتم إزالة الحزم التالية (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "سيتم تثبيط الحزم التالية(%(count)s):"
+msgstr[1] "سيتم تثبيط الحزمة التالية:"
+msgstr[2] "سيتم تثبيط الحزمتين التاليتين:"
+msgstr[3] "سيتم تثبيط الحزم التالية(%(count)s):"
+msgstr[4] "سيتم تثبيط الحزم التالية(%(count)s):"
+msgstr[5] "سيتم تثبيط الحزم التالية(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "سيعاد تثبيت الحزم التالية (%(count)s):"
+msgstr[1] "سيعاد تثبيت الحزمة التالية:"
+msgstr[2] "سيعاد تثبيت الحزمتين التاليتين:"
+msgstr[3] "سيعاد تثبيت الحزم التالية (%(count)s):"
+msgstr[4] "سيعاد تثبيت الحزم التالية (%(count)s):"
+msgstr[5] "سيعاد تثبيت الحزم التالية (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "يحتاج لجلب %sب من الأرشيفات."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "بعد هذه العملية، سوف تُستخدم %sب من المساحة الإضافية على القرص."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "بعد هذه العملية، سوف تُفرّغ %sب من المساحة على القرص."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "حاول إنهاء التثبيت السابق الغير مكتمل"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "في انتظار الاستيثاق"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "ملف مُثبّت"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "حزم مُثبّتة"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "أضف مفتاحا من ملف"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "حدّث الخبيئة"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "احذف مفتاحا غير موثوق"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "حزم محذوفة"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "حزم مُحدّثة"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "نظام مرقّى"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "ناجح"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "ملغى"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "فشل"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "يثبّت الملف"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "يثبّت الحزم"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "تحديث الخبيئة"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "يطبّق التغييرات"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "تفقّد اتصالك بالإنترنت."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"تحقق مما إذا كنت تستخدم مستودعات طرف ثالث .إذا كان كذلك عطلها، حيث أنها "
+"تعتبر مصدر شائع للأخطاء.\n"
+"علاوة على ذلك قم بتنفيذ الأمر التالي في الطرفية: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"تحقق مما إذا كان هناك برنامج إدارة برمجيات آخر يعمل (مثل: Synaptic أو "
+"aptitude). يُسمح لبرنامج إدارة برمجيات واحد فقط بإجراء تغييرات في نفس الوقت."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "ليس هناك أي حاجة للتحديث."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"فُقد الاتصال بالعفريت. على الأرجح فإن العفريت الذي يعمل في الخلفية قد انهار."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "فشل التثبيت أو الإزالة لحزمة برمجية."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"يبدو أن هناك خطأ برمجيا في aptdaemon، وهي البرمجية التي تتيح لك تثبيت وإزالة "
+"البرمجيات، وأداء مهام أخرى ذات صلة بإدارة الحزم."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "يتطلب ذلك تثبيت حزم من مصادر غير موثوقة."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"فشل التثبيت بسبب خطأ متعلق بحزمة البرمجية أو بسبب إلغاءه بطريقة غير ملائمة. "
+"عليك إصلاح ذلك قبل أن تتمكن من تثبيت أو إزالة أي برمجيات أخرى."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"لا يُسمح بتثبيت الحزم التي تنتهك معايير الجودة. قد يتسبب ذلك في حدوث مشكلات "
+"خطيرة على حاسوبك. رجاءً اتصل بالشخص أو المنظمة التي تقدم هذه الحزمة وضمّن "
+"التفاصيل أدناه."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "غير مسموح لك بتنفيذ هذا الإجراء."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "فشل في تنزيل ملفات الحزم"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "فشل في تنزيل معلومات المستودع"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "حزمة النظام معطوبة"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "فشل في تحميل قائمة الحزم"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "فشل في إزالة حزم نظام أساسية"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "تعذّر رصد المهمة أو التحكم بها"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "فشل عملية حزمة"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "يتطلب تثبيت حزم غير موثوقة"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "الحزمة ذات جودة سيئة"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "فشل في تنزيل مفتاح الترخيص"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "فشل في تثبيت مفتاح الترخيص"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "حدث خطأ لا يمكن التعامل معه"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "في انتظار بدء الخدمة"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "ينتظر"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "في انتظار الوسيط المطلوب"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "في انتظار مديرو البرمجيات الأخرى حتى تنتهي"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ينزّل"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "يستعلم عن مصادر البرمجيات"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "انتهى"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "يلغي"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "يحمّل قائمة البرمجيات"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "يثبّت %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "يُحضّر لتثبيت %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "يُحضّر لإعداد %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "يُحضّر لإزالة %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "يُحضّر لإزالة %s إزالة كاملة"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "فشل الاستيثاق"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "تم تنزيل %sب من %sب بـ %sب/ث"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "تم تنزيل %sب من %sب"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "تفاصيل"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "تم تنزيل %sب"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "سيتم تنزيل ما مجموعه %sب"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_تفاصيل"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "في انتظار %s حتى ينتهي"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "ينزّل %(files)s"
+msgstr[1] "ينزّل %(files)s"
+msgstr[2] "ينزّل %(files)s"
+msgstr[3] "ينزّل %(files)s"
+msgstr[4] "ينزّل %(files)s"
+msgstr[5] "ينزّل %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "ينزّل من %s"
+msgstr[1] "ينزّل من %s"
+msgstr[2] "ينزّل من %s"
+msgstr[3] "ينزّل من %s"
+msgstr[4] "ينزّل من %s"
+msgstr[5] "ينزّل من %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ast.po b/po/ast.po
new file mode 100644
index 0000000..630fb9c
--- /dev/null
+++ b/po/ast.po
@@ -0,0 +1,1490 @@
+# Asturian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-02 12:54+0000\n"
+"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
+"Language-Team: Asturian <ast@li.org>\n"
+"Language: ast\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Llistar les claves de vendedores de confianza"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Pa ver la llista de claves de confianza, tienes d'autentificate."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Desaniciar los ficheros de paquete descargaos"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Pa llimpiar los ficheros de paquetes descargaos, necesites autenticate."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Camudar la configuración del software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Pa camudar la configuración del software, necesites autenticate."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Camudar repositoriu de software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Pa camudar les preferencies de los repositorios de software, tienes "
+"d'autentificate."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalar ficheru de paquete"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Pa instalar esti paquete, necesites autenticate"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Anovar información de paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Pa instalar el catálogu de software, necesites autenticate"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalar o desaniciar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Pa instalar o desaniciar software, necesites autenticate"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalar software dende un repositoriu de llista blanca altamente confiable."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Pa instalar software, necesites autenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Amestar un repositoriu nuevu ya instalar paquetes d'él"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Pa instalar software d'un orixen nuevu, necesites identificate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Amestar un repositoriu nuevu de software mercáu ya instalar paquetes d'él"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Pa instalar software mercáu, necesites identificate."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Anovar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Pa instalar software anováu, necesites autenticate"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Encaboxar la xera d'otru usuariu"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Pa encaboxar los cambeos de software, necesites autenticate."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Afitar un proxy pa descargues de software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "Pa usar un sirvidor proxy y baxar software, necesites autenticate"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FALLU"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Descargando %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Descargando %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FALLU:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Nun tienes permisos pa facer esta aición."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Encolar"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Iguando dependencies"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Va instalase'l siguiente paquete NUEVU (%(count)s):"
+msgstr[1] "Van instalase los siguientes paquetes NUEVOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Va anovase'l siguiente paquete (%(count)s):"
+msgstr[1] "Van anovase los siguientes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "El siguiente paquete va DESANICIASE (%(count)s):"
+msgstr[1] "Los siguientes paquetes van DESANICIASE (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "El siguiente paquete va DESANOVASE (%(count)s):"
+msgstr[1] "Los siguientes paquetes van DESANOVASE (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Va reinstalase'l siguiente paquete (%(count)s):"
+msgstr[1] "Van reinstalase los siguientes paquetes (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Retúvose'l siguiente paquete (%(count)s):"
+msgstr[1] "Retuviéronse los siguientes paquetes (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Necesítase descargar %sB d'archivos."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Dempués d'esta operación, van usase %sB d'espaciu adicional nel discu."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Dempués d'esta operación, van lliberase %sB d'espaciu nel discu."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "¿Quies siguir [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Pa operar con más d'un paquete tienes d'allugar los nomes de los paquetes "
+"ente comines:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refrescar la caché"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Intentar iguar dependencies frañaes. Operación potencialmente peligrosa, "
+"porque podría intentar desaniciar munchos paquetes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Intentar finar una instalación previa incompleta"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalar los paquetes proporcionaos"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalar los paquetes proporcionaos"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Desaniciar los paquetes proporcionaos"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Desaniciar los paquetes proporcionaos incluyendo los ficheros de "
+"configuración"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Desanovar los paquetes daos"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsoletu: Por favor usa --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Anovar el sistema en mou seguru"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Anovar el sistema, dablemente instalando y desaniciando paquetes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Amestar al fabricante como confiable"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Amestar el keyid del fornidor (tamién necesita --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Usa'l sirvidor de claves dau pa guetar les claves"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Amestar repositoriu nuevu dende'l deb-line proporcionáu"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especifica un ficheru sources.list.d alternativu al que tendríen d'amestase "
+"los repositorios."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Llista de claves de fornidores de confianza"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Desaniciar la clave autenticada de la buelga proporcionada"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurar paquetes instalaos. Opcionalmente pue especificase la prioridá "
+"mínima de les entrugues"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La prioridá mínima d'entruga de debconf que va amosase"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Nun axuntar a la terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permitir paquetes dende fontes ensin autentificar"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Amosar información adicional tocante a los paquetes. Anguaño, namái el "
+"númberu de versión"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Esperando por autentificación"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Nun parar el degorriu en casu d'inactividá"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Nun cargar complementos"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Amosar información del procesamientu internu"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Salir y camudar un degorriu que yá tea executándose"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escuchar nel bus de sesión de DBus (necesariu namái pa pruebes"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Fai operaciones nel chroot dau"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Guardar estadístiques de perfil nel ficheru especificáu"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Nun facer cambeos al sistema (Namái pa usu de desendolcadores)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Ficheru instaláu"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquetes instalaos"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Clave amestada dende ficheru"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Caché anovada"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Gueta fecha"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Clave de confianza desaniciada"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paquetes desaniciaos"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paquetes anovaos"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema anováu"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Cambeos aplicaos"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instalación incompleta iguada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependencies frañaes iguaes"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Orixen de software amestáu"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Componente de la distribución activáu"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Desaniciáronse los paquetes descargaos"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfiguráronse los paquetes instalaos"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Completáu"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Encaboxáu"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Falló"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalando ficheru"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalando paquetes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Amestando clave dende ficheru"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Anovando caché"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Desaniciando clave de confianza"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Desaniciando paquetes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Anovando paquetes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Anovando sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplicando cambeos"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Iguando instalación incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Iguando software instaláu"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Amestando orixen de software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Activando componente de la distribución"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Desaniciando los ficheros de paquetes descargaos"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfigurando paquetes instalaos"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Guetando"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Falló la instalación del ficheru de paquete"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Falló la instalación de software"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Fallu al amestar la clave a la llista de fornidores de software de confianza"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Falló l'anovamientu de la llista de software"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Hebo un fallu al desaniciar el fornidor de la llista de confianza"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Falló'l desaniciu de software"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Falló l'anovamientu de software"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Falló l'anovamientu del sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Falló l'aplicación de cambeos de software"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Falló la igua de la instalación incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Falló la igua de les dependencies frañaes"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Falló amestar orixen de software"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Falló activar componente de la distribución"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Falló'l desaniciu de ficheros de paquetes descargaos"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Falló la gueta"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Amestando clave de llicencia"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Compruebe la so conexón a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Mira a ver si tas usando repositorios de terceros. Nesi casu, desactívalos, "
+"porque son fonte de problemes.\n"
+"Darréu, executa'l siguiente comandu nuna terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"El ficheru esbilláu puede que nun seya una clave de ficheru GPG o puede que "
+"tea frañáu."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"La clave esbillada nun puede desaniciase. Comprueba que disti una buelga "
+"válida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Comprueba si tas executando anguaño otra ferramientas de xestión de "
+"software, por exemplu Synaptic o aptitude. Namái puede usase una ferramienta "
+"cada vegada."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Esti ye un problema seriu. Inténtalo otra vegada más sero. Si'l problema "
+"sigui apareciendo, informa del fallu a los desendolcadores."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Verifica'l nome del paquete, y que'l repositoriu apropiáu ta activáu."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nun fai falta dengún anovamientu."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nun hai necesidá d'anovar"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nun hai necesidá d'una desinstalación."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Solicitasti desinstalar un paquete que ye parte esencial del sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Perdióse la conexón col degorriu. Dablemente'l degorriu de segundu planu "
+"dexó de furrular."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Falló al instalar o desinstalar un paquete de software."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La carauterística solicitada nun ta permitida."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Paez que hai un fallu de programación en aptdaemon, el software que permite "
+"instalar o desaniciar software y facer otres xeres de xestión de paquetes "
+"rellacionaes."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Esti fallu podría debese a que se necesiten paquetes de software adicionales "
+"que falten o que nun son instalables. Tamién podría ser un conflictu ente "
+"paquetes de software que nun pueden instalase xuntos."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Los paquetes a instalar necesarios de fontes non autenticaes."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"La instalación pudo tener fallao por un fallu nos paquetes correspondientes "
+"de software o encaboxóse d'un mou incorreutu. Tienes d'iguar esto enantes de "
+"poder instalar o desaniciar cualesquier otru software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Copia'l ficheru al to equipu llocal y comprueba los servicios."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Nun se permite la instalación de cualquier paquete que viole los estándares "
+"de calidá. Eso podría causar problemes serios nel equipu. Contauta cola "
+"persona u organización que t'apurrió esti ficheru de paquete ya inclúi los "
+"detalles a continuación."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clave de la llicencia descargada requerida pa executar esti software nun "
+"ye válida o nun pudo instalase correcho.\n"
+"Llei los detalles pa tener más información."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Tolos anovamientos disponibles yá foron instalaos."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Nun pudo descargase la clave de llicencia que permite l'usu d'esti software. "
+"Comprueba la to conexón de rede."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Nun tienes los privilexos necesarios pa facer esta aición."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"O bien disti una contraseña incorreuta o encaboxasti l'autorización.\n"
+"Pue ser qu'heba una razón téunica pa esti fallu si nun visti un diálogu pa "
+"la contraseña: el to entornu d'escritoriu nun proporciona un axente de "
+"sesión de PolicyKit"
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Falló al descargar los ficheros de paquetes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Falló al descargar la información del repositoriu"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Les dependencies del paquete nun pudieron iguase"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "El paquete de sistema ta frañáu"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "La clave nun s'instaló"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "La clave nun se desanició"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Falló al bloquiar el xestor de paquetes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Falló al cargar la llista de paquetes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "El paquete nun existe"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "El paquete yá ta anováu a la data"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "El paquete yá ta instaláu"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "El paquete nun s'instaló"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Falló al desinstalar un paquete esencial del sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "La xera nun pudo monitorizase o controlase"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Falló la operación col paquete"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requierse la instalación de paquetes non confiables"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Una instalación previa nun se completó"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "El paquete ye de mala calidá"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "El ficheru de paquete nun pue abrise"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Carauterística non permitida"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Falló la descarga de la clave de llicencia"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Fallu na instalación de la clave de llicencia"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "El sistema yá ta anováu"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Nun se te pudo autorizar"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Nun se te permite facer esta aición"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Hebo un fallu que nun puede remanase."
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Esperando l'aniciu del serviciu"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Aguardando"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Esperando'l soporte requeríu"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Esperando que los demás xestores de paquetes se zarren"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Esperando la solicitú del ficheru de configuración"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Executando xera"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Baxando"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Consultando los oríxenes del software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Llimpiando"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Fináu"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Encaboxando"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Cargando la llista de software"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Desaniciando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Desaniciando dafechu %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Anotando desaniciáu de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando activador de post-instalación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Anovando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Desempaquetando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparando la instalación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparando la configuración %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparando'l desaniciu de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparando pa desaniciar %s dafechu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instaláu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s desinstalóse dafechu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s desinstaláu"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fecho"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Falló l'autenticación"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Descargando"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactivu"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "La rede nun ta disponible"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Procesando %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Descargando %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Descargando %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalles"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Ficheru"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Descargáu %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Descargáu"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Necesítase'l CD/DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Inxerta' CD/DVD na unidá '%s' pa instalar los paquetes de software dende él."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Continuar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Desaniciar"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purgar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Anovar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Desanovar"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Omitir anovamientu"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Écha-y un güeyu a la llista de cambeos."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Hai d'instalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Hai de reinstalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Hai de desinstalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Hai de desaniciar ensembre software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Hai d'anovar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Hai de desanovar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Van omitise los anovamientos"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Necesítense cambeos adicionales"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Van descargase %sB en total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Va lliberase %sB d'espaciu en discu."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Van usase %sB más d'espaciu en discu"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"¿Trocar los tos cambeos en «%s» cola cabera versión del ficheru de "
+"configuración?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Si nun sabes por qué'l ficheru yá ta ellí, xeneralmente ye seguro trocalu."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Cambeos"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Caltener"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Trocar"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalles"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Esperando a %s pa colar"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Descargando %(files)s"
+msgstr[1] "Descargando %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositoriu llocal"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Descargando de %s"
+msgstr[1] "Descargando de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estructura de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descripción de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Robla de descripción de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquetes disponibles de %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Oríxenes disponibles de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Tornes disponibles de %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Tornes pa %s (%s) de %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Tornes pa %s de %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traducciones (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "El paquete %s nun ta disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "El paquete %s nun ta instaláu"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versión %s de %s nun ta instalada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "El paquete %s yá ta instaláu"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versión %s de %s nun ta disponible."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "El URL del sirvidor de claves nun ye válidu: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "El protocolu del sirvidor nun ye válidu: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Id de clave inválidu: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Falló al descargar ya instalar la clave %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "El ficheru clave file %s nun pue instalase: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "La clave cola buelga %s nun pue desaniciase: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "El paquete %s nun pue desaniciase."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versión %s de %s nun ta instalada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "L'antigua versión %s de %s yá ta instalada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versión %s de %s yá ta instalada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versión %s de %s nun ta disponible"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Necesites especificar una versión a la que desanovar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "La cabera versión %s de %s yá ta instalada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "El paquete %s nun ta disponible na distribución %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "El paquete %s nun pue desaniciase"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"El paquete nun proporciona un campu de control del tamañu d'instalación "
+"válidu. Llei la política de Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clave de la llicencia ta balera."
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clave de la llicencia nun pue contener códigu executable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "La ruta %s de la clave de llicencia ye invalida"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clave de llicencia yá esiste: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"L'allugamientu de la clave de llicencia nun ye seguru, yá que contién "
+"enllaces simbólicos. La ruta %s asigna a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "El direutoriu pa instalar la clave aínda nun esiste: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Fallu al escribir el ficheru de clave a: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Los siguientes paquetes tienen dependencies ensin cubrir:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "pero ye un paquete virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "pero nun ta instaláu"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "pero nun va instalase"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "pero %s ta instaláu"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "pero %s nun ta instaláu"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Hebo un fallu al amestar la clave a la llista de fornidores de software "
+#~ "de confianza"
diff --git a/po/az.po b/po/az.po
new file mode 100644
index 0000000..3c320b3
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,1420 @@
+# Azerbaijani translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-08-28 18:25+0000\n"
+"Last-Translator: Ali Ismayilov <Unknown>\n"
+"Language-Team: Azerbaijani <az@li.org>\n"
+"Language: az\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "İnanılmış vendorların açar siyahısı"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Yüklənmiş paket fayllarını sil"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Proqram təminatının konfiqurasiyasını dəyiş"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Proqram təminatı repositorunu dəyiş"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Paket faylını yüklə"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Paketləri yüklə və ya sil"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Yeni repositor əlavə et və ordan paketlər yüklə"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Alınmış proqramların yeni repositorun əlavə et və ordan paketləri yüklə"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Başqa istifadəçinin işini dayandır"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Proqram təminatını yükləmək üçün proxy müəyyən et"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/be.po b/po/be.po
new file mode 100644
index 0000000..4d77db3
--- /dev/null
+++ b/po/be.po
@@ -0,0 +1,1496 @@
+# Belarusian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-14 16:03+0000\n"
+"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
+"Language-Team: Belarusian <be@li.org>\n"
+"Language: be\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Спіс ключоў давераных пастаўшчыкоў"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Для прагляду спісу давераных ключоў патрабуецца аўтэнтыфікацыя."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Выдаліць файлы загружаных пакетаў"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Вам неабходна аўтарызавацца для ачысткі файлаў загружаных пакетаў."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Змяніць сховішча з праграмамі"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Вам трэба аўтарызавацца для змены налад праграмнага забеспячэння."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Змяніць сховішча праграмнага забеспячэння"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Каб змяніць налады сховішча, вы павінны аўтарызавацца."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Усталёўка файла пакета"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Каб усталяваць гэты пакет, вы павінны аўтарызавацца."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Абнаўленне інфармацыі аб пакетах"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Для абнаўлення каталога праграмнага забеспячэння патрабуецца аўтэнтыфікацыя."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Усталяваць ці выдаліць пакеты"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Каб усталяваць ці выдаліць праграму, вы павінны аўтарызавацца."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Дадаць новае сховішча і ўсталяваць пакеты з яго"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Каб усталяваць праграмы з новай крыніцы, вы павінны аўтарызавацца."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Дадаць новае сховішча платнага праграмнага забеспячэння і ўсталяваць пакеты "
+"з яго"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Каб усталяваць набытыя праграмы, вы павінны аўтарызавацца."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Абнаўленне пакетаў"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Для ўсталёўкі абнаўленняў патрабуецца аўтэнтыфікацыя."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Адмяніць задачу іншага карыстальніка"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Для скасавання не сваіх змен у праграмным забеспячэнні патрабуецца "
+"аўтэнтыфікацыя."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Усталяваць проксі-сервер для загрузак праграм"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Для карыстання з проксі сервера для загрузкі праграмнага забеспячэння "
+"патрабуецца аўтэнтыфікацыя."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ПАМЫЛКА"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Загружана %sB з %sB на хуткасці %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Загружана %sB з %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ПАМЫЛКА:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Вам не дазволена выконваць гэтае дзеянне."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Арганізацыя чаргі"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Вырашэнне залежнасцяў"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Наступны НОВЫ пакет будзе ўсталяваны (%(count)s):"
+msgstr[1] "Наступныя НОВЫЯ пакеты будуць усталяваныя (%(count)s):"
+msgstr[2] "Наступныя НОВЫЯ пакеты будуць усталяваныя (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Наступны пакет будзе абноўлены (%(count)s):"
+msgstr[1] "Наступныя пакеты будуць абноўленыя (%(count)s):"
+msgstr[2] "Наступныя пакеты будуць абноўленыя (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Наступны пакет будзе выдалены (%(count)s):"
+msgstr[1] "Наступныя пакеты будуць выдаленыя (%(count)s):"
+msgstr[2] "Наступныя пакеты будуць выдаленыя (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Для наступнага пакета будзе праведзены АДКАТ (%(count)s):"
+msgstr[1] "Для наступных пакетаў будзе праведзены АДКАТ (%(count)s):"
+msgstr[2] "Для наступных пакетаў будзе праведзены АДКАТ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Наступны пакет будзе пераўсталяваны (%(count)s):"
+msgstr[1] "Наступныя пакеты будуць пераўсталяваныя (%(count)s):"
+msgstr[2] "Наступныя пакеты будуць пераўсталяваныя (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Наступны пакет быў адноўлены (%(count)s):"
+msgstr[1] "Наступныя пакеты былі адноўленыя (%(count)s):"
+msgstr[2] "Наступныя пакеты былі адноўленыя (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Патрабуецца атрымаць %sБ архіваў."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Пасля гэтай аперацыі будзе выкарастана %sБ дадатковага месца."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Пасля гэтай аперацыі будзе вызвалена %sБ дадатковага месца."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Вы хочаце працягнуць [Y - Так, N - Не]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Для правядзення аперацый над некалькімі пакетамі пастаўце іх імёны ў "
+"двукоссе:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Абнавіць кэш"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Паспрабаваць вырашыць сапсаваныя залежнасці. Гэта патэнцыйна небяспечная "
+"аперацыя, паколькі яна можа выдаліць шмат пакетаў."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Паспрабуйце скончыць папярэднюю ўсталёўку"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Усталяваць гэтыя пакеты"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Пераўсталяваць гэтыя пакеты"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Выдаліць гэтыя пакеты"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Выдаліць гэтыя пакеты разам з файламі канфігурацыі"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Адкат выбраных пакетаў"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Забаронена: калі ласка выкарыстоўвайце --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Абнавіць сістэму бяспечным чынам"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Абнавіць сістэму ўсталёўваючы і выдаляючы пакеты (калі магчыма)"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Дадаць пастаўніка ў давераныя"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Дадаць ідэнтыфікатар ключа пастаўніка (спатрэбіца опцыя - keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Выкарыстоўваць дадзены сервер для пошуку ключоў"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Дадаць сховішча з пазначанага deb-радка"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Пазначыць альтэрнатыўны файл sources.list.d, да якога неабходна дадаваць "
+"сховішчы"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Спіс давераных ключоў пастаўніка"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Выдаліць давераны ключ для дадзенага лічбавага подпісу"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Паўторная наладка ўсталяваных пакетаў. Дадаткова можа быць паказаны "
+"мінімальны прыярытэт пытанняў"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Мінімальны прыярытэт запыту debconf для адлюстравання"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Не падлучацца да тэрмінала apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Дазваляць пакеты з недавераных крыніц"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Паказаць дадатковую інфармацыю аб пакеце. У дадзены момант толькі нумар "
+"версіі"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Чаканне на аўтэнтыфікацыю"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Не выключайце дэман з-за яго неактыўнасці"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Не загружаць ніякія плагіны"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Паказваць інфармацыю аб унутранай апрацоўцы"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Выйсці і замяніць ужо запушчаны дэман"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Чакаць на сігнал DBus для агульнай шыны (Толькі для тэставання"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Праводзіць аперацыі ў дадзеным галоўным каталозе"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Захоўваць статыстыку ў пазначаным файле"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Не змяняць файлы ў сістэме (карысна толькі распрацоўнікам)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Усталяваны файл"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Усталяваныя пакеты"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Дададзены ключ з файла"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Кэш абноўлены"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Пошук завершаны"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Давяральны ключ выдалены"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Выдаленыя пакеты"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Абноўленыя пакеты"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Абноўленая сістэма"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Ужытыя змены"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Выпраўлена няскончаная ўсталёўка"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Выпраўлены зламаныя залежнасці"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Крыніца праграм дададзеная"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Падлучаны кампанент дыстрыбутыва"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Сцёртыя файлы загружаных пакетаў"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Нова наладжаныя пакеты"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Паспяхова"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Адменена"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Памылка"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Усталёўка файла"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Усталёўка пакетаў"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Даданне ключа з файла"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Абнаўленне кэша"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Выдаленне даверанага ключа"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Выдаленне пакетаў"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Абнаўленне пакетаў"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Абнаўленне сістэмы"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Ужыванне зменаў"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Выпраўленне няскончанай ўсталёўкі"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Аднаўленне усталяванага ПЗ"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Даданне крыніцы праграм"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Падлучэнне кампанента дыстрыбутыва"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Выдаленне файлаў загружаных пакетаў"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Пераналадка ўсталяваных пакетаў"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Выконваецца пошук"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Не атрымалася ўсталяваць файл пакета"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Не атрымалася ўсталяваць праграмнае забеспячэнне"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Не атрымалася абнавіць спіс праграм"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Не атрымалася выключыць пастаўніка праграм са спіса давераных"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Не атрымалася выдаліць праграмнае забеспячэнне"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Не атрымалася абнавіць праграмнае забеспячэнне"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Не атрымалася абнавіць сістэму"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Не атрымалася ўжыць змены ў праграмным забеспячэнні"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Не атрымалася выпраўленне няскончанай усталёўкі"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Не атрымалася выправіць зламаныя залежнасці"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Не атрымалася дадаць крыніцу праграм"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Не атрымалася далучыць кампанент дыстрыбутыва"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Пры выдаленні загружаных файлаў здарылася памылка"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Памылка пошуку"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Даданне ліцэнзійнага ключа"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Праверце інтэрнэт-злучэнне."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Калі Вы выкарыстоўваеце іншыя крыніцы праграм, адключыце іх, паколькі яны "
+"з'яўляюцца частай\n"
+"крыніцай праблем. Пасля гэтага выканайце ў тэрмінале наступную каманду: apt-"
+"get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Выбраны файл можа быць пашкоджаны, альбо не з'яўляецца ключом PGP."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Абраны ключ немагчыма выдаліць. Праверце, што Вы падалі дакладны лічбавы "
+"подпіс."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Праверце, ці не запушчана іншая праграма кіравання праграмамі, напрыклад "
+"Synaptic или aptitude. Толькі адна праграма можа ўносіць змены ў адзін і той "
+"жа час."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Гэта сур'ёзная праблема. Паспрабуйце паўтарыць пазней. Калі праблема "
+"паўстане зноў, калі ласка, адпраўце справаздачу аб памылцы распрацоўнікам."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Праверце ці правільна пазначана назва пакета і ці ўключаны адпаведны "
+"рэпазітар."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Няма неабходнасці абнаўлення."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Няма неабходнасці ўсталёўкі."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Няма неабходнасці выдалення."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Вы падалі запыт на выдаленне пакета, які з'яўляецца неад'емнай часткай вашай "
+"сістэмы."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Сувязь з дэманам страчана. Хутчэй за ўсё, яго праца нечакана скончылася."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Усталёўка ці выдаленне пакетаў праграм не атрымалася."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Магчымасць не падтрымліваецца."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Мяркуючы па ўсім, у aptdaemon, праграмным забеспячэнні, якое дазваляе вам "
+"усталёўваць / выдаляць праграмы і выконваць звязаныя з пакетамі задачы, "
+"прысутнічае праграмная памылка."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Гэтая памылка магла паўстаць з прычыны дадатковых пакетаў, якія немагчыма "
+"ўсталяваць ці якія адсутнічаюць. Да таго ж можа мець месца канфлікт паміж "
+"пакетамі, якія не могуць быць усталяваныя адначасова."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Усталёўка магла прайсці няўдала з-за памылкі ў адпаведным пакеце, альбо была "
+"няправільна спыненая. Вам варта выправіць гэта перш чым усталёўваць ці "
+"выдаляць іншыя праграмы."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Калі ласка, скапіруйце файл на ваш лакальны кампутар і праверце правы на "
+"файл."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Усталёўка пакета, які не адпавядае стандартам, не дазволена. Гэта можа "
+"прывесці да сур'ёзных памылак на вашым кампутары. Калі ласка, звяжыцеся з "
+"тымі, хто прапанаваў дадзены пакет, зазначыўшы падрабязнасці, змешчаныя "
+"ніжэй."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Атрыманы ліцэнзійны ключ, неабходны для выканання гэтага кампанента праграмы "
+"няправільны, або не можа быць усталяваны належным чынам.\n"
+"Для атрымання дадатковых звестак адчынеце падрабязнасці."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Усе даступныя абнаўленні ўжо ўсталяваныя."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Ліцэнзійны ключ, які дазволіць вам выкарыстоўваць гэты кампанент праграмы, "
+"не можа быць атрыманы. Калі ласка, пераканайцеся ў працаздольнасці сеткавага "
+"злучэння."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Вам не дазволена выконваць гэтае дзеянне."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Памылка загрузкі файлаў пакета"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Памылка пры загрузцы інфармацыі аб крыніцах праграмаў"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Залежнасці пакета ня могуць быць задаволены."
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Сістэма пакетаў пашкоджана."
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ключ ня быў усталяваны"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ключ быў ня выдалены"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Немагчыма заблакаваць мэнэджар пакетаў"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Ня ўдалося загрузіць спіс пакетаў"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакет не існуе"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Пакет у актуальным стане"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакет ужо ўсталяваны"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакет не ўсталяваны"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Памылка пры выдаленні важнага сістэмнага пакета"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Заданне ня можа быць пракантралявана"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Памылка пакетнай аперацыі"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Патрабуецца ўсталёўка нязнойдзеных пакетаў"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Папярэдняя ўсталёўка не была скончана"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Гэты пакет кепскай якасці"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Не атрымалася адкрыць пакет"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Гэтая магчымасць не падтрымліваецца"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Памылка атрымання ліцэнзійнага ключа"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Памылка ўсталёўкі ліцэнзійнага ключа"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Сістэма ў актуальным стане"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Здарылася непераадольная памылка"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Чаканне запуска службы"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Чаканне"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Чаканне на неабходны носьбіт інфармацыі"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Чаканне на сканчэнне працы іншых мэнэджараў праграмнага забеспячэння"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Чаканне на запыт канфігурацыйнага файла"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Запуск задачы"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Ідзе загрузка"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Запыт крыніц праграм"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Ачышчэнне"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Скончана"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Скасавана"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Загрузка спіса праграмаў"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Усталёўка %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Канфігураванне %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Выдаленне %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Выконваецца поўнае выдаленне %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Апавяшчэнне аб знікненні %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Выконваецца пасляўсталёвачны трыгер %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Абнаўленне %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Выманне %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Падрыхтоўка да ўсталёўкі %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Падрыхтоўка канфігурацыі %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Падрыхтоўка да выдалення%s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Падрыхтоўка да поўнага выдалення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s усталяваны"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s цалкам выдалены"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s выдалены"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Выканана"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Няўдалая ідэнтыфікацыя"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Атрыманне"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Чаканне"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Сетка недасяжная"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Апрацоўка %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Загружана %sB з %sB на хуткасці %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Загружана %sB з %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Падрабязна"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Файл"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Загружана %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Загружана"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Патрабуецца наяўнасць CD/DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Устаўце паказаны вышэй CD/DVD у прывад '%s' для ўсталёўкі пакетаў з яго."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Пра_цягнуць"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Усталяваць"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Пераўсталяваць"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Выдаліць"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Ачысціць"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Абнаўленне"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Панізіць версію"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Прапусціць абнаўленне"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Калі ласка, паглядзіце на спіс зменаў ніжэй."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Патрэбна ўсталёўка дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Патрэбна паўторная ўсталёўка дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Неабходна выдаленне дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Патрэбна ачыстка ад дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Неабходна абнаўленне дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Неабходна паніжэнне версіі дадатковых праграм"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Абнаўленні будуць прапушчаны"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Патрабуюцца дадатковыя змены"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sБ усяго будзе сцягнута"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sБ месца на цвёрдым дыску будзе вызвалена."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sБ дыскавай прасторы будзе занята."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "Замяніць файл «%s» з унесенымі Вамі зменамі больш позняй версіяй?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Калі Вы ня ведаеце, для чаго быў створаны гэты файл, то хутчэй за ўсё яго "
+"можна будзе бяспечна замяніць."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Змены"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Пакінуць"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Замяніць"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Падрабязнасці"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Чаканне на завяршэнне працы %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Загрузка %(files)s"
+msgstr[1] "Загрузка %(files)s"
+msgstr[2] "Загрузка %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "лакальны рэпазітар"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Загрузка з %s"
+msgstr[1] "Загрузка з %s"
+msgstr[2] "Загрузка з %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Структура «%s»"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Апісанне %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Подпіс апісання %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Даступныя пакеты з «%s»"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Даступныя крыніцы з %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Даступныя пераклады з %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Пераклады на %s (%s) з %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Пераклады на %s з %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Пераклад (%s) з %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Пакет %s не даступны"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Пакет %s не ўсталяваны"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Версія %s пакета %s не ўсталявана"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Пакет %s ужо ўсталяваны"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Версія %s пакета %s недаступная"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Не атрымалася загрузіць і ўсталяваць значэнне %s з %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Ключавы файл %s не можа быць усталяваны: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ключ з лічбавым подпісам %s не можа быць выдалены: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Пакет %s не можа быць выдалены."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Версія %s пакета %s не ўсталяваная"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Папярэдняя версія %s пакета %s ужо ўсталяваная"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Версія %s пакета %s ужо ўсталяваная"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Версія %s пакета %s недаступная"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Вам неабходна пазначыць версію, каб правесці адкат %s да"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Больш новая версія %s пакета %s ужо ўсталяваная"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Пакет %s недаступны ў рэлізе %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Пакет %s не можа быць выдалены"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"У пакеце не пазначана поле \"занятае месца пасля ўсталёўкі\". Гл. правілы "
+"Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Ліцэнзійны ключ не ўтрымлівае даных"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Ліцэнзійны ключ не павінен утрымоўваць выкананы код."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Недапушчальнае размяшчэнне ліцэнзійнага ключа %s"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Ліцэнзійны ключ ужо існуе: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Месцазнаходжанне ліцэнзійнага ключа не з'яўляецца бяспечным, так як змяшчае "
+"сімвалічныя спасылкі. Адрас %s спасылаецца на %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Папка у якую будзе выконвацца ўсталёўка ключа, яшчэ не існуе: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Памылка запісу файла ключа ў: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Пакеты, маючыя нездаволеныя залежнасці:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "але гэта віртуальны пакет"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "але ён не ўсталяваны"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "але ён не будзе ўсталяваны"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "але %s ужо ўсталяваны"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "але %s будзе ўсталяваны"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Не атрымалася дадаць ключ да спіса давераных пастаўнікоў праграм"
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..1d14aae
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,1487 @@
+# Bulgarian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-09-18 11:18+0000\n"
+"Last-Translator: Dimitar Dimitrov <Unknown>\n"
+"Language-Team: Bulgarian <bg@li.org>\n"
+"Language: bg\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Изброяване на ключове на доверени доставчици"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "За да видите списъка с доверени ключове, трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Премахване на инсталационните пакетни файлове"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"За да премахнете свалените инсталационни файлове, трябва да се "
+"идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Променяне на софтуерната конфигурация"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "За да променяте софтуерните настройки, трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Промяна на софтуерно хранилище"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"За да промените настройките на софтуерно хранилище, трябва да се "
+"идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Инсталиране на файл пакет"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "За да инсталирате този пакет, трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Актуализиране на информацията за пакетите"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "За да обновите софтуерния каталог, трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Инсталиране или премахване на пакети"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "За да инсталирате или премахнете софтуер, трябва да се идентифицирате."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Добавяне на ново хранилище и инсталиране на пакети от него."
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"За да инсталирате софтуер от нов източник, трябва да се идентифицирате."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Добавяне на ново хранилище на закупен софтуер и инсталиране на пакети от него"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "За да инсталирате поръчан трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Пакети за надграждане"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "За да инсталирате обновен софтуер, трябва да се идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Отказване на задачата на друг потребител"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"За да откажете софтуерните промени на друг потребител, трябва да се "
+"идентифицирате."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Задаване на сървър-посредник за изтегляне на софтуер"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"За да използвате сървър-посредник за да изтеглите софтуер, трябва да се "
+"идентифицирате."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ГРЕШКА"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Изтегляне на %sB от %sB с %sB/с"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Изтеглени %sB от %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ГРЕШКА:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Не Ви е позволено да извършвате това действие."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Добавяне в опашката"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Изчисляване на зависимостите"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Следният НОВ пакет ще бъде инсталиран (%(count)s):"
+msgstr[1] "Следните НОВИ пакети ще бъдат инсталирани (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Следният пакет ще бъде обновен (%(count)s):"
+msgstr[1] "Следните пакети ще бъдат обновени (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Следният пакет ще бъде ПРЕМАХНАТ: (%(count)s):"
+msgstr[1] "Следните пакети ще бъдат ПРЕМАХНАТИ: (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Следният пакет ще бъде ПОНИЖЕН: (%(count)s):"
+msgstr[1] "Следните пакети ще бъдат ПОНИЖЕНИ: (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Следният пакет ще бъде преинсталиран: (%(count)s):"
+msgstr[1] "Следните пакети ще бъдат преинсталирани (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Следният пакет е задържан (%(count)s):"
+msgstr[1] "Следните пакети са задържани (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Трябва да бъдат получени архиви в размер %sB."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "След тази операция, ще бъде използвано %sB допълнително пространство."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "След тази операция, ще бъде бъде освободено %sB пространство."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Желаете ли да продължите [y=Да/n=Не]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"За да работите с повече от един пакет, сложете името му в кавички:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Опресняване на кеша"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Опит за разрешаване на счупени зависимости. Това е потенциално опасно "
+"действие, тъй като може да се опита да премахне много пакети."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Опит за завършване на предходна незавършена инсталация"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Инсталиране на дадените пакети"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Преинсталиране на дадените пакети"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Премахване на дадените пакети"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Премахване на дадените пакети, включително конфигурационните им файлове"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Понижаване на версиите на дадените софтуерни пакети"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Остаряло: Моля използвайте --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Надграждане на системата по безопасен начин"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Надграждане на системата с евентуално инсталиране и премахване на пакети"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Добавяне на доставчик към доверените"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Добавяне на ключов идентификатор на доставчик (нуждае се и от --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Използване на даден сървър за търсене на ключове"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Добяване на ново хранилище от даден deb-ред"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Указване на алтернативен файл sources.list.d, към който да се добавят "
+"хранилища."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Изброяване на ключове от доверени доставчици"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Премахване на доверения ключ на даден идентификатор"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Пренастрой инсталираните пакети. По желание може да бъде определен минимален "
+"приоритет на въпроси."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Да бъде показан минималният debconf приоритет на въпроси"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Да се закача към терминала на apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Разрешаване на пакети от неидентифицирани източници"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Показване на допълнителна информация за пакетите. В момента се показва само "
+"версията."
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Изчакване за идентификация"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Не спирайте демона заради неактивност"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Показване на вътрешна информация за обработка"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Спиране и заменяне на вече работещ демон"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Слишайте DBus сесията (Изисквана само за тестване)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Изпълни операции във зададената chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Запазване на статистики за профила в упоменатия файл"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Без промени по системата (От полза само за разработчици)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Инсталиран файл"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Инсталирани пакети"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Добавен ключ от файл"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Актуализиран кеш"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Търсенето приключи"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Премахнат доверен ключ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Премахнати пакети"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Обновени пакети"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Надградена система"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Приложени промени"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Поправена непълна инсталация"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Поправени повредени зависимости"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Добавен източник на софтуер"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Включен компонент на дистрибуцията"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Премахнати са инсталационните пакетни файлове."
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Пренастроени инсталирани пакети"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Успешно"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Отменено"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Неуспешно"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Инсталиране на файл"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Инсталиране на пакети"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Добавяне на ключ от файл"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Актуализиране на кеша"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Премахване на доверен ключ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Премахване на пакети"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Актуализиране на пакети"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Надграждане на системата"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Прилагане на промените"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Поправяне на непълна инсталация"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Поправяне на инсталиран софтуер"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Добавяне на източник на софтуер"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Включване на компонент на дистрибуцията"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Премахване на инсталационните пакетни файлове"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Пренастройване на инсталираните пакети"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Търсене"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Инсталирането на пакета неуспешно"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Инсталирането на софтуера неуспешно"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Опресняването на софтуерния списък неуспешно"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Премахването на софтуерния доставчик от списъка със софтуерни доставчици "
+"неуспешно"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Премахването на софтуера неуспешно"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Обновяването на софтуер неуспешно"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Надграждането на системата неуспешно"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Прилагането на софтуерните промени неуспешно"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Поправянето на непълна инсталация неуспешно"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Поправянето на повредени зависимости неуспешно"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Добавянето на източник на софтуер е неуспешно"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Включването на компонент на дистрибуцията е неуспешно"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Премахването на инсталационните пакетни файлове е неуспешно"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Търсенето е неуспешно"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Проверете Интернет връзката."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Проверете дали използвате софтуерни хранилища на трети страни. Ако това е "
+"така, деактивирайте ги, защото те често са източник на проблеми.\n"
+"Допълнително изпълнете следната команда в Терминал: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Избраният файл може да не е GPG файл ключ или може да е повреден."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Избраният ключ не може да бъде премахнат. Проверете дали сте посочили "
+"валиден идентификатор."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Проверете дали в момента не работи друг инструмент за управление на софтуер, "
+"например Synaptic или aptitude. В даден момент само на един инструмент е "
+"позволено да прави промени."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Това е сериозен проблем. Опитайте отново по-късно. Ако проблемът се появи "
+"отново, съобщете го на разработчиците."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Проверете изписването на името на пакета, както и че съответно хранилище е "
+"включено."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Няма необходимост от обновяване."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Няма необходимост от инсталация"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Няма необходимост от премахване."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Поискахте да премахнете пакет който е основна част от вашата система."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Връзката с демона беше изгубена. Най-вероятно демонът, работещ във фонов "
+"режим е блокирал."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Инсталация или премахване на софтуерен пакет неуспешна."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Исканата функция не се поддържа."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Изглежда има програмна грешка в aptdaemon - софтуерът който ви позволява да "
+"инсталирате/деинсталирате софтуер и да изпълнявате други задачи от "
+"управлението на пакетите."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Тази грешка може да се дължи на необходими допълнителни софтуерни пакети, "
+"които липсват или не могат да бъдат инсталирани. Освен това, възможно е да "
+"има конфликт между софтуерни пакети, които не могат да бъдат едновременно "
+"инсталирани."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Инсталацията може да се е провалила, заради грешка в съответните софтуерни "
+"пакети или ако е била прекъсната по некоректен начин. Трябва да отстраните "
+"това преди да инсталирате или премахнете друг софтуер."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Моля копирайте файлът на вашия локален компютър и проверете разрешенията за "
+"файла."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Инсталирането на пакет, който нарушава качествените стандарти не е "
+"разрешено. Това може да причини сериозни повреди на вашия компютър. Моля "
+"свържете се с човека или организацията, която е осигурила този файл включващ "
+"следните детайли."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Всички налични актуализации са вече инсталирани."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Не Ви е позволено да извършвате това действие."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Неуспех при изтегляне на файловете от пакета"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Неуспех при изтегляне на информацията от хранилището"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Пакетните зависимости не могат да бъдат установени"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Пакетната система е повредена"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ключът не беше инсталиран"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ключът не беше премахнат"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Неуспех при заключването на пакетния мениджър"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Неуспех при зареждане на списъка с пакети"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакетът не съществува"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакетът вече е инсталиран"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакетът не е инсталиран"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Неуспех при премахването на основнен системен пакет"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Задачата не може да бъде наблюдавана или контролирана"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Пакетната операция неуспешна"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Изисква инсталация на недоверени пакети"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Предишната инсталация не е завършена"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Пакетът е с лошо качество"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Пакетният файл не може да бъде отворен"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Неподдържана функция"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Появи се неочаквана грешка"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Изчакване услугата да стартира"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Изчакване"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Изчакване на необходимата среда"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Изчакване на други софтуерни мениджъри да приключат работа"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Изчакване промпта на конфигурационния файл"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Текуща задача"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Изтегляне"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Почистване"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Завърши"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Отменяне"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Зареждане на списъка със софтуер"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Инсталиране на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Конфигуриране на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Премахване на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Окончателно премахване на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Отбелязване на изчезването на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Изпълнение на тригер след инсталиране %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Надграждане на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Разпакетиране на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Подготовка за инсталиране на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Подготовка за конфигуриране на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Подготовка за премахване на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Подготовка за окончателно премахване на %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s е инсталиран"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s е напълно премахнат"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s е премахнат"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Готово"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Неуспешна идентификация"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Получаване"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "В покой"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Мрежата не е достъпна"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Обработка на %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Изтегляне на %sB от %sB с %sB/с"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Изтеглени %sB от %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Подробности"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Файл"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Изтеглени %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Изтеглен"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Необходим е CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Моля поставете горния CD/DVD в устройството '%s', за да инсталирате "
+"софтуерни пакети от него."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Пр_одължаване"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Инсталиране"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Преинсталиране"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Премахване"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Прочистване"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Надграждане"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "По-стара версия"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Без надграждане"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Моля разгледайте списъка с промените по-долу."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Трябва да бъде инсталиран допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Трябва да бъде преинсталиран допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Трябва да бъде премамахнат допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Трябва да бъде прочистен допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Трябва да бъде надграден допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Трябва да бъде върнат към по-стара версия допълнителен софтуер"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Ще бъдат пропуснати обновления"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Необходими са допълнителни прочени"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Ще бъдат изтеглени %sB общо."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Ще бъде освободено %sB дисково пространство."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Ще бъде използвано %sB дисково пространство."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Замяна на вашите промени в '%s' с по-скорошна версия на конфигурационния "
+"файл?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "Ако не знаете защо файла е там, обикновенно е безопасно да го смените."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Промени"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Запазване"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Замяна"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Подробности"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Изчакване на %s за изход"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Изтегляне на %(files)s"
+msgstr[1] "Изтегляне на %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "локално хранилище"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Сваляне от %s"
+msgstr[1] "Сваляне от %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Структура на %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Описание на %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Налични пакети от %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Налични източници от %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Налични преводи от %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Превод на %s (%s) от %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Превод на %s от %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Пакетът %s не може да бъде намерен"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Пакетът %s не е инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Версията %s на %s не е инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Пакетът %s вече е инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Версията %s на %s не е достъпна."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Неуспех да свали и инсталира ключът %s от %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Ключов файл %s не може да бъде инсталиран: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ключ със отпечатък %s не може да бъде премахнат: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Пакетът %s не може да бъде премахнат."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Версията %s на %s не е инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Бившата версия %s на %s е вече инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Версията %s на %s е вече инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Версията %s на %s не е достъпна"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Трябва да посочите версия за понижаване %s на"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Късната версия %s на %s е вече инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Пакетът %s не е достъпен във %s версия"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Пакетът %s не може да бъде премахнат"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Пакетът не предлага валиден Инстално-Размерно контролно поле. Вижте Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Следните пакети имат неудовлетворени зависимости:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "но е виртуален пакет"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "но не е инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "но няма да бъде инсталиран"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "но %s е инсталиран"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "но %s ще бъде инсталиран"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Добавянето на ключа към списъка с доверени софтуерни доставчици неуспешно"
diff --git a/po/bn.po b/po/bn.po
new file mode 100644
index 0000000..5dbd560
--- /dev/null
+++ b/po/bn.po
@@ -0,0 +1,1472 @@
+# Bengali translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Ayesha Akhtar <ayesha@ankur.org.bd>, 2012.
+# Robin Mehdee <robin@ankur.org.bd>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-04 04:03+0000\n"
+"Last-Translator: Robin Mehdee <Unknown>\n"
+"Language-Team: Bengali <ankur-bd-l10n@googlegroups.com>\n"
+"Language: bn\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "বিশ্বস্ত ভেন্ডরদের কী-সমূহের তালিকা কর"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "বিশ্বস্ত কী এর তালিকা প্রদর্শন করতে, আপনাকে পরিচয় দিতে হবে।"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "ডাউনলোড করা প্যাকেজ ফাইলসমূহ অপসারণ কর"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "ডাউনলোড করা প্যাকেজগুলো মুছে ফেলতে হলে আপনাকে পরিচয় দিতে হবে৷"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "সফটওয়্যার কনফিগারেশন পরিবর্তন করুন"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "সফটওয়্যার সেটিংস পরিবর্তন করতে হলে আপনাকে পরিচয় দিতে হবে৷"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "সফটওয়্যার রিপোজিটরী পরিবর্তন করুন"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "সফটওয়্যার রিপোজিটরী সেটিংস পরিবর্তন করতে আপনাকে আপনার পরিচয় দিতে হবে।"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "প্যাকেজ ফাইল ইন্সটল করুন"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "এই প্যাকেজটি ইন্সটল করতে হলে, আপনাকে পরিচয় দিতে হবে৷"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "প্যাকেজের তথ্য আপডেট করো"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "সফটওয়্যার ক্যাটালগ হালনাগাদ করতে, আপনাকে পরিচয় দিতে হবে।"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "প্যাকেজ ইন্সটল কিংবা অপসারণ করুন"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "কোন সফটওয়্যার ইন্সটল করতে বা মুছে ফেলতে হলে আপনাকে পরিচয় দিতে হবে৷"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "একটি নতুন রিপোজটরী যুক্ত করুন এবং এর থেকে প্যাকেজ ইন্সটল করুন"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "নতুন উৎস থেকে সফটওয়্যার ইনস্টল করতে, আপনাকে পরিচয় দিতে হবে।"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "কেনা সফটওয়্যারের একটি নতুন রিপোজটরী যুক্ত করুন এবং এর থেকে প্যাকেজ ইন্সটল করুন"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "ক্রয়কৃত সফটওয়্যার ইন্সটল করতে হলে আপনাকে পরিচয় দিতে হবে৷"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "প্যাকেজ সমূহ আপগ্রেড করো"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "হালনাগাদকৃত সফটওয়্যার ইনস্টল করতে, আপনাকে পরিচয় দিতে হবে।"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "অন্য ব্যবহারকারির কাজ বন্ধ করুন"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "অন্য কারও সফটওয়্যার পরিবর্তন বাতিল করতে আপনাকে আপনার পরিচয় দিতে হবে।"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "সফটওয়্যার ডাউনলোড করার জন্য একটি প্রক্সি নির্দিষ্ট করুন"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"সফটওয়্যার ডাউনলোডের জন্য প্রক্সি সার্ভার ব্যবহার করতে, আপনাকে পরিচয় দিতে হবে।"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ত্রুটি"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "ডাউনলোড করা হয়েছে %sB, %sB এর মধ্যে %sB/s গতিতে"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "ডাউনলোড করা হয়েছে %sB, %sB এর মধ্যে"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ত্রুটি:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "আপনি এই কাজ সম্পাদনের জন্য অনুমতিপ্রাপ্ত নন"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "সারিতে অনর্ভুক্ত করা হচ্ছে"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "ডিপেন্ডেসি ঠিক করা হচ্ছে"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "উল্লেখিত নতুন প্যাকেজ ইন্সটল করা হবে (%(count)s):"
+msgstr[1] "উল্লেখিত নতুন প্যাকেজ ইন্সটল করা হবে (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "উল্লেখিত প্যাকেজ উন্নীত করা হবে (%(count)s):"
+msgstr[1] "উল্লেখিত প্যাকেজ উন্নীত করা হবে (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "উল্লেখিত প্যাকেজ অপসারণ করা হবে (%(count)s):"
+msgstr[1] "উল্লেখিত প্যাকেজ অপসারণ করা হবে (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "উল্লেখিত প্যাকেজ অবনিত করা হবে (%(count)s):"
+msgstr[1] "উল্লেখিত প্যাকেজ অবনিত করা হবে (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "উল্লেখিত প্যাকেজ পুনরায় ইন্সটল করা হবে (%(count)s):"
+msgstr[1] "উল্লেখিত প্যাকেজ পুনরায় ইন্সটল করা হবে (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "উল্লেখিত প্যাকেজ পিছনে রাখা হয়েছে (%(count)s):"
+msgstr[1] "উল্লেখিত প্যাকেজ পিছনে রাখা হয়েছে (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "আর্কাইভের %sB পাওয়া প্রয়োজন।"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "এই অপারেশনের পরে, ডিস্কের অতিরিক্ত %sB জায়গা ব্যবহৃত হবে।"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "এই অপারেশনের পরে, ডিস্কের অতিরিক্ত %sB জায়গা খালি হবে।"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "আপনি কি চালিয়ে যেতে চান [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"একটির বেশি প্যাকেজ অপারেট করতে হলে প্যাকেজের নাম উদ্ধৃতি চিহ্নের মধ্যে রাখতে হবে:\n"
+"aptdcon --ইনস্টল \"ফু বার\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "ক্যাশ রিফ্রেশ করুন"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"ভাঙ্গা নির্ভরশীলতা পুনরায় ঠিক করতে চেষ্টা করুন। সম্ভাব্যরূপে বিপদজনক অপারেশন ইতোমধ্যে "
+"এটা অনেক প্যাকেজ অপসারণ করতে চেষ্টা করেছে।"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "পূর্ববর্তী অসম্পূর্ণ ইনস্টলেশন সম্পন্ন করতে চেষ্টা করুন"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "প্রদত্ত প্যাকেজ ইনস্টল"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "প্রদত্ত প্যাকেজ পুনরায় ইনস্টল"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "প্রদত্ত প্যাকেজ অপসারণ"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "কনফিগারেশন ফাইলসহ প্রদত্ত প্যাকেজ অপসারণ"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "প্রদত্ত প্যাকেজ অবনিতকরণ"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "অবলোপ করা: অনুগ্রহ করে ব্যবহার করুন --নিরাপদ-উন্নীত করুন"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "সিস্টেম নিরাপদে উন্নীত করুন"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "সিস্টেম উন্নীত করুন, সম্ভবত প্যাকেজ ইনস্টল এবং অপসারণ করা হচ্ছে"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "বিশ্বস্ত একজনকে ভেন্ডর সংযুক্ত করুন"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "ভেন্ডর কী আইডি সংযুক্ত করুন (আরও প্রয়োজন --কী সার্ভার)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "কী খুঁজতে প্রদত্ত কী সার্ভার ব্যবহার করুন"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "প্রদত্ত deb-line থেকে নতুন রিপোজিটরী যুক্ত করুন"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"বিকল্প sources.list.d file কোন রিপোজিটরিতে সংযুক্ত করা উচিত তা সুনির্দিষ্টভাবে "
+"উল্লেখ করুন।"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "বিশ্বস্ত ভেন্ডর কীর তালিকা"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "প্রদত্ত অাঙ্গুলের ছাপের বিশ্বস্ত কী অপসারণ"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"ইন্সটলকৃত প্যাকেজ পুনরায় কনফিগার করুন। বিকল্পরূপে প্রশ্নের সর্বনিম্ন অগ্রাধিকার উল্লেখিত "
+"হতে পারে"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "প্রশ্নের সর্বনিম্ন debconf অগ্রাধিকার প্রদর্শিত হবে"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "apt টার্মিনালে সংযুক্ত করবেন না"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "অপরিচিত উৎস থেকে প্যাকেজ অনুমোদন"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "প্যাকেজ সম্পর্কে অতিরিক্ত তথ্য প্রদর্শন। বর্তমানে শুধু সংস্করণ সংখ্যা"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "প্রমাণীকরণের জন্য অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "ডিমন নিষ্ক্রিয় হলে তা বন্ধ করবেন না"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "কোন প্লাগইন লোড করা হবে না"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "অভ্যন্তরীন প্রসেসিং তথ্য দেখাও"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "বন্ধ করে কোন চালু থাকা ডিমন প্রতিস্থাপন করুন"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBus সেশন bus এ শুনুন (শুধু পরীক্ষার জন্য আবশ্যক"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "প্রদত্ত chroot এ অপারেশন সম্পাদন"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "প্রোফাইল-এর তথ্য নির্দিষ্ট ফাইলে রাখুন"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "সিস্টেমের কোন পরিবর্তন করবেন না (শুধুমাত্র ডেভেলপারের ব্যবহার)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "ইনস্টল করা ফাইল সমূহ"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "ইন্সটল করা প্যাকেজসমুহ"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "ফাইল থেকে কী যুক্ত হয়েছে"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "ক্যাশ আপগ্রেড করুন"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "অনুসন্ধান সম্পন্ন"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "বিশ্বস্ত কী মুছে ফেলুন"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "মুছে ফেলা হয়েছে এমন প্যাকেজসমূহ"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "আপগ্রেড করা প্যাকেজসমূহ"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "আপগ্রেড করা সিস্টেম"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "পরিবর্তন সমূহ প্রয়োগ করা হয়েছে"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "অসম্পূর্ণ ইনস্টলেশন সংস্কার করা হয়েছে"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "ভাঙ্গা নির্ভরশীলতা সংস্কার করা হয়েছে"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "সফটওয়্যারের উৎস সংযুক্ত করা হয়েছে"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "ডিসট্রিবিউশনের কম্পোনেন্ট সক্রিয়"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "ডাউনলোডকৃত প্যাকেজ ফাইল অপসারণ করা হয়েছে"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "ইন্সটলকৃত প্যাকেজ পুনরায় কনফিগার করা হয়েছে"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "সফল"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "বাতিল করা হয়েছে"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "ব্যর্থ হয়েছে"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ফাইল ইনস্টল করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "প্যাকেজ ইনস্টল করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ফাইল থেকে কী যোগ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "ক্যাশ হালনাগাদ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "বিশ্বস্ত কী অপসারণ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "প্যাকেজ অপসারণ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "প্যাকেজ হালনাগাদ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "সিস্টেম উন্নীত করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "পরিবর্তনসমূহ প্রয়োগ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "অসম্পূর্ণ ইনস্টলেশন সংস্কার করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "ইন্সটলকৃত সফটওয়্যার সংস্কার করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "সফটওয়্যার উৎস সংযুক্ত করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "ডিসট্রিবিউশনের কম্পোনেন্ট সক্রিয় করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "ডাউনলোডকৃত প্যাকেজ ফাইল অপসারণ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "ইন্সটলকৃত প্যাকেজ পুনরায় কনফিগার করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "অনুসন্ধান করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "প্যাকেজ ফাইলের ইনস্টলেশন করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "সফটওয়্যারের ইনস্টলেশন করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "সফটওয়্যারের তালিকা রিফ্রেশ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "বিশ্বস্ত একজনের তালিকা থেকে ভেন্ডর অপসারণ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "সফটওয়্যার অপসারণ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "সফটওয়্যার হালনাগাদ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "সিস্টেম উন্নীত করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "সফটওয়্যার পরিবর্তন প্রয়োগ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "অসম্পূর্ণ ইনস্টলেশন সংস্কার করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "খন্ডিত নির্ভরশীলতা সংস্কার করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "সফটওয়্যার উৎস সংযুক্ত করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "ডিস্ট্রিবিউশনের কম্পোনেন্ট সক্রিয় করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "ডাউনলোডকৃত প্যাকেজ ফাইল অপসারণ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "অনুসন্ধান ব্যর্থ হয়েছে"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "লাইসেন্স কী যোগ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন।"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"আপনি তৃতীয় পক্ষের কোন রিপোজিটরি ব্যবহার করেছেন কিনা পরীক্ষা করুন। যদি তাদের "
+"নিষ্ক্রিয় করা হয়, ইতোমধ্যে এটি সাধারণ সমস্যার উৎস।\n"
+"এছাড়াও টার্মিনালে উল্লেখিত কমান্ড চালান: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "নির্বাচিত ফাইলটি সম্ভবতঃ কোন GPG কী ফাইল নয় অথবা এটি ত্রুটিপূর্ন।"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"নির্বাচিত কী অপসারণ করা যায়নি। কার্যকর আঙ্গুলের ছাপ সরবরাহ করেছেন কিনা তা পরীক্ষা "
+"করুন।"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"পরীক্ষা করুন যদি আপনি বর্তমানে অন্য সফটওয়্যার ব্যবস্থাপক টুেল সচল থাকেন, উদাহরণ স্বরূপ "
+"সিন্যাপটিক অথবা এপটিটিউড। একটি মাত্র টুল একইসময়ে পরিবর্তন করতে অনুমতি দেয়।"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"এটি একটি কঠিন সমস্যা। পরবর্তীতে আবার চেষ্টা করুন। যদি এই সমস্যা আবার দৃষ্টিগোচর হয়, "
+"অনুগ্রহ করে ডেভেলপারকে ত্রুটির রিপোর্ট দিন।"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"প্যাকেজের নামের বানান এবং সঠিক রিপোজিটরি সক্রিয় হয়েছে কি না- তা পরীক্ষা করুন।"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "হালনাগাদ করার কোনো প্রয়োজন নেই।"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "ইনস্টলেশন করার কোনো প্রয়োজন নেই"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "অপসারণ করার কোনো প্রয়োজন নেই।"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "আপনি অনুরোধ করেছেন প্যাকেজ অপসারণ করতে যা আপনার সিস্টেমের অত্যাবশ্যক অংশ।"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "daemon এর সংযোগ বিচ্ছিন্ন হয়েছে। খুব সম্ভবত daemon এর পটভূমি ক্র্যাশ করেছে।"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "সফটওয়্যার প্যাকেজের ইনস্টলেশন অথবা অপসারণ ব্যর্থ।"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "অনুরোধকৃত বৈশিষ্ট্য সমর্থিত হয়েছে।"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"এপ্টডিমন, যে সফটওয়্যারটি আপনাকে অন্য সফটওয়্যার ইনস্টল/অপসারণ করতে দেয় ও অন্যান্য "
+"প্যাকেজ ব্যবস্থাপনা সম্পর্কিত কাজ করতে দেয়, তাতে কোন প্রোগ্রামিং ত্রুটি হয়ে থাকতে "
+"পারে।"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"অত্যাবশ্যক অতিরিক্ত সফটওয়্যার প্যাকেজ দিয়ে এই ত্রুটি ঘটতে পারে যা অনুপস্থিত অথবা "
+"ইন্সটলকৃত নয়। এছাড়াও দ্বন্দ্ব হতে পারে সফটওয়্যার প্যাকেজের মধ্যে যা একই সময়ে ইন্সটল "
+"হতে অনুমতি দেয়না।"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"ইনস্টলেশনটি ব্যর্থ হতে পারে কারণ সংগতিপূর্ণ সফটওয়্যার প্যাকেজের ত্রুটি অথবা প্রতিকূল "
+"ভাবে এটা বাতিল হয়েছে। আরো কোনো সফটওয়্যার ইনস্টল অথবা অপসারণ করার আগে এটা "
+"মেরামত করতে হবে।"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"অনুগ্রহ করে আপনার স্থানীয় কম্পিউটারে ফাইলটি অনুলিপি করুন এবং ফাইলটির অনুমতি পরীক্ষা "
+"করুন।"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"প্যাকেজের ইনস্টলেশনটি গুণগত মান লঙ্ঘন করা মেনে নেয়না। আপনার কম্পিউটারে এটা কঠিন "
+"সমস্যার কারণ হতে পারে। অনুগ্রহ করে এই প্যাকেজ ফাইল যে ব্যক্তি বা সংগঠন সরবরাহ "
+"করেছে তার সাথে যোগাযোগ করুন এবং নিচে বিস্তারিত তথ্য সংযুক্ত করুন।"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"ডাউনলোডকৃত লাইসেন্স কী যা আবশ্যক এই সফটওয়্যারের অংশ সচল করতে কার্যকর নয় অথবা "
+"সঠিকভাবে ইন্সটল করা যায়নি।\n"
+"আরও বিস্তারিত তথ্যের জন্য দেখুন।"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "সব বিদ্যমান উন্নীতকরণ ইতোমধ্যে ইন্সটল করা হয়েছে।"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"লাইসেন্স কী যা সফটওয়্যারের এই অংশ ডাউনলোড করা যায়নি ব্যবহার করতে আপনাকে অনুমতি "
+"দেয়। অনুগ্রহ করে আপনার নেটওয়ার্কের সংযোগ পরীক্ষা করুন।"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "আপনি এই কাজ সম্পাদনের জন্য অনুমতিপ্রাপ্ত নন"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "প্যাকেজ ফাইল ডাউনলোড করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "রিপোজিটরি তথ্য ডাউনলোড করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "প্যাকেজ নির্ভরশীলতা পুনরায় ঠিক করা হবেনা"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "প্যাকেজ সিস্টেমটি ভাঙ্গা হয়েছে"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "কী ইন্সটল করা হয়নি"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "কী অপসারণ করা হয়নি"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "প্যাকেজ ব্যবস্থাপক আবদ্ধ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "প্যাকেজ তালিকা লোড করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "প্যাকেজ বিদ্যমান নয়"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "প্যাকেজ ইতোমধ্যে হালনাগাদ"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "প্যাকেজ ইতোমধ্যে ইন্সটল হয়েছে"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "প্যাকেজ ইন্সটল হয়নি"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "অপরিহার্য সিস্টেম প্যাকেজ অপসারণ করতে ব্যর্থ"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "টাস্ক লক্ষ্য বা নিয়ন্ত্রণ করতে পারছেনা"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "প্যাকেজ অপারেশন ব্যর্থ"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "অবিশ্বস্ত প্যাকেজের ইনস্টলেশন প্রয়োজন"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "পূর্ববর্তী ইনস্টলেশন সম্পন্ন করা হয়নি"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "প্যাকেজের গুণগত মান খারাপ"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "প্যাকেজ ফাইল খোলা যাচ্ছেনা"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "বৈশিষ্ট্য সমর্থিত নয়"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "লাইসেন্সের কী ডাউনলোড করতে ব্যর্থ হয়েছে"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "লাইসেন্সের কী ইনস্টল করতে ব্যর্থ হয়েছে"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "পদ্ধতি ইতোমধ্যে হালনাগাদ"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "সামলানো যায়না এমন ত্রুটি হয়েছে"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "সার্ভিস আরম্ভ করার জন্য অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "প্রয়োজনীয় মাধ্যমের জন্য অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "অন্যান্য সফটওয়্যার ব্যবস্থাপক শেষ করার জন্য অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "কনফিগারেশন ফাইল প্রম্পটের জন্য অপেক্ষা করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "টাস্ক চলছে"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ডাউনলোড করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "সফটওয়্যারের উৎস কোয়েরি করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "পরিষ্কার করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "শেষ করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "বাতিল করা হচ্ছে"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "সফটওয়্যারের তালিকা লোড করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s ইনস্টল করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s কনফিগার করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s অপসারণ করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s সম্পূর্ণরূপে অপসারণ করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s এ কোনো কিছুই অদর্শন নেই"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "%s পোস্ট-ইনস্টলেশন ট্রিগার চালু করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s উন্নীত করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s মোড়ক খোলা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s এর ইন্সটলেশন প্রস্তুত করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s এর কনফিগারেশন প্রস্তুত করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s এর অপসারণ প্রস্তুত করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s এর সম্পূর্ণ অপসারণ প্রস্তুত করা হচ্ছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s ইন্সটল করা হয়েছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s সম্পূর্ণরূপে অপসারণ করা হয়েছে"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s অপসারণ করা হয়েছে"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "সম্পন্ন"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "প্রমাণীকরণ ব্যর্থ"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "নিয়ে আসা হচ্ছে"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "নিষ্ক্রিয়"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "নেটওয়ার্ক বিদ্যমান নয়"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "প্রক্রিয়াধীন %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "ডাউনলোড করা হয়েছে %sB, %sB এর মধ্যে %sB/s গতিতে"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "ডাউনলোড করা হয়েছে %sB, %sB এর মধ্যে"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "বিস্তারিত তথ্য"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "ফাইল"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB ডাউনলোড করা হয়েছে"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "ডাউনলোড করা হয়েছে"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "সিডি/ডিভিডি '%s প্রয়োজন"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"অনুগ্রহ করে সফটওয়্যার প্যাকেজ ইনস্টল করতে ড্রাইভ '%s' তে উপর থেকে CD/DVD প্রবেশ "
+"করান।"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "চালিয়ে যাওয়া (_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "ইনস্টল"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "পুনরায় ইনস্টল"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "অপসারণ"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "শুদ্ধিকরণ"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "উন্নীত করা"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "অবনিত করা"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "উন্নীতকরণ বাদ দিয়ে যান"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "নিম্নের পরিবর্তনের দিকে লক্ষ্য করুন।"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "অতিরিক্ত সফটওয়্যার হালনাগাদ করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "অতিরিক্ত সফটওয়্যার পুনরায় ইন্সটল করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "অতিরিক্ত সফটওয়্যার অপসারণ করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "অতিরিক্ত সফটওয়্যার বিশোধিত করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "অতিরিক্ত সফটওয়্যার উন্নীত করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "অতিরিক্ত সফটওয়্যার অবনিত করা হবে"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "হালনাগাদ এড়িয়ে যাওয়া হবে"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "অতিরিক্ত পরিবর্তন প্রয়োজন"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "সর্বমোট %sB ডাউনলোড করা হবে।"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB ডিস্কের জায়গা খালি থাকবে।"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "ডিস্কের আরও %sB জায়গা ব্যবহৃত হবে।"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "কনফিগারেশন ফাইলের পরবর্তী সংস্করণ '%s' তে আপনার পরিবর্তন প্রতিস্থাপন?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"যদি ফাইলটি ইতোমধ্যে এখানে কেন তা আপনি না জানেন, প্রতিস্থাপন করতে এটা সাধারণত "
+"নিরাপদ।"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "পরিবর্তন (_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "রাখা (_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "প্রতিস্থাপন (_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "বিস্তারিত তথ্য (_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "প্রস্থান করতে %s এর জন্য অপেক্ষা করা হচ্ছে"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s ডাউনলোড করা হচ্ছে"
+msgstr[1] "%(files)s ডাউনলোড করা হচ্ছে"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "স্থানীয় রিপোজিটরী"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "%s থেকে ডাউনলোড করা হচ্ছে"
+msgstr[1] "%s থেকে ডাউনলোড করা হচ্ছে"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s এর কাঠামো"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s এর বর্ণনা"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s এর স্বাক্ষর বর্ণনা"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s থেকে বিদ্যমান প্যাকেজ"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s থেকে বিদ্যমান উৎস"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s থেকে বিদ্যমান অনুবাদ"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) এর জন্য অনুবাদ, %s থেকে"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s এর জন্য অনুবাদ, %s থেকে"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "(%s) অনুবাদ %s থেকে"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "প্যাকেজ %s বিদ্যমান নয়"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "প্যাকেজ %s ইন্সটল করা হয়নি"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "সংস্করণ %s এর %s ইন্সটল করা হয়নি"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "প্যাকেজ %s ইতোমধ্যে ইন্সটল করা হয়েছে"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "সংস্করণ %s এর %s বিদ্যমান নয়।"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"%s থেকে %s কী ইনস্টল এবং ডাউনলোড করতে ব্যর্থ:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "কী ফাইল %s ইন্সটল করা যায়নি: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "আঙ্গুলের ছাপ %s সহ কী অপসারণ করা যায়নি: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "প্যাকেজ %s অপসারণ হতে পারেনা।"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "সংস্করণ %s এর %s ইন্সটল করা হয়নি"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "বিগত সংস্করণ %s এর %s ইতোমধ্যে ইন্সটল করা হয়েছে"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "সংস্করণ %s এর %s ইতোমধ্যে ইন্সটল করা হয়েছে"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "সংস্করণ %s এর %s বিদ্যমান নয়"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "%s তে অবনিত করতে সংস্করণ সুনির্দিষ্টভাবে উল্লেখ করা প্রয়োজন"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "পরবর্তী সংস্করণ %s এর %s ইতোমধ্যে ইনস্টল করা হয়েছে"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s রিলিজে প্যাকেজ %s বিদ্যমান নয়।"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "প্যাকেজ %s অপসারণ হতে পারেনা"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"প্যাকেজটি কার্যকর ইন্সটলকৃত-আকার কন্ট্রোল ক্ষেত্র সরবরাহ করেনা। ডেবিয়ান নীতিমালা "
+"৫.৬.২০ দেখুন।"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "লাইসেন্স কী খালি"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "লাইসেন্স কী এক্সিকিউটেবল কোড ধারণ করতে অনুমোদিত নয়।"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "লাইসেন্স কী এর পথ %s, অকার্যকর"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "লাইসেন্স কী ইতোমধ্যে বিদ্যমান: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"লাইসেন্স কী এর অবস্থান অনিরাপদ, কেননা এতে সাংকেতিক সংযুক্তিসুত্র রয়েছে। %s পথটি %s "
+"কে নির্দেশ করছে।"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "কী ইন্সটল হবার উপযোগী ডিরেক্টরীটি এখনো বিদ্যমান নয়: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "কী ফাইল লিখতে ব্যর্থ: %s তে"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "নিম্নলিখিত প্যাকেজসমূহের নির্ভরশীলতায় অপূর্নতা রয়েছে:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "কিন্তু এটা একটা পরাবাস্তব প্যাকেজ"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "কিন্তু এটা ইন্সটল অবস্থায় নেই।"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "কিন্তু এটা ইন্সটল করা সম্ভব হচ্ছে না"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "কিন্তু %s ইন্সটল করা রয়েছে"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "কিন্তু %s ইন্সটল করতে হবে"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "বিশ্বস্ত সফটওয়্যারের ভেন্ডরের তালিকার কী সংযুক্ত করতে ব্যর্থ"
diff --git a/po/br.po b/po/br.po
new file mode 100644
index 0000000..8725597
--- /dev/null
+++ b/po/br.po
@@ -0,0 +1,1442 @@
+# Breton translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:43+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: Breton <br@li.org>\n"
+"Language: br\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Staliañ restr ar pakad"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Hizivaat stlennoù ar pakadoù"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Hizivaat ar pakadoù"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Dilezel trevell un arveriad all"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Pellgarget ez eus bet %sB eus %sB da %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Pellgarget ez eus bet %sB eus %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "O tiskoulmañ an amzalc'hoù"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Arabat lazhañ an daemon en abeg d'an diweredegezh"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Diskouez an titouroù a-zivout ar c'heweriañ diabarzh"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Kuitaat hag amsaviñ un daemon o labourat endeo"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Kadaviñ stadegoù an aelad er restr erspizet"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Arabat seveniñ kemmoù er reizhiad (evit an diorreourien nemetken)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Restr staliet"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pakadoù bet staliet"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Alc'hwez ouzhpennet diouzh ur restr"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Krubuilh hizivaet"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Alc'hwez hoc'h eus fiziañs enni dilamet"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pakadoù dilamet"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pakadoù hizivaet"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Reizhiad hizivaet"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Kemmoù sevenet"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Staliadu diglok ratreet"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Amzalc'hioù torr bet ratreet"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Gant berzh"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Dilezet"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "C'hwitet"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Staliadur ar restr"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Staliadur ar pakadoù"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Ouzhpennadur un alc'hwez diouzh ur restr"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Hizivadur ar grubuilh"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Dilamadur un alc'hwez hoc'h eus fiziañs enni"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Dilamadur ar pakadoù"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Hizivadur ar pakadoù"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Hizivadur ar reizhiad"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "O seveniñ ar c'hemmoù"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Ratreadur ur staliadur diglok"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "C'hwitadenn war staliañ restr ar pakad"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "C'hwitadenn war staliañ ar meziant"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "C'hwitadenn war azbevaat roll ar meziantoù"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"C'hwitadenn war dilemel ar gwerzher diwar roll ar re hoc'h eus fiziañs enno"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "C'hwitadenn war dilemel ar meziant"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "C'hwitadenn war hizivaat ar meziant"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "C'hwitadenn war hizivaat ar reizhiad"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "C'hwitadenn war seveniñ kemmoù ar meziant"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "C'hwitadenn war ratreañ ar staliadur diglok"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "C'hwitadenn war ratreañ an amzalc'hioù torr"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Gwiriañ ho kennask ouzh internet"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Gwiriañ hag emaoc'h oc'h ober gant mirlec'hioù un trede den. Mard eo evel-"
+"se, diweredekait i, rak drezo e teu kudennoù alies.\n"
+"Ha c'hoazh, lañsit an arc'had da heul en un dermenell : apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Ar restr dibabet n'eo ket ur restr alc'hwez GPG moarvat, pe neuze eo "
+"kontronet."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ur gudenn sirius eo homañ. Klaskit diwezhatoc'h. Mar tegouezho ar gudenn en-"
+"dro, gwell e vo sevel un danevell a-fet fazi evit an diorreourien."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "N'eus ket ezhomm eus un hizivadur."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "N'eus ket ezhomm eus ur staliadur."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "N'eus ket ezhomm dilemel."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Azgoulennet hoc'h eus da zilemel ur pakad a zo ul lod pouezus eus ho "
+"reizhiad."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Kollet eo bet ar c'hennask ouzh an daemon. Morvat eo sac'het drekva an "
+"daemon."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "C'hwitadenn war staliañ pe zistaliañ pakad ur meziant."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Marteze ez eo c'hwitet ar staliañ en abeg d'ur fazi e pakad ar meziant o "
+"klotañ gantañ pe rak dilezet eo bet gant un doare direizh. Ret eo vo deoc'h "
+"ratreañ an dra-se kent ma o trodeoc'h staliañ pe zilemel ur meziant bennak."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "C'hwitadenn war pellgargañ restroù ar pakad"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "C'hwitadenn war pellgargañ stlennoù ar mirlec'hioù"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Amzalc'hoù ar pakadoù n'hallont ket bezañ diskoulmet."
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Torret eo reizhiad ar pakadoù"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ne oa ket staliet an alc'hwez"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ne oa ket dilamet an alc'hwez"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "C'hwitadenn war prennañ merer ar pakadoù"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "C'hwitadenn war kargañ roll ar pakadoù"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Ar pakad n'eus ket anezhañ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Staliet eo ar pakad endeo"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "N'eo ket staliet ar pakad"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "C'hwitadenn war dilemel pakadoù pennañ ar reizhiad"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "N'haller ket evezhiañ pe wiriañ an drevell"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "C'hwitadenn war gwezhiadur evit ar pakad"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Azgoulenn a ra ma vo staliet pakadoù disfiziañs enno"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Ar staliadur kent n'eo ket bet echuet"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "O c'hortoz ma loc'ho ar gwezerezh"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "O c'hortoz"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "O c'hortoz ar media goulennet"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "O c'hortoz ma kuitao an ardoerioù meziantoù all"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "O c'hortoz kemenn ar restr kefluniañ"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Trevell o vont war-raok"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "O pellgargañ"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Naetadur"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Echu"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "O tilezel"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Kargadur roll ar meziantoù"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "O staliañ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "O kefluniañ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "O tilemel %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Goudestaliadur trigger %s o vont war-raok"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Oc'h hizivaat %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Pellgarget ez eus bet %sB eus %sB da %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Pellgarget ez eus bet %sB eus %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Munudoù"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Azgoulennet eo CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "K_enderc'hel"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Amsaviñ ho kemmoù e '%s' gant un handelv nevesoc'h eus ar restr kefluniañ ?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ma n'ouzit ket perak emañ ar restr amañ endeo ez eo gwell amsaviñ ar restr-"
+"mañ."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "K_emmoù"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Mirout"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Am_saviñ"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "Munu_doù"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "C'hwitadenn war ouzhpennañ an alc'hwez war roll gwezherion veziantoù "
+#~ "hoc'h eus fiziañs enno"
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 0000000..bae34c7
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,1491 @@
+# Bosnian translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-06 00:53+0000\n"
+"Last-Translator: Samir Ribić <Unknown>\n"
+"Language-Team: Bosnian <bs@li.org>\n"
+"Language: bs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista ključeva povjerljivih dobavljača"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Da vidite listu povjerljivih ključeva, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Ukloniti preuzete datoteke s paketima"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Da obrišete preuzete paketske datoteke, trebate proći kroz provjeru "
+"identiteta."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Promijeni softversku konfiguraciju"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Da promijenite softverske postavke, trebate proći kroz provjeru identiteta."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Promijeni softverski repozitorij"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Da promijenite postavke repozitorija, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instaliraj paketsku datoteku"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Da instalirate ovaj paket, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Ažuriraj podatke o paketu"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Da ažurirate katalog softvera, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instaliraj ili ukloni pakete"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Da instalirate ili uklanjate softver, trebate se prijaviti."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instaliraj softver s repozitorija bijele liste visokog povjerenja"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Za instalaciju softvera, potrebne je potvrda autentičnosti."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Dodaj novi repozitorij i instaliraj pakete iz njega."
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Da instalirate softver iz novog izvora, trebate se prijaviti."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Dodaj novi repozitorij kupljenog softvera i instaliraj pakete iz njega."
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Da instalirate kupljeni softver, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Nadogradi pakete"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Da instalirate ažurirani softver, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Otkaži zadatak drugog korisnika"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Da prekinete nečije promjene programa, trebate se prijaviti."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Postavi proksi za softverska preuzimanja"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Da koristite proksi server za preuzimanje softvera, trebate se prijaviti."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "GREŠKA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Preuzeto %sB od %sB na %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Preuzeto %sB od %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "GREŠKA"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Tu akciju vam nije dozvoljeno izvesti."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Stavljanje u red"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Rješavam zavisnosti"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Sljedeći novi paketi će biti instalirani (%(count)s):"
+msgstr[1] "Sljedeći novi paketi će biti instalirani (%(count)s):"
+msgstr[2] "Sljedeći novi paketi će biti instalirani (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Sljedeći paketi će biti nadograđeni (%(count)s):"
+msgstr[1] "Sljedeći paketi će biti nadograđeni (%(count)s):"
+msgstr[2] "Sljedeći paketi će biti nadograđeni (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Sljedeći paketi će biti uklonjeni (%(count)s):"
+msgstr[1] "Sljedeći paketi će biti uklonjeni (%(count)s):"
+msgstr[2] "Sljedeći paketi će biti uklonjeni (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Sljedeći paketi će biti snižene verzije (%(count)s):"
+msgstr[1] "Sljedeći paketi će biti snižene verzije (%(count)s):"
+msgstr[2] "Sljedeći paketi će biti snižene verzije (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Sljedeći paketi će biti reinstalirani (%(count)s):"
+msgstr[1] "Sljedeći paketi će biti reinstalirani (%(count)s):"
+msgstr[2] "Sljedeći paketi će biti reinstalirani (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Sljedeći paketi će biti sačuvani (%(count)s):"
+msgstr[1] "Sljedeći paketi će biti sačuvani (%(count)s):"
+msgstr[2] "Sljedeći paketi će biti sačuvani (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Treba preuzeti %sB arhiva."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Nakon ove operacije, %sB dodatnog disk prostora će biti korišteno."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Nakon ove operacije, %sB dodatnog disk prostora će biti oslobođeno."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Želite li nastaviti [D/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Da radite više od jednog paketa, stavite njihova imena u navodnike:\n"
+"aptdcon --install \"prvi drugi\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Osvježi keš"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Pokušaj razrješenja oštećenih zavisnosti. Potencijalno opasno, jer može "
+"ukloniti previše paketa."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Pokušaj završetka prethodne nekompletne instalacije"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instaliraj navedene pakete"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Ponovno instaliraj navedene pakete"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Ukloni navedene pakete"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Ukloni navedene pakete i konfiguracijku datoteku"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Smanjenje verzije navedenih paketa"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Zastarjelo: Koristite --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Ažuriraj sistem na siguran način"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Ažuriraj sistem instalacijom i uklanjanjem paketa"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Dodaj proizvođača u one s povjerenjem"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Dodaj identifikator ključa proizvođača (potreban --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Koristi navedeni server ključeva za pretragu ključeva"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Dodaj novi repozitorij iz navedene deb linije"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Navedi alternativnu datoteku sources.list.d gdje se trebaju dodati "
+"repozitoriji."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Lista ključeva proizvođača s povjerenjem."
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Ukloni povjerljivi ključ datog otiska."
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Ponovo će podesiti instalirane pakete. Opcionalno može biti naveden "
+"minimalni prioritet pitanja."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Minimalni prioritet pitanja deb podešavanja koja će biti prikazana"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ne prilaži uz apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Dopusti pakete iz neautentičnih izvora"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Prikazati dodatne informacije o paketima. Trenutno samo broj verzije"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Čekanje na prijavu"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ne gasi demon zbog neaktivnosti"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ne učitavaj nikakve priključke"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Prikaži interne procesneinformacije"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Napusti i zamijeni demon koji se već izvršava"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Osluškuje na magistrali DBus sesije (potrebno je samo za testiranje)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Izvršava operacije u datom chroot okruženju"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Postavi stanja profila u navedenoj datoteci"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ne mijenjaj izmjene sistema (Upotrebljivo samo za razvoj softvera)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Instalirana datoteka"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Instalirani paketi"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Dodan ključ iz datoteke"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Ažuriran keš"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Pretraga je obavljena"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Ukljonjen povjerljivi ključ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Uklonjeni paketi"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Ažurirani paketi"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Ažuriran sistem"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Primijenjene promjene"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Popravljena nekompletna instalacija"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Popravljene oštećene zavisnosti"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Dodan softverski izvor"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Omogućena komponenta distribucije"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Uklonjene preuzete datoteke paketa"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Ponovo podešeni instalirani paketi"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Uspješno"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Poništeno"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Neuspelo"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instaliranje datoteke"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instaliranje paketa"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Dodaje se ključ iz datoteke"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Osvježavam međuspremnik (cache)"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Uklanja se povjerljivi ključ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Uklanjanje paketa"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Ažuriranje paketa"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Nadogradnja sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Primjenjivanje promjena"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Popravak nekompletne instalacije"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Popravljam instaliran softver"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Dodaje se izvor softvera"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Omogućuje se komponenta distribucije"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Ponovo podešeni instalirani paketi"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Ponovo podešavam instalirane pakete"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Tražim"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalacija paketne datoteke nije uspjela"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalacija softvera nije uspjela"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Dodavanje ključa na listu prihvatljivih isporučilaca softvera neuspjelo"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Osvježavanje liste softvera nije uspjelo"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Uklanjanje proizvođača iz liste povjerljivih nije uspjelo"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Uklanjanje softvera nije uspjelo"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Ažuriranje softvera nije uspjelo"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Nadogradnja sistema nije uspjela"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Primjena softveskih izmjena neuspjela"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Popravak nekompletne instalacije neupio"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Popravak oštećenih ovisnosti neuspio"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Dodavanje softverskih izvora neuspjelo"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Omogućavanje komponente distribucije neuspjlo"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Nisam uspio da uklonim preuzete datoteke paketa"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Pretraga nije uspjela"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Dodajem ključ licence"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Provjerite vašu Internet konekciju."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Provjerite da li koristite repozitorije drugih proizvođača. Ako je to tačno, "
+"onemogućite ih, pošto su oni čest izvor problema.\n"
+"Dalje izvršite sljedeću komandu u terminalu: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Selektovana datoteka možda nije GPG key datoteka ili je možda pokvarena."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Izabrani ključ se ne može ukloniti. Provjerite da ste dali važeći otisak."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Provjerite da li izvršavate drugi alat za upravljavljanje softverom, npr. "
+"Synaptic ili aptitude. Samo jedan alat može da pravi promjene u jednom "
+"trenutku."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ovo je ozbiljan problem. Probajte ponovo kasnije. Ako se problem opet "
+"dogodi, javite grešku onome ko je razvijao softver."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Provjerite kako se tačno paket zove i da li je omogućen odgovarajući "
+"repozitorij."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nema nikakve potrebe za ažuriranjem."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nema nikakve potrebe za instaliranjem."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nema nikakve potrebe za uklanjanje."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Zahtijevali ste uklanjanje paketa koji je bitan dio vašeg sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Veza s demonom je izgubljena. Najvjerovatnije je pozadinski demon krahirao."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Instalacija ili uklanjanje softverskog paketa su neuspjeli."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Zatražena funkcija nije podržana."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Izgleda da postoji greška u programiranju aptdaemon, softvera koji vam "
+"omogućava da instalirate / uklanjate softver kao i da vrši druge poslove u "
+"vezi sa upravljanjem paketa."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ova greška može biti uzrokovana potrebnim dodatnim paketima koji nedostaju "
+"ili se ne mogu instalirati. Štaviše, može biti konflikt između softverskih "
+"paketa koji nisu dopušteni da budu instalirani u isto vrijeme."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Ovo zahtijeva instalaciju paketa s neautentičnih izvora"
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Instalacija je možda neuspjela zbog greke u odgovarajućem softverskom paketu "
+"ili je prekinuto na neadekvatan način. Trebate to popraviti prije "
+"instalacije ili uklanjanja daljnjeg softvera."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Molim kopirajte datoteku na vaš lokalni računar i provjerite prava nad "
+"datotekom."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Instaliranje paketa koji krše standarde kvaliteta nije dozvoljeno. To može "
+"izazvati ozbiljne probleme na vašem računaru. Molim kontaktirajte osobu ili "
+"organizaciju koja je obezbjedila ovaj paket i uključite detalje ispod."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Preuzeti ključ licence koji je potreban za pokretanje ovog programa nije "
+"ispravan ili ne može biti ispravno instaliran.\n"
+"Pogledajte pojedinosti za više podataka."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Sve dostupne nadogradnje su već instalirane."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Ključ licence koji vam omogućava da koristite ovaj program ne može biti "
+"preuzet. Provjerite vašu mrežnu vezu."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Nemate potrebna prava da obavite ovu akciju."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Ili ste dali pogrešnu lozinku ili otkazali punomoć.\n"
+"Nadalje, također može biti tehnički razlog ove pogreške, ako niste vidjeli "
+"dijalog lozinki: vaše desktop okruženje ne pruža PolicyKit agenta sesije."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Neuspjeh u preuzimanju paketnih datoteka"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Neuspjeh u preuzimanju repozitorijskih informacija"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Paketske zavisnosti se ne mogu razriješiti"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Paketni sistem je oštećen"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ključ nije instaliran"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ključ nije uklonjen"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Neuspjeh u zaključavanju paketnog menadžera"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Neuspjeh u učitavanju liste paketa"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paket ne postoji"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paket je već ažuriran"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paket je već instaliran"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paket nije instaliran"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Neuspjelo uklanjanje bitnog sistemskog paketa"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Zadatak se ne može pratiti ili kontrolisati"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operacija nad paketom nije uspjela"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Zahtijeva instalaciju nepovjerljivih paketa"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Prethodna instalacija nije završena"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paket je lošeg kvaliteta"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Datoteka paketa ne može biti otvorena"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nepodržana funkcija"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Nisam uspio da preuzmem ključ licence"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Nisam uspio da instaliram ključ licence"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistem je već ažuriran"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Ne možete biti autorizirani"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Nije vam dopušteno da obavite ovu akciju"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Desila se greška koja se ne može obraditi"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Čeka se start servisa"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Čekam"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Čeka se potrebni medijum"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Čekaju se drugi softverski menadžeri za izlaz"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Čeka se odziv datoteke za konfiguraciju"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Izvršavajući zadatak"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Preuzimanje"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Propitujem izvore softvera"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Čišćenje"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Završeno"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Otkazujem"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Učitava se lista softvera"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instaliranje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Konfiguriranje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Uklanjanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Potpuno uklanjam %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Zabilježen nestanak %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Pokrećem post-instalacijski okidač %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Nadogradnja %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Raspakujem %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Pripremam instalaciju %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Pripremam konfiguraciju %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Pripremam uklanjanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Pripremam potpuno uklanjanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Instalirano %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Potpuno uklonjene %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Uklonjeno %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Završeno"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Provjera identiteta nije uspjela"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Dobavljanje"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Neaktivno"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Mreža nije raspoloživa"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Obrađujem %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Preuzeto %sB od %sB na %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Preuzeto %sB od %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalji"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Datoteka"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Preuzeto %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Preuzeto"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' je neophodan"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Ubacite gornji CD/DVD u uređaj '%s' da instalirate softverske pakete iz "
+"njega."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Nastavi"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instaliraj"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Instaliraj ponovo"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Ukloni"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Ukloni"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Nadogradi"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Degradiraj"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Preskoči nadogradnju"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Pogledajte dolje listu promjena"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Dodatni softver treba biti instaliran"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Dodatni softver treba biti reinstaliran"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Dodatni softver treba biti uklonjen"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Dodatni softver treba biti očišćen"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Dodatni softver treba biti unaprijeđen"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Dodatni softver treba biti spušten na nižu verziju"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Unaprjeđenja će biti preskočena"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Potrebne su dodatne promjene"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB će se ukupno učitati."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB disk prostora će biti oslobođeno."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB dodatnog disk prostora će biti korišteno."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Zamijeniti vaše izmjene u '%s' novijom verzijom konfiguracione datoteke?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "Ako ne znate zašto je datoteka tu, obično je bezbjedno zamijeniti je."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Izmjene"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Zadrži"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Zamijeni"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalji"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Čekam na „%s“ da završi"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Preuzimam „%(files)s“"
+msgstr[1] "Pruzimam „%(files)s“"
+msgstr[2] "Pruzimam „%(files)s“"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokalna riznica"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Preuzimam iz %s"
+msgstr[1] "Preuzimam iz %s"
+msgstr[2] "Preuzimam iz %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktura za %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Opis za %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Potpis opisa za %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Dostupni paketi iz %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Dostupni izvori iz %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Dostupni prevodi od %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Prevodi za %s (%s) od %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Prevodi za %s od %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Prijevodi (%s) iz %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paket „%s“ nije dostupan"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paket „%s“ nije instaliran"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Verzija %s „%s“ paketa nije instalirana"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paket „%s“ je već instaliran"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Verzija %s „%s“ paketa nije dostupna."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL servera ključ je neispravan: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "IPogrešan protokol servera: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Nevažeći IB ključa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nisam uspio da preuzmem i da instaliram ključ „%s“ sa „%s“:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Datoteka ključa „%s“ ne može biti instalirana: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ključ sa otiskom „%s“ ne može biti uklonjen: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paket „%s“ ne može biti uklonjen."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Verzija %s „%s“ paketa nije instalirana"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Bivša verzija %s „%s“ paketa je već instalirana"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Verzija %s „%s“ paketa je već instalirana"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Verzija %s „%s“ paketa nije dostupna"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Treba da navedete verziju na koju će „%s“ biti spušten"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Kasnija verzija %s „%s“ paketa je već instalirana"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paket „%s“ nije dostupan u izdanju %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paket „%s“ ne može biti uklonjen"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paket ne obezbjeđuje ispravno polje za kontrolu instalirane veličine. "
+"Pogledajte Debian sigurnosna pravila 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Ključ licence je prazan"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Nije dozvoljeno da ključ licence sadrži izvršni kod."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Putanja ključa licence %s nije ispravna."
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Ključ licence već postoji: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Mjesto ključa licence nije bezbedno jer sadrži simbolične veze. Putanja %s "
+"ukaazuje na %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Direktorijum za instaliranje ključa ne postoji još uvijek: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Nisam uspeo da zapišem datoteku ključa u: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Sljedeći paketi imaju nezadovoljenje međuzavisnosti:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ali to je virtualni paket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ali nije instaliran"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ali neće biti instaliran"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ali instaliran je „%s“"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ali će %s biti instaliran"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Dodavanje ključa na listu povjerljivih proizvođača softvera nije uspjelo"
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..43d98c8
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,1509 @@
+# Catalan translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-03-02 12:03+0000\n"
+"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"Language: ca\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Obtenció d'una llista de claus dels proveïdors de confiança"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Cal que us autentiqueu per obtenir la llista de claus de confiança."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Supressió dels fitxers de paquet baixats"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Cal que us autentiqueu per poder netejar els fitxers de paquet baixats."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Canvi de la configuració del programari"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Cal que us autentiqueu per poder canviar els paràmetres del programari."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Canvi de dipòsit de programari"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Cal que us autentiqueu per canviar els paràmetres dels dipòsits de "
+"programari."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instal·lació d'un fitxer de paquet"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Cal que us autentiqueu per instal·lar aquest paquet."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualització de la informació dels paquets"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Cal que us autentiqueu per actualitzar el catàleg de programari."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instal·lació o supressió de paquets"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Cal que us autentiqueu per instal·lar o suprimir programari."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instal·lació de programari d'un dipòsit de confiança alta."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Per instal·lar programari, cal autenticar-se."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Addició d'un dipòsit nou i instal·lació de paquets d'aquest"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Heu d'autenticar-vos per instal·lar programari d'una font nova."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Addició d'un dipòsit nou de programari que s'hagi comprat i instal·lació de "
+"paquets d'aquest"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Heu d'autenticar-vos per instal·lar programari que hàgiu comprat."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Actualització dels paquets"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Cal que us autentiqueu per instal·lar programari actualitzat."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancel·lació de la tasca d'un altre usuari"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Cal que us autentiqueu per cancel·lar els canvis que algú altre realitzi al "
+"programari."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Establiment d'un servidor intermediari per baixar programari"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Cal que us autentiqueu per utilitzar un servidor intermediari per baixar "
+"programari."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "S'han baixat %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "S'han baixat %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "No teniu permís per realitzar aquesta acció."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "S'està encuant"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "S'estan resolent les dependències"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "S'instal·larà el paquet següent NOU (%(count)s):"
+msgstr[1] "S'instal·laran els paquets següents NOUS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "S'actualitzarà el paquet següent (%(count)s):"
+msgstr[1] "S'actualitzaran els paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Se SUPRIMIRÀ el paquet següent (%(count)s):"
+msgstr[1] "Se SUPRIMIRAN els paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Es tornarà a una versió anterior del paquet següent (%(count)s):"
+msgstr[1] "Es tornarà a una versió anterior dels paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Es tornarà a instal·lar el paquet següent (%(count)s):"
+msgstr[1] "Es tornaran a instal·lar els paquets següents (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "S'ha retingut el paquet següent (%(count)s):"
+msgstr[1] "S'han retingut els paquets següents (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "S'han d'obtenir %sB de fitxers."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Després d'aquesta operació, s'utilitzaran %sB d'espai addicional del disc."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Un cop finalitzada aquesta operació s'alliberaran %sB d'espai addicional de "
+"disc."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Voleu continuar [S/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Per operar en més d'un paquet heu de posar els noms dels paquets entre "
+"cometes:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresca la memòria cau"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Intenta resoldre les dependències trencades. L'operació és potencialment "
+"perillosa ja que podria intentar suprimir molts paquets."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Intenta finalitzar una instal·lació prèvia no completada"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instal·la els paquets especificats"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Torna a instal·lar els paquets especificats"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Suprimeix els paquets especificats"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Suprimeix els paquets especificats, incloent-ne els fitxers de configuració"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Torna a una versió anterior dels paquets especificats"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsolet: utilitzeu --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Actualitza el sistema de manera segura"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Actualitza el sistema, segurament mitjançant la instal·lació i la supressió "
+"de paquets"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Afegeix el proveïdor als de confiança"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Afegeix l'identificador de la clau del proveïdor (també cal --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utilitza el servidor de claus proporcionat per cercar claus"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Afegeix un dipòsit nou d'una línia deb proporcionada"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especifiqueu un fitxer sources.list.d alternatiu on s'haurien d'afegir els "
+"dipòsits."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Mostra la llista de claus dels proveïdors de confiança"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Suprimeix la clau de confiança de l'empremta proporcionada"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Torna a configurar els paquets instal·lats. Opcionalment es pot especificar "
+"la prioritat mínima de les preguntes."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La prioritat mínima de la pregunta del debconf que es mostrarà"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "No t'adjuntis al terminal de l'apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permet paquets de fonts sense autenticar"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostra informació addicional sobre els paquets. Actualment només es mostra "
+"el número de la versió"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "S'està esperant l'autenticació"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "No aturis el dimoni per inactivitat"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "No carreguis cap connector"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostra la informació interna de processament"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Surt i reemplaça un dimoni que s'estigui executant"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escolta en el bus de sessió DBus (només cal per a proves)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realitza les operacions en el chroot especificat"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Desa estadístiques de perfil en el fitxer especificat"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "No facis cap canvi al sistema (només útil per als desenvolupadors)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fitxer instal·lat"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquets instal·lats"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "S'ha afegit la clau des d'un fitxer"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "S'ha actualitzat la memòria cau"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Ha finalitzat la cerca"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "S'ha suprimit la clau de confiança"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "S'han suprimit els paquets"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "S'han actualitzat els paquets"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "S'ha actualitzat el sistema"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "S'han aplicat els canvis"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instal·lació incompleta reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependències no vàlides reparades"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "S'ha afegit una font de programari"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "S'ha habilitant un component de la distribució"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "S'han suprimit els fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "S'han tornat a configurar els paquets instal·lats"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Correcte"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancel·lat"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Ha fallat"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "S'està instal·lant un fitxer"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "S'estan instal·lant els paquets"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "S'està afegint la clau des del fitxer"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "S'està actualitzant la memòria cau"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "S'està suprimint la clau de confiança"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "S'estan suprimint els paquets"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "S'estan actualitzant els paquets"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "S'està actualitzant el sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "S'estan aplicant els canvis"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "S'està reparant la instal·lació incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "S'està reparant el programari instal·lat"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "S'està afegint la font de programari"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "S'està habilitant el component de la distribució"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "S'estan suprimint els fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "S'estan tornant a configurar els paquets instal·lats"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "S'està cercant"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Ha fallat la instal·lació del paquet"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Ha fallat la instal·lació del programari"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "Ha fallat l'addició de proveïdors de programari de confiança"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Ha fallat l'actualització de la llista de programari"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"S'ha produït un error en eliminar el proveïdor de la llista de confiança"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Ha fallat la supressió del programari"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Ha fallat l'actualització del programari"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Ha fallat l'actualització del sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Ha fallat l'aplicació de canvis de programari"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Ha fallat la reparació de la instal·lació incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Ha fallat la reparació de dels dependències no vàlides"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Ha fallat l'addició de la font de programari"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Ha fallat l'habilitació del component de la distribució"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Ha fallat la supressió dels fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Ha fallat la cerca"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "S'està afegint la clau de llicència"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Comproveu la connexió a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Comproveu si esteu utilitzant dipòsits de tercers. Si aquest és el cas, és "
+"recomanable que els inhabiliteu, ja que són una font habitual de problemes.\n"
+"Addicionalment, hauríeu d'executar l'ordre següent en un terminal: apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Pot ser que el fitxer que heu seleccionat no sigui un fitxer de clau GPG o "
+"que estigui malmès."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"No s'ha pogut suprimir la clau seleccionada. Comproveu que hàgiu "
+"proporcionat una empremta vàlida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Comproveu si actualment esteu executant una altra eina de gestió del "
+"programari, com ara el Synaptic o l'aptitude. Només es permet utilitzar una "
+"eina a la vegada per fer canvis."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Aquest es un problema seriós. Torneu a intentar-ho més tard. Si el problema "
+"reapareix, informeu-ne els desenvolupadors."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Comproveu l'ortografia del nom del paquet i que el dipòsit apropiat estigui "
+"activat."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "No cal fer cap actualització."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "No cal fer cap instal·lació."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "No cal fer cap supressió."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Heu sol·licitat la supressió d'un paquet que és una part essencial del "
+"sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"S'ha perdut la connexió amb el dimoni. Segurament el dimoni en segon pla ha "
+"tingut una fallada."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Ha fallat la instal·lació o supressió d'un paquet de programari."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La funció que s'ha sol·licitat no està implementada."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Sembla que s'ha produït un error de programació a l'Aptdaemon, l'aplicació "
+"que us permet insta·lar i suprimir programari i realitzar altres tasques "
+"relacionades amb la gestió de paquets."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Pot ser que aquest error sigui degut al fet que calguin paquets de "
+"programari addicionals que no estan disponibles o no es poden instal·lar. "
+"També podria ser un conflicte entre paquets de programari que no es poden "
+"instal·lar simultàniament."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Aquesta acció requereix la instal·lació de fonts no identificades."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Pot ser que la instal·lació hagi fallat degut a un error en el paquet de "
+"programari corresponent o que fou cancel·lada d'una manera incorrecta. "
+"Haureu de reparar-ho abans de poder instal·lar o eliminar qualsevol "
+"programari."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Copieu el fitxer a l'ordinador local i comproveu els permisos del fitxer."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"No es permet la instal·lació d'un paquet que no compleix els estàndards de "
+"qualitat. Això podria causar problemes seriosos a l'ordinador. Contacteu amb "
+"la persona o organització que us ha proporcionat aquest fitxer de paquet i "
+"incloeu el detalls de sota."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clau de llicència que s'ha baixat i que és necessària per executar "
+"aquesta aplicació no és vàlida o no s'ha pogut instal·lar correctament.\n"
+"Vegeu els detalls per obtenir més informació."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Ja s'han instal·lat totes les actualitzacions disponibles."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"La clau de llicència que és necessaria per executar aquesta aplicació no "
+"s'ha pogut baixar. Comproveu la connexió de xarxa."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "No teniu els permisos necessaris per dur a terme aquesta acció."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Heu introduït una contrasenya incorrecta o bé heu cancel·lat "
+"l'autorització.\n"
+"Si no heu vist cap diàleg d'autorització, pot ser que sigui degut a un error "
+"tècnic: en concret, el vostre entorn d'escriptori no proporciona un agent de "
+"sessió del PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Ha fallat la baixada de fitxers de paquets"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Ha fallat la baixada de la informació del dipòsit"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "No es poden resoldre les dependències dels paquets"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "El sistema de paquets està malmès"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "No s'ha instal·lat la clau"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "No s'ha suprimit la clau"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Ha fallat el blocatge del gestor de paquets"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Ha fallat la càrrega de la llista de paquets"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "El paquet no existeix"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "El paquet ja està actualitzat"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "El paquet ja està instal·lat"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "El paquet no està instal·lat"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Ha fallat la supressió d'un paquet essencial del sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "No es pot fer un seguiment o control de la tasca"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Ha fallat l'operació amb el paquet"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requereix la instal·lació de paquets que no són de confiança"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "No s'ha completat la instal·lació anterior"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "El paquet és de mala qualitat"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "No s'ha pogut obrir el fitxer de paquet"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "La funció no està implementada"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Ha fallat la baixada de la clau de llicència"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Ha fallat la instal·lació de la clau de llicència"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "El sistema ja està actualitzat"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "No ha estat possible donar-vos l'autorització"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "No teniu permís per dur a terme aquesta acció"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "S'ha produit un error que no es pot gestionar"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "S'està esperant que comenci el servei"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "En espera"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "S'està esperant el suport necessari"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "S'està esperant que altres gestors de programari surtin"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "S'està esperant el diàleg del fitxer de configuració."
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "S'està executant la tasca"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "S'està baixant"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "S'estan consultant les fonts de programari"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "S'està netejant"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "S'ha finalitzat"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "S'està cancel·lant"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "S'està carregant la llista de programari"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "S'està instal·lant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "S'està configurant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "S'està suprimint %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "S'està suprimint completament el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "S'està anotant la desaparició del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "S'està executant l'activador de postinstal·lació %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "S'està actualitzant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "S'està desempaquetant el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "S'està preparant la instal·lació del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "S'està preparant la configuració del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "S'està preparant la supressió del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "S'està preparant la supressió completa del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "S'ha instaŀlat el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "S'ha suprimit completament el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "S'ha suprimit el paquet %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fet"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Ha fallat l'autenticació"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "S'està recollint"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactiu"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "La xarxa no es troba disponible"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "S'està processant %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "S'han baixat %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "S'han baixat %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalls"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fitxer"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "S'han baixat %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Baixat"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Cal el CD o DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "Inseriu el CD/DVD a la unitat «%s» per instal·lar-ne els paquets."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinua"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instal·la"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstal·la"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Suprimeix"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Neteja"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Actualitza"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Torna a una versió anterior"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Omet l'actualització"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Comproveu la llista de canvis de més avall."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Cal instal·lar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Cal tornar a instal·lar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Cal suprimir programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "S'ha de netejar el programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Cal actualitzar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Cal tornar a una versió anterior de programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "S'ometran les actualitzacions"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Calen canvis addicionals"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Es baixaran %sB en total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "S'alliberaran %sB d'espai de disc."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "S'utilitzaran %sB més d'espai de disc."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Voleu reemplaçar els vostres canvis a «%s» amb l'última versió del fitxer de "
+"configuració?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Si no sabeu com és que el fitxer ja es troba allí, és més segur que el "
+"reemplaceu."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Canvis"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Manté"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Reemplaça"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalls"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "S'està esperant al %s per sortir"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "S'està baixant %(files)s"
+msgstr[1] "S'estan baixant %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "dipòsit local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "S'està baixant de %s"
+msgstr[1] "S'estan baixant de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estructura del dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descripció del dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Signatura de la descripció del dipòsit %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquets disponibles al dipòsit %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Fonts disponibles al dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduccions disponibles al dipòsit %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduccions en %s (%s) del dipòsit %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduccions en %s del dipòsit %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduccions (%s) del dipòsit %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "El paquet %s no està disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "El paquet %s no està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versió %s de %s no està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "El paquet %s ja està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versió %s de %s no està disponible."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "L'URL del servidor de claus no és vàlid: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "El protocol del servidor no és vàlid: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "L'identificador de la clau no és vàlid: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"No s'ha pogut baixar i instal·lar la clau %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "No s'ha pogut instal·lar el fitxer clau %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "No s'ha pogut suprimir la clau amb empremta dactilar %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "No es pot suprimir el paquet %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versió %s de %s no està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "L'antiga versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versió %s de %s no està disponible"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Heu d'especificar la versió anterior a la qual ha de tornar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "L'última versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "El paquet %s no està disponible en la versió %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "No es pot suprimir el paquet %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"El paquet no proporciona un camp de control de mida d'instal·lació vàlid. "
+"Vegeu la política de Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clau de llicència és buida"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clau de llicència no pot contenir codi executable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "El camí %s de la clau de llicència no és vàlid"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clau de llicència ja existeix: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"La ubicació de la clau de llicència no és segura perquè conté enllaços "
+"simbòlics. El camí %s correspon a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "El directori on s'ha d'instal·lar la clau encara no existeix: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Ha fallat l'escriptura del fitxer de clau a: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Els paquets següents tenen dependències sense satisfer:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "però és un paquet virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "però no està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "però no s'instal·larà"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "però %s està instal·lat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "però %s s'instal·larà"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "S'ha produït un error en afegir la clau a la llista de proveïdors de "
+#~ "programari de confiança"
diff --git a/po/ca@valencia.po b/po/ca@valencia.po
new file mode 100644
index 0000000..6f98c55
--- /dev/null
+++ b/po/ca@valencia.po
@@ -0,0 +1,1503 @@
+# Catalan translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-19 09:16+0000\n"
+"Last-Translator: Joan Duran <jodufi@gmail.com>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"Language: ca\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Obtenció d'una llista de claus dels proveïdors de confiança"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Cal que vos autentiqueu per obtindre la llista de claus de confiança."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Supressió dels fitxers de paquet baixats"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Cal que vos autentiqueu per poder netejar els fitxers de paquet baixats."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Canvi de la configuració del programari"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Cal que vos autentiqueu per poder canviar els paràmetres del programari."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Canvi de dipòsit de programari"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Cal que vos autentiqueu per canviar els paràmetres dels dipòsits de "
+"programari."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instal·lació d'un fitxer de paquet"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Cal que vos autentiqueu per instal·lar este paquet."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualització de la informació dels paquets"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Cal que vos autentiqueu per actualitzar el catàleg de programari."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instal·lació o supressió de paquets"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Cal que vos autentiqueu per instal·lar o suprimir programari."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instal·lació de programari d'un dipòsit de confiança alta."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Per instal·lar programari, cal autenticar-se."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Addició d'un dipòsit nou i instal·lació de paquets d'este"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Heu d'autenticar-vos per instal·lar programari d'una font nova."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Addició d'un dipòsit nou de programari que s'haja comprat i instal·lació de "
+"paquets d'este"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Heu d'autenticar-vos per instal·lar programari que hàgeu comprat."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Actualització dels paquets"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Cal que vos autentiqueu per instal·lar programari actualitzat."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancel·lació de la tasca d'un altre usuari"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Cal que vos autentiqueu per cancel·lar els canvis que algú altre realitzi al "
+"programari."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Establiment d'un servidor intermediari per baixar programari"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Cal que vos autentiqueu per utilitzar un servidor intermediari per baixar "
+"programari."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "S'han baixat %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "S'han baixat %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "No teniu permís per realitzar esta acció."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "S'està encuant"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "S'estan resolent les dependències"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "S'instal·larà el paquet següent NOU (%(count)s):"
+msgstr[1] "S'instal·laran els paquets següents NOUS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "S'actualitzarà el paquet següent (%(count)s):"
+msgstr[1] "S'actualitzaran els paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Se SUPRIMIRÀ el paquet següent (%(count)s):"
+msgstr[1] "Se SUPRIMIRAN els paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Es tornarà a una versió anterior del paquet següent (%(count)s):"
+msgstr[1] "Es tornarà a una versió anterior dels paquets següents (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Es tornarà a instal·lar el paquet següent (%(count)s):"
+msgstr[1] "Es tornaran a instal·lar els paquets següents (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "S'ha retingut el paquet següent (%(count)s):"
+msgstr[1] "S'han retingut els paquets següents (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "S'han d'obtindre %sB de fitxers."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Després d'esta operació, s'utilitzaran %sB d'espai addicional del disc."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Un cop finalitzada esta operació s'alliberaran %sB d'espai addicional de "
+"disc."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Voleu continuar [S/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Per operar en més d'un paquet heu de posar els noms dels paquets entre "
+"cometes:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresca la memòria cau"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Intenta resoldre les dependències trencades. L'operació és potencialment "
+"perillosa ja que podria intentar suprimir molts paquets."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Intenta finalitzar una instal·lació prèvia no completada"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instal·la els paquets especificats"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Torna a instal·lar els paquets especificats"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Suprimeix els paquets especificats"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Suprimeix els paquets especificats, incloent-ne els fitxers de configuració"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Torna a una versió anterior dels paquets especificats"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsolet: utilitzeu --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Actualitza el sistema de manera segura"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Actualitza el sistema, segurament mitjançant la instal·lació i la supressió "
+"de paquets"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Afig el proveïdor als de confiança"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Afig l'identificador de la clau del proveïdor (també cal --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utilitza el servidor de claus proporcionat per cercar claus"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Afig un dipòsit nou d'una línia deb proporcionada"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especifiqueu un fitxer sources.list.d alternatiu on s'haurien d'afegir els "
+"dipòsits."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Mostra la llista de claus dels proveïdors de confiança"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Suprimeix la clau de confiança de l'empremta proporcionada"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Torna a configurar els paquets instal·lats. Opcionalment es pot especificar "
+"la prioritat mínima de les preguntes."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La prioritat mínima de la pregunta del debconf que es mostrarà"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "No t'adjuntis al terminal de l'apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permet paquets de fonts sense autenticar"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostra informació addicional sobre els paquets. Actualment només es mostra "
+"el número de la versió"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "S'està esperant l'autenticació"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "No atures el dimoni per inactivitat"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "No carregues cap connector"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostra la informació interna de processament"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Ix i reemplaça un dimoni que s'estiga executant"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escolta en el bus de sessió DBus (només cal per a proves)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realitza les operacions en el chroot especificat"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Alça estadístiques de perfil en el fitxer especificat"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "No faces cap canvi al sistema (només útil per als desenvolupadors)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fitxer instal·lat"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquets instal·lats"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "S'ha afegit la clau des d'un fitxer"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "S'ha actualitzat la memòria cau"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Ha finalitzat la cerca"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "S'ha suprimit la clau de confiança"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "S'han suprimit els paquets"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "S'han actualitzat els paquets"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "S'ha actualitzat el sistema"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "S'han aplicat els canvis"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instal·lació incompleta reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependències no vàlides reparades"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "S'ha afegit una font de programari"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "S'ha habilitant un component de la distribució"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "S'han suprimit els fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "S'han tornat a configurar els paquets instal·lats"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Correcte"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancel·lat"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Ha fallat"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "S'està instal·lant un fitxer"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "S'estan instal·lant els paquets"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "S'està afegint la clau des del fitxer"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "S'està actualitzant la memòria cau"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "S'està suprimint la clau de confiança"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "S'estan suprimint els paquets"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "S'estan actualitzant els paquets"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "S'està actualitzant el sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "S'estan aplicant els canvis"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "S'està reparant la instal·lació incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "S'està reparant el programari instal·lat"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "S'està afegint la font de programari"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "S'està habilitant el component de la distribució"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "S'estan suprimint els fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "S'estan tornant a configurar els paquets instal·lats"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "S'està cercant"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Ha fallat la instal·lació del paquet"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Ha fallat la instal·lació del programari"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Ha fallat l'actualització de la llista de programari"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"S'ha produït un error en eliminar el proveïdor de la llista de confiança"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Ha fallat la supressió del programari"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Ha fallat l'actualització del programari"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Ha fallat l'actualització del sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Ha fallat l'aplicació de canvis de programari"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Ha fallat la reparació de la instal·lació incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Ha fallat la reparació de dels dependències no vàlides"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Ha fallat l'addició de la font de programari"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Ha fallat l'habilitació del component de la distribució"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Ha fallat la supressió dels fitxers de paquets baixats"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Ha fallat la cerca"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "S'està afegint la clau de llicència"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Comproveu la connexió a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Comproveu si esteu utilitzant dipòsits de tercers. Si este és el cas, és "
+"recomanable que els inhabiliteu, ja que són una font habitual de problemes.\n"
+"Addicionalment, hauríeu d'executar l'orde següent en un terminal: apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Pot ser que el fitxer que heu seleccionat no siga un fitxer de clau GPG o "
+"que estiga malmés."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"No s'ha pogut suprimir la clau seleccionada. Comproveu que hàgeu "
+"proporcionat una empremta vàlida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Comproveu si actualment esteu executant una altra eina de gestió del "
+"programari, com ara el Synaptic o l'aptitude. Només es permet utilitzar una "
+"eina a la vegada per fer canvis."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Este s'un problema seriós. Torneu a intentar-ho més tard. Si el problema "
+"reapareix, informeu-ne els desenvolupadors."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Comproveu l'ortografia del nom del paquet i que el dipòsit apropiat estiga "
+"activat."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "No cal fer cap actualització."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "No cal fer cap instal·lació."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "No cal fer cap supressió."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Heu sol·licitat la supressió d'un paquet que és una part essencial del "
+"sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"S'ha perdut la connexió amb el dimoni. Segurament el dimoni en segon pla ha "
+"tingut una fallada."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Ha fallat la instal·lació o supressió d'un paquet de programari."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La funció que s'ha sol·licitat no està implementada."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Pareix que s'ha produït un error de programació a l'Aptdaemon, l'aplicació "
+"que vos permet insta·lar i suprimir programari i realitzar altres tasques "
+"relacionades amb la gestió de paquets."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Pot ser que este error siga degut al fet que calguen paquets de programari "
+"addicionals que no estan disponibles o no es poden instal·lar. També podria "
+"ser un conflicte entre paquets de programari que no es poden instal·lar "
+"simultàniament."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Esta acció requereix la instal·lació de fonts no identificades."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Pot ser que la instal·lació haja fallat degut a un error en el paquet de "
+"programari corresponent o que fou cancel·lada d'una manera incorrecta. "
+"Haureu de reparar-ho abans de poder instal·lar o eliminar qualsevol "
+"programari."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Copieu el fitxer a l'ordinador local i comproveu els permisos del fitxer."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"No es permet la instal·lació d'un paquet que no compleix els estàndards de "
+"qualitat. Això podria causar problemes seriosos a l'ordinador. Contacteu amb "
+"la persona o organització que vos ha proporcionat este fitxer de paquet i "
+"incloeu el detalls de sota."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clau de llicència que s'ha baixat i que és necessària per executar esta "
+"aplicació no és vàlida o no s'ha pogut instal·lar correctament.\n"
+"Vegeu els detalls per obtindre més informació."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Ja s'han instal·lat totes les actualitzacions disponibles."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"La clau de llicència que és necessaria per executar esta aplicació no s'ha "
+"pogut baixar. Comproveu la connexió de xarxa."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "No teniu permís per realitzar esta acció."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Ha fallat la baixada de fitxers de paquets"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Ha fallat la baixada de la informació del dipòsit"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "No es poden resoldre les dependències dels paquets"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "El sistema de paquets està malmés"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "No s'ha instal·lat la clau"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "No s'ha suprimit la clau"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Ha fallat el blocatge del gestor de paquets"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Ha fallat la càrrega de la llista de paquets"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "El paquet no existeix"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "El paquet ja està actualitzat"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "El paquet ja està instal·lat"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "El paquet no està instal·lat"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Ha fallat la supressió d'un paquet essencial del sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "No es pot fer un seguiment o control de la tasca"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Ha fallat l'operació amb el paquet"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requereix la instal·lació de paquets que no són de confiança"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "No s'ha completat la instal·lació anterior"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "El paquet és de mala qualitat"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "No s'ha pogut obrir el fitxer de paquet"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "La funció no està implementada"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Ha fallat la baixada de la clau de llicència"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Ha fallat la instal·lació de la clau de llicència"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "El sistema ja està actualitzat"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "S'ha produit un error que no es pot gestionar"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "S'està esperant que comence el servei"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "En espera"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "S'està esperant el suport necessari"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "S'està esperant que altres gestors de programari isquen"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "S'està esperant el diàleg del fitxer de configuració."
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "S'està executant la tasca"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "S'està baixant"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "S'estan consultant les fonts de programari"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "S'està netejant"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "S'ha finalitzat"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "S'està cancel·lant"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "S'està carregant la llista de programari"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "S'està instal·lant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "S'està configurant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "S'està suprimint %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "S'està suprimint completament el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "S'està anotant la desaparició del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "S'està executant l'activador de postinstal·lació %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "S'està actualitzant %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "S'està desempaquetant el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "S'està preparant la instal·lació del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "S'està preparant la configuració del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "S'està preparant la supressió del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "S'està preparant la supressió completa del paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "S'ha instaŀlat el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "S'ha suprimit completament el paquet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "S'ha suprimit el paquet %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fet"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Ha fallat l'autenticació"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "S'està recollint"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactiu"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "La xarxa no es troba disponible"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "S'està processant %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "S'han baixat %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "S'han baixat %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalls"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fitxer"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "S'han baixat %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Baixat"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Cal el CD o DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "Inseriu el CD/DVD a la unitat «%s» per instal·lar-ne els paquets."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinua"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instal·la"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstal·la"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Suprimeix"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Neteja"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Actualitza"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Torna a una versió anterior"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Omet l'actualització"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Comproveu la llista de canvis de més avall."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Cal instal·lar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Cal tornar a instal·lar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Cal suprimir programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "S'ha de netejar el programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Cal actualitzar programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Cal tornar a una versió anterior de programari addicional"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "S'ometran les actualitzacions"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Calen canvis addicionals"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Es baixaran %sB en total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "S'alliberaran %sB d'espai de disc."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "S'utilitzaran %sB més d'espai de disc."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Voleu reemplaçar els vostres canvis a «%s» amb l'última versió del fitxer de "
+"configuració?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Si no sabeu com és que el fitxer ja es troba allí, és més segur que el "
+"reemplaceu."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Canvis"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Manté"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Reemplaça"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalls"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "S'està esperant al %s per eixir"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "S'està baixant %(files)s"
+msgstr[1] "S'estan baixant %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "dipòsit local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "S'està baixant de %s"
+msgstr[1] "S'estan baixant de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estructura del dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descripció del dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Signatura de la descripció del dipòsit %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquets disponibles al dipòsit %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Fonts disponibles al dipòsit %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduccions disponibles al dipòsit %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduccions en %s (%s) del dipòsit %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduccions en %s del dipòsit %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduccions (%s) del dipòsit %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "El paquet %s no està disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "El paquet %s no està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versió %s de %s no està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "El paquet %s ja està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versió %s de %s no està disponible."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "L'URL del servidor de claus no és vàlid: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "El protocol del servidor no és vàlid: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "L'identificador de la clau no és vàlid: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"No s'ha pogut baixar i instal·lar la clau %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "No s'ha pogut instal·lar el fitxer clau %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "No s'ha pogut suprimir la clau amb empremta dactilar %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "No es pot suprimir el paquet %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versió %s de %s no està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "L'antiga versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versió %s de %s no està disponible"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Heu d'especificar la versió anterior a la qual ha de tornar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "L'última versió %s de %s ja està instal·lada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "El paquet %s no està disponible en la versió %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "No es pot suprimir el paquet %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"El paquet no proporciona un camp de control de mida d'instal·lació vàlid. "
+"Vegeu la política de Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clau de llicència és buida"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clau de llicència no pot contindre codi executable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "El camí %s de la clau de llicència no és vàlid"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clau de llicència ja existeix: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"La ubicació de la clau de llicència no és segura perquè conté enllaços "
+"simbòlics. El camí %s correspon a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "El directori on s'ha d'instal·lar la clau encara no existeix: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Ha fallat l'escriptura del fitxer de clau a: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Els paquets següents tenen dependències sense satisfer:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "però és un paquet virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "però no està instal·lat"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "però no s'instal·larà"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "però %s està instal·lat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "però %s s'instal·larà"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "S'ha produït un error en afegir la clau a la llista de proveïdors de "
+#~ "programari de confiança"
diff --git a/po/crh.po b/po/crh.po
new file mode 100644
index 0000000..4265c8b
--- /dev/null
+++ b/po/crh.po
@@ -0,0 +1,1419 @@
+# Crimean Turkish; Crimean Tatar translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-05-05 10:26+0000\n"
+"Last-Translator: Reşat SABIQ <tilde.birlik@gmail.com>\n"
+"Language-Team: Crimean Turkish; Crimean Tatar <crh@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Yazılım qurmaq ya da çetleştirmek içün sahihlenmeñiz kerek."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Muvafaqiyetli"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Vazgeçilgen"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Muvafaqiyetsiz"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Tafsilât"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_İvaz Et"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Tafsilât"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..7066b39
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,1481 @@
+# Czech translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-09-16 06:20+0000\n"
+"Last-Translator: Vojtěch Trefný <vojtech.trefny@gmail.com>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Seznam klíčů důvěryhodných poskytovatelů"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Pro zobrazení důvěryhodných klíčů je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Odstranit stažené soubory s balíky"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Pro vyčištění stažených souborů s balíky je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Změnit nastavení softwaru"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Pro změnu nastavení softwaru je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Změnit zdroj softwaru"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Pro změnu nastavení zdrojů softwaru je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Nainstalovat balík"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Pro instalaci tohoto balíku je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Aktualizovat informace o balících"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Pro obnovení katalogu softwaru je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Nainstalovat nebo odstranit balíky"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Pro instalaci nebo odstranění softwaru je vyžadováno ověření."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instalace softwaru z důvěryhodného zdroje."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Pro instalaci softwaru je vyžadováno ověření."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Přidat nový zdroj a instalovat z něj balíky"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Pro instalaci softwaru z nového zdroje je vyžadováno ověření."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Přidat nový zdroj s placeným softwarem a instalovat z něj balíky"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Pro instalaci placeného softwaru je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Aktualizovat balíky"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Pro instalaci aktualizací je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Zrušit úlohu jiného uživatele"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Pro zrušení oprávnění k úpravě softwaru někým jiným je vyžadováno ověření."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Nastavit proxy pro stahování softwaru"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Pro použití proxy serveru při stahování softwaru je vyžadováno ověření."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "CHYBA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Staženo %sB z %sB při %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Staženo %sB z %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "CHYBA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Nemáte dovoleno provést tuto akci."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Řazení do fronty"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Řeší se závislosti"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Následující NOVÝ balík bude nainstalován (%(count)s):"
+msgstr[1] "Následující NOVÉ balíky budou nainstalovány (%(count)s):"
+msgstr[2] "Následující NOVÉ balíky budou nainstalovány (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Následující balík bude aktualizován (%(count)s):"
+msgstr[1] "Následující balíky budou aktualizovány (%(count)s):"
+msgstr[2] "Následující balíky budou aktualizovány (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Následující balík bude odstraněn (%(count)s):"
+msgstr[1] "Následující balíky budou odstraněny (%(count)s):"
+msgstr[2] "Následující balíky budou odstraněny (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Následující balík bude ponížen (%(count)s):"
+msgstr[1] "Následující balíky budou poníženy (%(count)s):"
+msgstr[2] "Následující balíky budou poníženy (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Následující balík bude přeinstalován (%(count)s):"
+msgstr[1] "Následující balíky budou přeinstalovány (%(count)s):"
+msgstr[2] "Následující balíky budou přeinstalovány (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Následující balík byl ponechán (%(count)s):"
+msgstr[1] "Následující balíky byly ponechány (%(count)s):"
+msgstr[2] "Následující balíky byly ponechány (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Je třeba stáhnout %sB archivů."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Po této operaci bude navíc použito %sB místa na disku."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Po této operaci bude uvolněno %sB místa na disku."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Přejete si pokračovat [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Při práci na více jak jednom balíku vložte názvy balíků do uvozovek:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Obnovit mezipaměť"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Pokusit se vyřešit porušené závislosti. Jedná se o potenciálně nebezpečnou "
+"operaci, jelikož může dojít k odstranění mnoha balíků."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Pokusit se dokončit předchozí neúplnou instalaci"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Nainstalovat určené balíky"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Přeinstalovat určené balíky"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Odstranit určené balíky"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Odstranit určené balíky včetně konfiguračních souborů"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Ponížit verzi určených balíků"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Zastaralé: Použijte prosím --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Přejít na novější vydání bezpečným způsobem"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Přejít na novější vydání, eventuálně provést instalaci a odstranění balíků"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Přidat poskytovatele mezi důvěryhodné"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Přidat ID klíč poskytovatele (požadován také --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Použít daný server pro vyhledání klíčů"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Přidat nový zdroj z dané řádky deb"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specifikujte, prosím, alternativní soubor sources.list.d, do kterého se mají "
+"přidat repozitáře."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Vypsat klíče důvěryhodných poskytovatelů"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Odstranit důvěryhodné klíče dle zadaného otisku"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Překonfigurovat instalované balíky. Volitelně může být určena minimální "
+"priorita otázek"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Minimální debconf priorita otázek, které mají být zobrazeny"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Nepřipojovat se k terminálu apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Povolit balíky z neověřených zdrojů"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Zobrazit dodatečné informace o balících. Momentálně pouze číslo verze"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Čeká se na ověření"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Neukončovat démona z důvodu neaktivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Nenačítat žádné zásuvné moduly"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Zobrazit informace o vnitřních procesech"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Ukončit a nahradit již běžícího démona"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Poslouchat na sběrnici DBus (Vyžadováno pouze pro testování"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Provést operace v zadaném chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Ukládat statistiky profilu do zadaného souboru"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Neprovádět žádné změny v systému (určeno jen pro vývojáře)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Soubor nainstalován"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Balíky nainstalovány"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Přidán klíč ze souboru"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Mezipaměť aktualizována"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Hledání dokončeno"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Odstraněn důvěryhodný klíč"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Balíky odstraněny"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Balíky aktualizovány"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Systém povýšen"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Změny provedeny"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Neúplná instalace opravena"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Porušené závislosti opraveny"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Přidán zdroj softwaru"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Součást distribuce povolena"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Odstraněné soubory stažených balíků"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Překonfigurované instalované balíky"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Úspěšné"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Zrušeno"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Selhalo"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instaluje se soubor"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalují se balíky"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Přidává se klíč ze souboru"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Aktualizuje se mezipaměť"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Odstraňuje se důvěryhodný klíč"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Odstraňují se balíky"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Aktualizují se balíky"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Povyšuje se systém"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Provádějí se změny"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Opravuje se neúplná instalace"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Opravuje se instalovaný software"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Přidává se zdroj softwaru"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Povoluje se součást distribuce"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Odstraňování stažených balíků"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Překonfigurace instalovaných balíků"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Vyhledávání"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalace balíku selhala"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalace softwaru selhala"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Obnovování seznamu softwaru selhalo"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Odstranění poskytovatele ze seznamu důvěryhodných selhalo"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Odstranění softwaru selhalo"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Aktualizace softwaru selhala"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Povýšení systému selhalo"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Uplatnění změn softwaru selhalo"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Oprava neúplné instalace selhala"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Oprava porušených závislostí selhala"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Přidání zdroje softwaru selhalo"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Povolení součásti distribuce selhalo"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Odstraňování stažených balíků selhalo"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Vyhledávání selhalo"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Přidávání licenčního klíče"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Zkontrolujte svoje internetové připojení"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Zkontrolujte, zda nepoužíváte zdroje třetích stran. Pokud ano, zakažte je, "
+"protože jsou často zdrojem problémů.\n"
+"Dále spusťte v terminálu následující příkaz: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Vybraný soubor možná neobsahuje klíč GPG nebo může být poškozen."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Vybraný klíč nelze odstranit. Zkontrolujte, zda byl otisk prstu správně "
+"proveden."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Zkontrolujte, zda není spuštěn jiný nástroj pro správu softwaru, např. "
+"Synaptic nebo aptitude. Najednou smí běžet pouze jeden nástroj."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Toto je závažný problém. Zkuste akci opakovat později. Pokud se problém "
+"vyskytne znovu, oznamte to vývojářům."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Zkontrolujte pravopis v názvu balíku a zda je povolen příslušný zdroj."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Není nutná žádná aktualizace."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Není nutná žádná instalace."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Není nutné žádné odstraňování."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Požadujete odstranění balíku, který je nezbytnou součástí systému."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Spojení s démonem bylo ztraceno. Tento démon běžící na pozadí pravděpodobně "
+"spadl."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Instalace nebo odstraňování balíku selhalo."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Požadovaná funkce není podporována."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Zdá se, že při tvorbě aptdaemon - softwaru, který umožňuje instalaci/"
+"odstraňování softwaru a další úkoly související se správou softwaru - došlo "
+"k chybě."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Tato chyba mohla být způsobena požadovanými dodatečnými balíky, které chybí "
+"nebo nejsou instalovatelné. Dále může být konflikt mezi balíky, u kterých "
+"není povolena instalace ve stejnou dobu."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Tato akce vyžaduje instalaci balíků z neověřených zdrojů."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Instalace mohla selhat kvůli chybě v příslušném balíku nebo byla zrušena "
+"nevhodným způsobem. Tento problém musíte opravit před instalací nebo "
+"odstraněním dalšího softwaru."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Prosím, zkopírujte si soubor do počítače a zkontrolujte oprávnění k souboru."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Instalace balíku porušujícího standardy kvality není povolena. Mohla by na "
+"vašem počítači způsobit vážné problémy. Kontaktujte prosím osobu nebo "
+"organizaci, která tento balík poskytla a přiložte níže uvedené detaily."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Stažený licenční klíč, který je nutný pro běh tohoto softwaru, není správný "
+"nebo nemůže být správně nainstalován.\n"
+"Pro více informací vizte detaily."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Jsou nainstalovány všechny dostupné aktualizace."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Licenční klíč, umožňující používat tento software, nemohl být stažen. Prosím "
+"zkontrolujte svoje internetové připojení."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Nemáte dovoleno provést tuto akci."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Stahování balíků selhalo"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Stahování informací o zdroji selhalo"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Závislosti balíku nemohly být vyřešeny"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Balíčkovací systém je porušen"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Klíč nebyl nainstalován"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Klíč nebyl odstraněn"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Zamknutí správce balíků selhalo"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Nahrávání seznamu balíků selhalo"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Balík neexistuje"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Balík je aktuální."
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Balík je nainstalován"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Balík není nainstalován"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Odstranění nezbytného systémového balíku selhalo"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Úloha nemůže být sledována nebo kontrolována"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operace s balíkem selhala"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Je požadována instalace neprověřených balíků"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Předchozí instalace nebyla dokončena"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Balík má špatnou kvalitu"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Soubor balíku nelze otevřít"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nepodporovaná funkce"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Selhalo stažení licenčního klíče"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Selhala instalace licenčního klíče"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Systém je plně aktualizovaný"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Nastala neošetřená chyba"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Čeká se na spuštění služby"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Čeká se"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Čeká se na požadované médium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Čeká se na ukončení jiných správců softwaru"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Čeká se na výzvu konfiguračního souboru"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Běžící úloha"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Stahuje se"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Dotazování zdrojů softwaru"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Probíhá čištění"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Dokončeno"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Ruší se"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Nahrává se seznam software"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instaluje se %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Nastavuje se %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Odstraňuje se %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Kompletní odstraňování %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Označení zmizení %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Spouští se poinstalační spouštěč %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Probíhá povýšení %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Rozbalování %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Příprava instalace %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Příprava konfigurace %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Příprava odstranění %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Příprava úplného odstranění %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s je nainstalován"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s je kompletně odstraněn"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s je odstraněn"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Hotovo"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Ověření selhalo"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Získává se"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Nečinný"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Síť není dostupná"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Zpracovává se %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Staženo %sB z %sB při %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Staženo %sB z %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Soubor"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Staženo %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Staženo"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Je požadováno CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"K instalaci balíků vložte prosím výše uvedené CD/DVD do mechaniky '%s'."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "P_okračovat"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Nainstalovat"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Přeinstalovat"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Odstranit"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Vyčistit"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Přejít na vyšší verzi"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Přejít na nižší verzi"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Vynechat povýšení"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Podívejte se prosím do seznam změn níže."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Dodatečný software musí být nainstalován"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Dodatečný software musí být přeinstalován"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Dodatečný software musí být odstraněn"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Dodatečný software musí být vyčištěn"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Dodatečný software musí přejít na vyšší verzi"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Dodatečný software musí přejít na nižší verzi"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Aktualizace budou vynechány"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Jsou požadovány dodatečné změny"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Celkem bude staženo %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Bude uvolněno %sB místa na disku."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Bude použito navíc %sB místa na disku."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Chcete nahradit vaše změny v '%s' novější verzí konfiguračního souboru?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Pokud nevíte, proč je již tento soubor zde, je obvykle bezpečné nahradit jej."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Změny"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Ponechat"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Nahradit"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "Po_drobnosti"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Čekání až bude %s ukončen"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Stahuje se soubor %(files)s"
+msgstr[1] "Stahují se soubory %(files)s"
+msgstr[2] "Stahují se soubory %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokální repozitář"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Stahování z %s"
+msgstr[1] "Stahování z %s"
+msgstr[2] "Stahování z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktura %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Popis %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Popis podpisu %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Dostupné balíky z %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Dostupné zdroje z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Dostupné překlady z %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Překlady pro %s (%s) z %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Překlady pro %s z %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Překlady (%s) z %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Balík %s není dostupný"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Balík %s není nainstalovaný"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Verze %s z %s není nainstalována"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Balík %s je již nainstalován"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Verze %s z %s není dostupná"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Adresa serveru s klíči je neplatná: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Neplatný protokol serveru: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Neplatné ID klíče: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nepodařilo se stáhnout a instalovat klíč %s z %s\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Soubor klíče %s nelze nainstalovat: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Klíč z otisku %s se nepodařilo odstranit: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Balík %s nelze odstranit."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Verze %s z %s není naistalována"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Stejná verze %s z %s je již nainstalována"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Verze %s z %s je již nainstalována"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Verze %s z %s není dostupná"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Musíte zadat verzi downgrade %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Novější verze %s z %s je již nainstalována"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Balíček %s není dostupný pro vydání %s"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Balík %s nelze odstranit"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Balík neposkytuje validní kontrolní pole \"Instalovaná velikost\". Pro více "
+"informací v Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licenční klíč není nastaven"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licenční klíč nesmí obsahovat spustitelný kód."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Cesta k licenčnímu klíči %s není platná."
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licenční klíč '%s' už existuje."
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Umístění licenčního klíče je nebezpečné, protože obsahuje symbolické odkazy. "
+"Cesta '%s' ukazuje na '%s'"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Adresář '%s' pro instalaci klíče ještě neexistuje."
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Selhalo uložení klíče do: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Následující balíky mají nesplněné závislosti:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ale je to virtuální balík"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ale není nainstalován"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ale nebude se instalovat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ale %s je nainstalován"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ale %s se bude instalovat"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Přidání klíče do seznamu důvěryhodných poskytovatelů softwaru selhalo"
diff --git a/po/cy.po b/po/cy.po
new file mode 100644
index 0000000..87d9b0f
--- /dev/null
+++ b/po/cy.po
@@ -0,0 +1,1420 @@
+# Welsh translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2010-12-16 07:15+0000\n"
+"Last-Translator: David Jones <Unknown>\n"
+"Language-Team: Welsh <cy@li.org>\n"
+"Language: cy\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
+"2 : 3;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Newid cronfa meddalwedd"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Gosod ffeil pecyn"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Gosod neu dynnu pecynnau"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Ychwanegu cronfa newydd a gosod pecynnau ohoni"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Ychwanegu cronfa newydd o feddalwedd wedi prynu a gosod pecynnau ohoni"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Canslo tasg defnyddiwr arall"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "GWALL"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Llwythwyd %sB o %sB"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Llwythwyd %sB o %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "GWALL:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Wedi Methu"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Gosod ffeil"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Llwythwyd %sB o %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..5e99fcc
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,1487 @@
+# Danish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-27 16:08+0000\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <da@li.org>\n"
+"Language: da\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lav en liste med nøgler fra betroede udbydere"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "For at se listen af betroede nøgler, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Fjern hentede pakkefiler"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Du skal godkende for at rense hentede pakkefiler."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ændr programopsætning"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Du skal godkende for at ændre programindstillinger."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Skift softwarearkiv"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"For at ændre indstillinger for softwarearkiver, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installér pakkefil"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "For at installere denne pakke, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Opdatér pakkeinformation"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "For at opdatere softwarekataloget, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installér eller fjern pakker"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "For at installere eller fjerne software, skal du først godkende."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Installér software fra et hvidlistet, højt pålideligt arkiv."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Der kræves godkendelse for at installere software."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Tilføj et nyt softwarearkiv og installér pakker fra det"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Du skal godkende for at kunne installere programmer fra en ny kilde."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Tilføj et nyt softwarearkiv med købte programmer og installér pakker fra det"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Du skal godkende for at kunne installere købte programmer."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Opgradér pakker"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "For at installere opdateret software, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Afbryd en anden brugers opgave"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "For at annullere en andens softwareændringer, skal du først godkende."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Sæt en proxy til indhentning af software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"For at bruge en proxyserver til at hente software, skal du først godkende."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FEJL"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Har hentet %sB af %sB med %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Har hentet %sB af %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FEJL:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Du har ikke lov til at udføre denne handling."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Sætter i kø"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Løser afhængigheder"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Følgende NYE pakke vil blive installeret (%(count)s):"
+msgstr[1] "Følgende NYE pakker vil blive installeret (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Følgende pakke vil blive opgraderet (%(count)s):"
+msgstr[1] "Følgende pakker vil blive opgraderet (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Følgende pakke vil blive FJERNET (%(count)s):"
+msgstr[1] "Følgende pakker vil blive FJERNET (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Følgende pakke vil blive NEDGRADERET (%(count)s):"
+msgstr[1] "Følgende pakker vil blive NEDGRADERET (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Følgende pakke vil blive geninstalleret (%(count)s):"
+msgstr[1] "Følgende pakker vil blive geninstalleret (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Følgende pakke blev holdt tilbage (%(count)s):"
+msgstr[1] "Følgende pakker blev holdt tilbage (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Skal hente %sB arkiver."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Efter denne operation vil der blive brugt yderligere %sB diskplads."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Efter denne operation vil der blive frigjort yderligere %sB diskplads."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Ønsker du at forsætte [J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Anbring pakkenavnene i citationstegn for at behandle mere end en pakke:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Genopfrisk cachen"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Forsøg at rette beskadigede afhængigheder. Dette kan være en farlig "
+"operation, da den kan forsøge at fjerne mange pakker."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Prøv at færdiggøre en tidligere ufuldført installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installér de givne pakker"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Geninstallér de givne pakker"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Fjern de givne pakker"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Fjern de givne pakker inklusive konfigurationsfiler"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Nedgrader de angivne pakker"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Forældet: Brug --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Opgrader systemet på sikker vis"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Opgrader systemet, muligvis ved at installere og fjerne pakker"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Hav tillid til udbyderen"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Tilføj udbyderes nøgle-id (kræver også --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Brug den angivne nøgleserver til at slå nøgler op"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Tilføj nyt arkiv fra den givne deb-linje"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "Angiv en alternativ sources.list.d-fil hvor arkiver skal tilføjes."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Vis betroede udbydernøgler"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Fjern den betroede nøgle for det givne fingeraftryk"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Omkonfigurer installerede pakker. En minimal prioritet af spørgsmål kan "
+"angives efter behag."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Den mindste debconf-prioritet, der vises spørgsmål for"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Kobl ikke til apt-terminalen"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Tillad pakker fra ikke-godkendte kilder"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Vis yderligere information om pakkerne. I øjeblikket kun versionsnummeret"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Venter på godkendelse"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Luk ikke dæmonen ned på grund af inaktivitet"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Indlæs ingen udvidelsesmoduler"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Vis intern arbejdsinformation"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Afslut og erstat en allerede kørende dæmon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Lyt til DBus-sessionsbussen (kun påkrævet til test)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Udfør handlinger i den givne chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Gem profilstatistik i den angivne fil"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Udfør ingen ændringer på systemet (kun til nytte for udviklere)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installeret fil"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installerede pakker"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Nøgle tilføjet fra fil"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Opdaterede mellemlager"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Søgning fuldført"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Fjernede betroet nøgle"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Fjernede pakker"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Opdaterede pakker"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Upgraderede systemet"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Anvendte ændringer"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Reparerede ufuldstændig installation"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Reparerede beskadigede afhængigheder"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Tilføjede softwarekilde"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Aktiverede komponent i distributionen"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Fjernede hentede pakkefiler"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Omkonfigurerede installerede pakker"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Fuldført"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Annulleret"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Mislykket"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installerer fil"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installerer pakker"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Tilføjer nøgle fra fil"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Opdaterer mellemlager"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Fjerner betroet nøgle"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Fjerner pakker"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Opdaterer pakker"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Opgraderer systemet"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Anvender ændringer"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparerer ufuldstændig installation"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparerer installeret software"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Tilføjer softwarekilde"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Aktiverer komponent i distributionen"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Fjerner hentede pakkefiler"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Omkonfigurerer installerede pakker"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Søger"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installation af pakkefilen mislykkedes"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Softwareinstallationen mislykkedes"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Det lykkedes ikke at tilføje nøglen i listen over betroede software-"
+"leverandører"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Opdatering af softwarelisten mislykkedes"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Fjernelse af leverandøren fra listen af betroede leverandører mislykkedes"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Fjernelse af software mislykkedes"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Opdatering af software mislykkedes"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Opgradering af systemet mislykkedes"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Udførelse af ændringer til software mislykkedes"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Reparation af ufuldstændig installation mislykkedes"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Reparation af beskadigede afhængigheder mislykkedes"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Tilføjelse af softwarekilde mislykkedes"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Aktivering af distributionskomponent mislykkedes"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Fejl ved fjernelse af hentede pakkefiler"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Søgning mislykkedes"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Tilføjer licensnøgle"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kontrollér din internetforbindelse"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontrollér om du anvender tredjepartsarkiver. Deaktiver dem hvis de "
+"benyttes, da de er en almindeligt kendt kilde til problemer.\n"
+"Kør derudover denne kommando i en terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Den valgte fil er måske ikke en GPG-nøglefil, eller den kan være beskadiget."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Den valgte nøgle kunne ikke fjernes. Kontroller at du har givet et korrekt "
+"fingeraftryk."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kontroller om der i øjeblikket kører et andet værktøj til håndtering af "
+"software, f.eks. Synaptic eller aptitude. Ændringer kan kun laves af et "
+"værktøj ad gangen."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Dette er et alvorligt problem. Prøv igen senere. Hvis problemet opstår igen, "
+"så rapportér det venligst til udviklerne."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Kontroller stavningen af pakkenavnet, og at det korrekte pakkearkiv er "
+"aktiveret."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Opdatering er ikke nødvendig."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Installation er ikke nødvendig"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Fjernelse er ikke nødvendig."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Du anmodede om at fjerne en pakke som er en essentiel del af dit system."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Forbindelsen til dæmonen blev afbrudt. Det er sandsynligt at "
+"baggrundsdæmonen er gået ned."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Installation eller fjernelse af en softwarepakke mislykkedes."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Den forespurgte funktion understøttes ikke."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Der ser ud til at være en programmeringsfejl i aptdaemon, programmet som gør "
+"dig i stand til at installere/fjerne programmer og udføre andre "
+"pakkehåndteringsopgaver."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Denne fejl kan skyldes at yderligere påkrævede softwarepakker mangler eller "
+"ikke kan installeres. Endvidere kan der være en konflikt mellem "
+"softwarepakker som ikke må være installeret samtidigt."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Dette kræver installation af pakker fra kilder som ikke er godkendte."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Installationen er måske slået fejl på grund af en fejl i den pågældende "
+"softwarepakke, eller fordi den blev afbrudt på en ubehagelig måde. Det vil "
+"være nødvendigt at reparere dette, før du kan installere eller fjerne "
+"yderligere software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Kopier filen til din lokale computer og kontroller rettighederne."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Installationen af en pakke som overtræder kvalitetskravene er ikke tilladt. "
+"Dette kan medføre alvorlige problemer på din computer. Kontakt personen "
+"eller organisationen, du hentede denne pakkefil og inkluder detaljerne "
+"nedenfor."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Den hentede licensnøgle, som kræves for at kunne køre dette program, er ikke "
+"gyldig eller kunne ikke installeres korrekt.\n"
+"Yderligere information kan findes i detaljerne."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Alle tilgængelige opgraderinger er allerede installeret."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Licensnøglen, som lader dig bruge dette program, kunne ikke hentes. "
+"Kontrollér venligst din netværksforbindelse."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Du har ikke de nødvendige rettigheder til at udføre denne handling."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Du angav enten en forkert adgangskode eller annullerede godkendelsen.\n"
+"Der kan i tillæg være tekniske årsager til denne fejl, hvis du ikke har set "
+"et vindue med adgangskode: dit skrivebordsmiljø tilbyder ikke en "
+"sessionsagent for PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Kunne ikke hente pakkefiler"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Kunne ikke hente information om softwarearkiv"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakkeafhængigheder kan ikke afklares"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakkesystemet er beskadiget"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Nøglen blev ikke installeret"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Nøglen blev ikke fjernet"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Kunne ikke låse pakkehåndteringen"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Kunne ikke indlæse pakkelisten"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakken findes ikke"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakken er allerede fuldt opdateret"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakken er allerede installeret"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakken er ikke installeret"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Kunne ikke fjerne essentiel systempakke"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Opgaven kan ikke overvåges eller kontrolleres"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakkehandling mislykkedes"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Kræver installation af ikke-betroede pakker"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Tidligere installation blev ikke fuldført"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Pakken er af dårlig kvalitet"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pakkefil kunne ikke åbnes"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Funktion understøttes ikke"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Kunne ikke hente licensnøglen"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Kunne ikke installere licensnøglen"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Systemet er allerede opdateret"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Du kunne ikke godkendes"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Du har ikke lov til at udføre denne handling"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Der opstod en fejl som ikke kunne håndteres"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Venter på at tjeneste starter"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Venter"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Venter på krævet medie"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Venter på at andre softwarehåndteringsprogrammer afslutter"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Venter på prompt for konfigurationsfil"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Kører opgave"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Henter"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Forespørger i softwarekilder"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Rydder op"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Fuldført"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Annullerer"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Henter softwareliste"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installerer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Sætter %s op"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Fjerner %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Fjerner %s helt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Bemærker forsvinding af %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Afvikler efterinstallationskode %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Opgraderer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Pakker %s ud"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Forbereder installation af %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Forbereder opsætning af %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Forbereder fjernelse af %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Forbereder fuldstændig fjernelse af %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Installerede %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Fjernede %s helt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Fjernede %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Færdig"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentifikation mislykkedes"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Henter"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "ledig"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Netværk ikke tilgængeligt"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Behandler %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Har hentet %sB af %sB med %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Har hentet %sB af %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detaljer"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fil"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Hentede %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Hentede"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Cd'en eller dvd'en \"%s\" skal bruges"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Indsæt venligst den ovenstående cd/dvd i drevet \"%s\" for at installere "
+"softwarepakker fra den."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "F_ortsæt"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installér"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Geninstallér"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Fjern"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Udrens"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Opgradér"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Nedgradér"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Spring opgradering over"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Se venligst listen af ændringer nedenfor."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Der skal installeres yderligere software"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Yderligere software skal geninstalleres"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Der skal fjernes yderligere software"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Der skal udrenses yderligere software"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Der skal opgraderes yderligere software"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Der skal nedgraderes yderligere software"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Opdateringer vil blive sprunget over"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Yderligere ændringer er påkrævet"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "I alt %sB vil blive hentet."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB diskplads vil blive frigjort."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB yderligere diskplads vil blive brugt."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Erstat dine ændringer i \"%s\" med en nyere udgave af konfigurationsfilen?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Hvis du ikke ved hvorfor filen allerede findes, er det normalt sikkert at "
+"erstatte den."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Ændringer"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Behold"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "E_rstat"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detailer"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Venter på at %s afslutter"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Henter %(files)s"
+msgstr[1] "Henter %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokalt arkiv"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Henter fra %s"
+msgstr[1] "Henter fra %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktur af %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Beskrivelse af %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Beskrivelsessignatur for %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Tilgængelige pakker fra %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Tilgængelige kilder fra %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Tilgængelige oversættelser fra %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Oversættelser for %s (%s) fra %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Oversættelser for %s fra %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Oversættelser (%s) fra %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakke %s er ikke tilgængelig"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakke %s er ikke installeret"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versionen %s af %s er ikke installeret"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakken %s er allerede installeret"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Version %s af %s er ikke tilgængelig"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL'en til nøgleserver er ugyldig: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Ugyldig protokol for serveren: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Ugyldig nøgle-ID: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Fejl under hentning og installering af nøglen %s fra %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Nøglefil %s kunne ikke installeres: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Nøgle med fingeraftryk %s kunne ikke fjernes: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakken %s kan ikke fjernes."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Version %s af %s er ikke installeret"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Den tidligere version %s af %s er allerede installeret"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Version %s af %s er allerede installeret"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Version %s af %s er ikke tilgængelig"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Du skal angive en version at nedgradere %s til"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Den seneste version %s af %s er allerede installeret"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakken %s er ikke tilgængelig i udgaven %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakken %s kan ikke fjernes"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Pakkens kontrolfelt Installed-Size er ugyldigt. Se Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licensnøglen er tom"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Det er ikke tilladt for licensnøglen at indeholde programkode."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Licensnøglestien %s er ugyldig"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licensnøglen findes allerede: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Placeringen af licensnøglen er usikker, da den indeholder symbolske lænker. "
+"Stien %s afbildes til %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Kataloget, hvor nøglen skal installeres, findes endnu ikke: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Kunne ikke skrive nøglefil til: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Følgende pakker har uopfyldte afhængigheder:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "men det er en virtuel pakke"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "men den er ikke installeret"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "men den vil ikke blive installeret"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "men %s er installeret"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "men %s vil blive installeret"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Tilføjelse af nøglen til listen af betroede softwareleverandører "
+#~ "mislykkedes"
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..d4fc253
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,1541 @@
+# German translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-30 21:13+0000\n"
+"Last-Translator: Hendrik Knackstedt <Unknown>\n"
+"Language-Team: German <de@li.org>\n"
+"Language: de\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Schlüssel vertrauenswürdiger Anbieter anzeigen"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um die Schlüssel der vertrauenswürdigen "
+"Anbieter anzuzeigen."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Heruntergeladene Paketdateien entfernen"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um heruntergeladene Paketdateien zu "
+"entfernen."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Software-Konfiguration ändern"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Sie müssen Ihr Passwort eingeben, um Software-Einstellungen zu ändern."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Software-Paketquelle ändern"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um Einstellungen der Software-Paketquellen "
+"zu ändern."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Paketdatei installieren"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Sie müssen Ihr Passwort eingeben, um dieses Paket zu installieren."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Paketinformationen aktualisieren"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um die Paketinformationen zu aktualisieren."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Pakete installieren oder entfernen"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um Software zu installieren oder zu "
+"entfernen."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Anwendungen aus einer sehr vertrauenswürdigen Quelle installieren."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Um Anwendungen zu installieren, müssen Sie sich legitimieren."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+"Eine neue Software-Paketquelle hinzufügen und Pakete daraus installieren"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um Software aus einer neuen Software-"
+"Paketquelle zu installieren."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Eine neue Paketquelle für erworbene Software hinzufügen und Pakete daraus "
+"installieren"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um erworbene Software zu installieren."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Pakete aktualisieren"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Sie müssen Ihr Passwort eingeben, um Aktualisierungen zu installieren."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Prozess eines anderen Benutzers abbrechen"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um Änderungen anderer Benutzer an Software "
+"zu widerrufen."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Einen Proxy-Server für Software-Downloads benutzen"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Sie müssen Ihr Passwort eingeben, um einen Proxy-Server zum Herunterladen "
+"von Software einzurichten."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FEHLER"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%(cur)sB von %(total)sB heruntergeladen mit %(rate)sB/s"
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%(cur)sB von %(total)sB heruntergeladen"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FEHLER:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Sie dürfen diese Aktion nicht ausführen."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Wird in Warteschlange gestellt"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Abhängigkeiten werden aufgelöst"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Das folgende NEUE Paket wird installiert (%(count)s):"
+msgstr[1] "Die folgenden NEUEN Pakete werden installiert (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Das folgende Paket wird aktualisiert (%(count)s):"
+msgstr[1] "Die folgenden Pakete werden aktualisiert (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Das folgende Paket wird ENTFERNT (%(count)s):"
+msgstr[1] "Die folgenden Pakete werden ENTFERNT (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+"Das folgende Paket wird DURCH EINE ÄLTERE VERSION ERSETZT (%(count)s):"
+msgstr[1] ""
+"Die folgenden Pakete werden DURCH EINE ÄLTERE VERSION ERSETZT (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Das folgende Paket wird neu installiert (%(count)s):"
+msgstr[1] "Die folgenden Pakete werden neu installiert (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Das folgende Paket wurde zurückgehalten (%(count)s):"
+msgstr[1] "Die folgenden Pakete wurden zurückgehalten (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Es müssen %sB an Paketen heruntergeladen werden."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Nach Abschluss dieses Vorgangs werden %sB Festplattenspeicher zusätzlich "
+"belegt sein."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Nach Abschluss dieses Vorgangs werden %sB Festplattenspeicher zusätzlich "
+"frei sein."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Möchten Sie fortfahren [J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Verwenden Sie Anführungszeichen, um den Befehl auf mehrere Pakete "
+"anzuwenden:\n"
+"aptdcon --install \"Paket1 Paket2\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Die Paketinformationen neu laden"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Nicht erfüllte Abhängigkeiten nach Möglichkeit reparieren. Dies ist "
+"potentiell gefährlich, weil »aptdcon« evtl. versuchen wird, viele Pakete zu "
+"entfernen."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Abgebrochene Installation nach Möglichkeit fortsetzen"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Die angegebenen Pakete installieren"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Die angegebenen Pakete erneut installieren"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Die angegebenen Pakete entfernen"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Die angegebenen Pakete mit den dazugehörigen Konfigurationsdateien entfernen"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Eine ältere Version der angegebenen Pakete installieren"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Veraltet – bitte verwenden Sie: --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Das System auf eine sichere Weise aktualisieren"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Das System aktualisieren – dabei werden eventuell Pakete automatisch "
+"installiert und entfernt"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Den Software-Anbieter als vertrauenswürdig einstufen"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Den Schlüssel des Software-Anbieters hinzufügen (erfordert auch die Angabe "
+"von --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+"Den angegebenen Schlüssel-Server bei der Suche nach Schlüsseln verwenden"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+"Die Software-Paketquelle aus der angegebenen APT-Zeile (deb-line) hinzufügen"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Eine alternative sources.list.d-Datei festlegen, zu welcher Software-"
+"Paketquellen hinzugefügt werden sollen."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Schlüssel vertrauenswürdiger Software-Anbieter zeigen"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+"Den vertrauenswürdigen Schlüssel mit dem angegebenen Fingerabdruck entfernen"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Installierte Pakete neu konfigurieren; die minimale Priorität der Fragen "
+"kann optional angegeben werden"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+"Die minimale debconf-Priorität der Fragen, welche angezeigt werden sollen"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Keine Ausgabe an das APT-Terminal senden"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Pakete aus nicht vertrauenswürdigen Quellen erlauben"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Zusätzliche Informationen zu Paketen anzeigen; aktuell ist das nur die "
+"Versionsnummer"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Es wird auf die Legitimation gewartet"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Den Dienst nicht aufgrund von Inaktivität beenden"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Keine Erweiterungen laden"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Interne Verarbeitungsinformationen anzeigen"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Einen bereits laufenden Dienst beenden und ersetzen"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Verbindung vom Sitzungs-D-Bus annehmen (Nur zum Testen nützlich)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Vorgänge in der angegebenen chroot-Umgebung ausführen"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Profilstatistiken in der angegebenen Datei speichern"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Keine Änderungen am System vornehmen (Nur für Entwickler nützlich)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Datei installiert"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pakete installiert"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Schlüssel aus Datei hinzugefügt"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Zwischenspeicher aktualisiert"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Suche abgeschlossen"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Vertrauenswürdigen Schlüssel entfernt"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pakete entfernt"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pakete aktualisiert"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "System aktualisiert"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Änderungen angewendet"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Unvollständige Installation repariert"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Nicht erfüllte Abhängigkeiten wurden repariert"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Software-Paketquelle hinzugefügt"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Distributionskomponente wurde aktiviert"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Heruntergeladene Paketdateien entfernt"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Installierte Pakete neu konfiguriert"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Erfolgreich"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Abgebrochen"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Gescheitert"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Datei wird installiert"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Pakete werden installiert"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Schlüssel aus Datei wird hinzugefügt"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Zwischenspeicher wird aktualisiert"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Vertrauenswürdiger Schlüssel wird entfernt"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Pakete werden entfernt"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Pakete werden aktualisiert"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "System wird aktualisiert"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Änderungen werden angewendet"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Unvollständige Installation wird repariert"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Installierte Anwendungen werden repariert"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Software-Paketquelle wird hinzugefügt"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Distributionskomponente wird aktiviert"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Heruntergeladene Paketdateien werden entfernt"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Installierte Pakete werden neu konfiguriert"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Suche läuft"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Die Installation der Paketdatei ist gescheitert"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Die Installation der Software ist gescheitert"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Das Hinzufügen des Schlüssels zur Liste vertrauenswürdiger Software-Anbieter "
+"ist gescheitert"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Das Aktualisieren der Software-Liste ist gescheitert"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Das Entfernen des Software-Anbieters aus der Liste der vertrauenswürdigen "
+"ist gescheitert"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Das Entfernen der Software ist gescheitert"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Das Aktualisieren der Software ist gescheitert"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Das Aktualisieren des Systems ist gescheitert"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Das Anwenden der Software-Änderungen ist gescheitert"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Das Reparieren der unvollständigen Installation ist gescheitert"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Das Reparieren nicht erfüllter Abhängigkeiten ist gescheitert"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Das Hinzufügen der Software-Paketquelle ist gescheitert"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Das Aktivieren der Distributionskomponente ist gescheitert"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Das Entfernen von heruntergeladenen Paketdateien ist gescheitert"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Suche fehlgeschlagen"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Lizenzschlüssel wird hinzugefügt"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Überprüfen Sie Ihre Internetverbindung."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Überprüfen Sie, ob Sie Software-Paketquellen von Drittanbietern nutzen. Wenn "
+"dies der Fall ist, so deaktivieren Sie diese, da sie häufig eine "
+"Fehlerquelle sind.\n"
+"Führen Sie außerdem in einem Terminal den folgenden Befehl aus: apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Die ausgewählte Datei ist möglicherweise keine GPG-Schlüsseldatei oder sie "
+"ist beschädigt."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Der angegebene Schlüssel konnte nicht entfernt werden. Überprüfen Sie, ob "
+"Sie den richtigen Fingerabdruck angegeben haben."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Bitte überprüfen Sie, ob gerade die Aktualisierungsverwaltung oder eine "
+"andere Software-Paketverwaltung läuft, z.B. Synaptic oder aptitude. Es kann "
+"immer nur eine Anwendung gleichzeitig Änderungen vornehmen."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Dies ist ein schwerwiegendes Problem. Versuchen Sie es später noch einmal. "
+"Falls das Problem erneut auftritt, melden Sie einen Fehler an die Entwickler."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Bitte überprüfen Sie die exakte Schreibweise des Paketnamens und stellen Sie "
+"sicher, dass die zugehörige Software-Paketquelle aktiviert ist."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Eine Aktualisierung ist unnötig."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Eine Installation ist unnötig."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Eine Deinstallation ist unnötig."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Sie versuchen ein Paket zu entfernen, das einen essenziellen Teil Ihres "
+"Systems darstellt."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Die Verbindung zum Hintergrunddienst wurde unterbrochen. "
+"Höchstwahrscheinlich ist der Dienst abgestürzt."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Das Installieren oder Entfernen eines Software-Pakets ist gescheitert."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Die angefordertete Funktion wird nicht unterstützt."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Anscheinend gibt es einen Programmfehler in aptdaemon, der Anwendung, die "
+"Ihnen das Installieren/Entfernen von Anwendungen und das Ausführen weiterer "
+"Paketverwaltungsaufgaben ermöglicht."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Dieser Fehler könnte durch weitere erforderliche Software-Pakete, die jedoch "
+"fehlen oder nicht installiert werden können, verursacht worden sein. "
+"Außerdem könnte es einen Konflikt zwischen Paketen geben, die nicht zur "
+"selben Zeit installiert sein dürfen."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Dieser Vorgang erfordert die Installation von Paketen aus nicht signierten "
+"Quellen."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Die Installation könnte aufgrund eines Fehlers im betreffenden Software-"
+"Paket gescheitert sein oder weil sie nicht ordnungsgemäß abgebrochen wurde. "
+"Dieser Zustand muss behoben werden, bevor weitere Software installiert oder "
+"entfernt werden kann."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Bitte Datei auf den lokalen Rechner kopieren und Zugriffsrechte überprüfen."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Die Installation eines Pakets, das gegen die Qualitätsstandards verstößt, "
+"ist nicht erlaubt. Dies könnte zu ernsthaften Problemen im System führen. "
+"Bitte kontaktieren Sie den Herausgeber der Paketdatei und melden Sie diesem "
+"die folgenden Angaben."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Der heruntergeladene Lizenzschlüssel, der zum Ausführen dieser Anwendung "
+"benötigt wird, ist ungültig oder konnte nicht installiert werden.\n"
+"Für weitere Informationen werfen Sie einen Blick in die Details."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Alle verfügbaren Aktualisierungen wurden bereits installiert."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Der Lizenzschlüssel, der Ihnen die Verwendung dieser Anwendung ermöglicht, "
+"konnte nicht heruntergeladen werden. Bitte überprüfen Sie Ihre "
+"Internetverbindung."
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr "Sie besitzen für diese Aktion keine ausreichenden Berechtigungen."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Sie haben entweder ein falsches Passwort eingegeben oder die Legitimation "
+"abgebrochen.\n"
+"Darüber hinaus kann es auch eine technische Ursache für diesen Fehler geben, "
+"falls kein Passwort-Dialog angezeigt wurde: Ihre Arbeitsumgebung stellt "
+"keinen PolicyKit-Sitzungsagent bereit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Das Herunterladen der Paketdateien ist gescheitert"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+"Das Herunterladen von Informationen zu Software-Paketquellen ist gescheitert"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Die Paketabhängigkeiten können nicht aufgelöst werden"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Das Paketsystem ist beschädigt"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Der Schlüssel wurde nicht installiert"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Der Schlüssel wurde nicht entfernt"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Das Sperren der Paketverwaltung ist gescheitert"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Das Laden der Paketliste ist gescheitert"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paket existiert nicht"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paket ist bereits auf dem neuesten Stand"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paket ist bereits installiert"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paket ist nicht installiert"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Das Entfernen eines grundlegenden Systempakets ist gescheitert"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Der Vorgang kann nicht überwacht oder gesteuert werden"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Die Paketoperation ist gescheitert"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+"Installation von Paketen erforderlich, denen nicht vertraut werden kann"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Der letzte Installationsvorgang wurde nicht erfolgreich beendet"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Dieses Paket ist von schlechter Qualität"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Paketdatei konnte nicht geöffnet werden"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nicht unterstützte Funktion"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Herunterladen des Lizenzschlüssels fehlgeschlagen"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Installation des Lizenzschlüssels fehlgeschlagen"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "System ist bereits auf dem neuesten Stand"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Sie konnten nicht legitimiert werden"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Es ist Ihnen nicht gestattet diese Aktion durchzuführen"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ein unvorhergesehener Fehler ist aufgetreten"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Auf den Start des Dienstes wird gewartet"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Warten"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Auf das benötigte Medium wird gewartet"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Auf das Beenden anderer Software-Paketverwaltungen wird gewartet"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Auf den Auswahldialog für die Konfigurationsdatei wird gewartet"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Vorgang läuft"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Herunterladen"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Software-Paketquellen werden abgerufen"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Aufräumen"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Beendet"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Es wird abgebrochen"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Software-Liste wird geladen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s wird installiert"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s wird konfiguriert"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s wird entfernt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s wird vollständig entfernt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Verschwinden von %s festgestellt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Nach-Installations-Trigger %s wird aufgerufen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s wird aktualisiert"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s wird entpackt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Installation von %s wird vorbereitet"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Konfiguration von %s wird vorbereitet"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Entfernen von %s wird vorbereitet"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Vollständiges Entfernen von %s wird vorbereitet"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s wurde installiert"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s wurde vollständig entfernt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s wurde entfernt"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fertig"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Legitimierung gescheitert"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Es wird heruntergeladen"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Untätig"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Netzwerkverbindung nicht verfügbar"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s wird verarbeitet"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB von %sB heruntergeladen mit %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB von %sB heruntergeladen"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Datei"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB heruntergeladen"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Heruntergeladen"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD »%s« wird benötigt"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Bitte legen Sie die oben angegebene CD-ROM/DVD in das Laufwerk »%s« ein, um "
+"davon Software-Pakete zu installieren."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Fortfahren"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installieren"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Erneut installieren"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Entfernen"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Vollständig entfernen"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Aktualisieren"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Durch ältere Version ersetzen"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Aktualisierung überspringen"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Bitte beachten Sie unten stehende(s) Änderungsprotokoll(e)."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Zusätzliche Software muss installiert werden"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Zusätzliche Software muss erneut installiert werden"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Zusätzliche Software muss entfernt werden"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Zusätzliche Software muss vollständig entfernt werden"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Zusätzliche Software muss aktualisiert werden"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Zusätzliche Software muss durch eine ältere Version ersetzt werden"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Aktualisierungen werden übersprungen"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Zusätzliche Änderungen sind erforderlich"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB wird insgesamt heruntergeladen werden."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB Speicherplatz wird frei werden."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB mehr Speicherplatz wird belegt werden."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Ihre Änderungen in »%s« mit einer neueren Version der Konfigurationsdatei "
+"ersetzen?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Falls Sie nicht wissen, warum die Datei bereits vorhanden ist, kann die "
+"Datei normalerweise problemlos ersetzt werden."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "Ä_nderungen"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Beibehalten"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Ersetzen"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Warten auf Beenden von %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s wird heruntergeladen"
+msgstr[1] "%(files)s werden heruntergeladen"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "Lokale Paketquelle"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Herunterladen von %s"
+msgstr[1] "Herunterladen von %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktur von %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Beschreibung von %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Beschreibungssignatur von %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Verfügbare Pakete von %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Verfügbare Quelltexte von %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Verfügbare Übersetzungen von %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Übersetzungen für %s (%s) von %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Übersetzungen für %s von %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Übersetzungen (%s) von %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paket %s ist nicht verfügbar"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paket %s ist nicht installiert"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Die Version %s von %s ist nicht installiert"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paket %s ist bereits installiert"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Die Version %s von %s ist nicht verfügbar."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Die Schüsselserver-Adresse ist ungültig: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Ungültiges Protokol des Servers: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Ungültige Schlüsselkennung: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Das Herunterladen und Installieren des Schlüssels %s von %s ist "
+"gescheitert:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Schlüsseldatei %s konnte nicht installiert werden: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Schlüssel mit Fingerabdruck %s konnte nicht entfernt werden: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paket %s kann nicht entfernt werden"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Die Version %s von %s ist nicht installiert"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Die frühere Version %s von %s ist bereits installiert"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Die Version %s von %s ist bereits installiert"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Die Version %s von %s ist nicht verfügbar"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+"Sie müssen eine Version auswählen, auf die %s zurückgesetzt werden soll"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Die neuere Version %s von %s ist bereits installiert"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Das Paket %s ist in der Ubuntu-Version %s nicht verfügbar."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paket %s kann nicht entfernt werden"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Das Paket enthält kein gültiges Kontrollfeld für die Installationsgröße. "
+"Siehe Debian-Richtlinie (Debian Policy) 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Der Lizenzschlüssel ist leer"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Der Lizenzschlüssel darf keinen ausführbaren Quelltext enthalten."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Der Pfad %s zum Lizenzschlüssel ist ungültig"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Der Lizenzschlüssel existiert bereits: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Der Speicherort des Lizenzschlüssels ist unsicher, da er symbolische "
+"Verknüpfungen enthält. Der Pfad %s verweist auf %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+"Das Verzeichnis, in welches der Schlüssel installiert werden soll, existiert "
+"noch nicht: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Schreiben des Lizenzschlüssel nach %s fehlgeschlagen"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "es ist jedoch ein virtuelles Paket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "aber es ist nicht installiert"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "aber es soll nicht installiert werden"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "aber %s ist bereits installiert"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "aber %s soll installiert werden"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Das Hinzufügen des Schlüssels zur Liste der vertrauenswürdigen Software-"
+#~ "Anbieter ist gescheitert"
diff --git a/po/dv.po b/po/dv.po
new file mode 100644
index 0000000..92011bf
--- /dev/null
+++ b/po/dv.po
@@ -0,0 +1,1420 @@
+# Divehi translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:46+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: Divehi <dv@li.org>\n"
+"Language: dv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "އެތެރޭގައި ހިގަމުންދާ މައުލޫމާތުތައް ދައްކާ"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "އަޅާފައިވާ ޕެކޭޖުތައް"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "އަޕްޑޭޓްކުރެވިފައިވާ ކޭޗް"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "ފޮހެލެވިފައިވާ ޓްރަސްޓެޑް ކީ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "ފޮހެލެވިފައިވާ ޕެކޭޖުތައް"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "އަޕްޑޭޓްކުރެވިފައިވާ ޕެކޭޖުތައް"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "ތަރައްގީކުރެވިފައިވާ ނިޒާމު"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "ހުށައެޅިފައިވާ ބަދަލުތައް"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "ފުރިހަމަވެއްޖެ"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "ބާތިލުވެއްޖެ"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ފައިލު އެޅެމުންދަނީ"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "ޕެކޭޖުތައް އެޅެމުންދަނީ"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ފައިލުން ކީއެއް އިތުރުކުރުން"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "ކޭޗް އަޕްޑޭޓްވަނީ"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "ޓްރަސްޓެޑް ކީ ފޮހެވެމުންދަނީ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "ޕެކޭޖުތައް ފޮހެވެމުންދަނީ"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "ޕެކޭޖުތައް އަޕްޑޭޓްވަނީ"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "ނިޒާމު ތަރައްގީވަމުންދަނީ"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "ބަދަލުތައް ހުށައަޅަނީ"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "އިންޓަނެޓް ކަނެކްޝަން ރަގަޅުތޯ ބަލާ"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"މިއީ ސީރިއަސް މައްސަލައެއް. އިރުކޮޅަކުން މަސައްކަތްކުރޭ. މިމައްސަލަ ދެން ދިމާވެއްޖެނަމަ، މި އުފެއްދިފަރާތަށް މި މައްސަލަ ހުށައަޅާ."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "އެއްވެސް އަޕްޑޭޓެއް ބޭނުމެއްނުވޭ"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "އެއްވެސް އިންސްޓޯލެއް ބޭނުމެއްނުވޭ"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "އެއްވެސް ފޮހެލުމެއް ބޭނުމެއްނުވޭ"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "ޕެކޭޖް ފައިލުތައް ޑައުންލޯޑްކުރުން ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "ރިޕޮސިޓޮރީ މައުލޫމާތު ޑައުންލޯޑުކުރުން ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "ޕެކޭޖު ޑިޕެންޑެންސީތައް ހައްލެއްނުކުރެވުނު"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "ޕެކޭޖު ނިޒާމު ހަލާކުވެފައި"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "ކީ އެޅިފަކާއެއް ނެތް"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "ކީއެއް ނުފޮހެވުނު"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "ޕެކޭޖު މެނޭޖާ ތަޅުލުން ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "ޕެކޭޖު ލިސްޓް ލޯޑްކުރުން ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "ޕެކޭޖެއް ނުވޭ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "ޕެކޭޖު ކުރިންވެސް އިންސްޓޯލްކުރެވިފައި"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "ޕެކޭޖް އެޅިފަކާއެއް ނެތް"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "ފެކޭޖު ހިންގުން ފޭލްވެއްޖެ"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "ހިދުމަތް ފެށެންދެން މަޑުކުރަނީ"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "ޓާސްކް ހިނގަމުންދަނީ"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ޑައުންލޯޑް ވަމުންދަނީ"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "ސާފުކުރެވެމުންދަނީ"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "ނިމިއްޖެ"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "ކެންސެލްވަނީ"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "ސޮފްޓްވެއާ ލިސްޓް ލޯޑްވަނީ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s އެޅެމުންދަނީ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s ކޮންފިގާކުރަނީ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s ފޮހެލަނީ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s ތަރައްގީކުރަނ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "ތަފްޞީލްތައް"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_ބަހައްޓާ"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_ބަދަލުކުރޭ (ރިޕްލޭސް)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_ތަފްސީލްތައް"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..d89d010
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,1512 @@
+# Greek translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Fotis Tsamis <ftsamis@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-26 18:45+0000\n"
+"Last-Translator: Filippos Kolyvas <fkolyvas@gmail.com>\n"
+"Language-Team: Greek <team@gnome.gr>\n"
+"Language: el\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Κατάλογος κλειδιών έμπιστων προμηθευτών"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Για να δείτε την λίστα με κλειδιά που εμπιστεύεστε, πρέπει να γίνει "
+"ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Αφαίρεση ληφθέντων αρχείων πακέτων"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Χρειάζεται πιστοποίηση για να εκκαθαρίσετε τα ληφθέντα αρχεία πακέτων."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Αλλαγή παραμετροποίησης λογισμικού"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Χρειάζεται πιστοποίηση για να αλλάξετε τις ρυθμίσεις του λογισμικού."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Αλλάξτε αποθετήριο λογισμικού"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Για να αλλάξετε τις ρυθμίσεις για τα αποθετήρια λογισμικού, πρέπει να γίνει "
+"ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Εγκάτασταση αρχείου πακέτου"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Για να εγκαταστήσετε αυτό το πακέτο, πρέπει να γίνει ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Ενημέρωση πληροφοριών πακέτων"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Για να ενημερωθεί ο κατάλογος λογισμικού, πρέπει να γίνει ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Εγκαταστήστε ή αφαιρέστε πακέτα"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Για να εγκαταστήσετε ή να αφαιρέσετε λογισμικό, πρέπει να γίνει ταυτοποίηση."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Εγκατάσταση λογισμικού από ένα αποθετήριο που βρίσκεται σε λίστα υψηλής "
+"εμπιστοσύνης."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Για την εγκατάσταση λογισμικού, θα πρέπει να γίνει ταυτοποίηση."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Προσθέστε ένα καινούργιο αποθετήριο και εγκαταστήστε πακέτα από αυτό"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Για να εγκαταστήσετε λογισμικό από μια καινούργια πηγή, πρέπει να γίνει "
+"ταυτοποίηση."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Προσθέστε ένα καινούργιο αποθετήριο αγορασμένου λογισμικού και εγκατάσταση "
+"πακέτων από αυτό"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Για να εγκαταστήσετε αγορασμένο λογισμικό, πρέπει να γίνει ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Αναβάθμιση πακέτων"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Για να εγκαταστήσετε το ενημερωμένο λογισμικό, πρέπει να γίνει ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Ακύρωση της εργασίας άλλου χρήστη"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Για να καταργήσετε τις αλλαγές λογισμικού κάποιου άλλου, πρέπει να γίνει "
+"ταυτοποίηση."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Ρύθμιση εξυπηρετητή proxy για μεταφορτώσεις λογισμικού"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Για να χρησιμοποιήσετε εξυπηρετητή proxy για μεταφορτώσεις λογισμικού, "
+"χρειάζεται ταυτοποίηση."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ΣΦΑΛΜΑ"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Λήψη %sB από %sB στα %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Λήφθηκαν %sB από %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ΣΦΑΛΜΑ:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Δεν σας επιτρέπεται να εκτελέσετε αυτήν την ενέργεια."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Δημιουργία λίστας"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Επίλυση εξαρτήσεων"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Τo ακόλουθο ΝΕΟ πακέτο θα εγκατασταθεί (%(count)s):"
+msgstr[1] "Τα ακόλουθα ΝΕΑ πακέτα θα εγκατασταθούν (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Το ακόλουθο πακέτο θα αναβαθμιστεί (%(count)s):"
+msgstr[1] "Τα ακόλουθα πακέτα θα αναβαθμιστούν (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Το ακόλουθο πακέτο θα ΑΦΑΙΡΕΘΕΙ (%(count)s):"
+msgstr[1] "Τα ακόλουθα πακέτα θα ΑΦΑΙΡΕΘΟΥΝ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Το ακόλουθο πακέτο θα ΥΠΟΒΑΘΜΙΣΤΕΙ (%(count)s):"
+msgstr[1] "Τα ακόλουθα πακέτα θα ΥΠΟΒΑΘΜΙΣΤΟΥΝ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Το ακόλουθο πακέτο θα επανεγκατασταθεί (%(count)s):"
+msgstr[1] "Τα ακόλουθα πακέτα θα επανεγκατασταθούν (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Το ακόλουθο πακέτο έχει διατηρηθεί (%(count)s):"
+msgstr[1] "Τα ακόλουθα πακέτα έχουν διατηρηθεί (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Πρέπει να γίνει λήψη %sB αρχείων."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Μετά από αυτήν την διαδικασία, θα χρησιμοποιηθούν %sB επιπλέον χώρου στον "
+"δίσκο."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Μετά από αυτήν την διαδικασία, θα ελευθερωθούν %sB επιπλέον χώρου στον δίσκο."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Θέλετε να συνεχίσετε [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Για να εργασθείτε με περισσότερα πακέτα, βάλτε τις ονομασίες των πακέτων σε "
+"εισαγωγικά:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Ανανέωση λανθάνουσας μνήμης"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Προσπαθήστε να διορθώσετε τις κατεστραμμένες εξαρτήσεις. Δυνητικά επικίνδυνη "
+"λειτουργία επειδή μπορεί να προσπαθήσει να αφαιρέσει πολλά πακέτα."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Προσπαθήστε να ολοκληρώσετε μια ανεπιτυχή προηγούμενη εγκατάσταση"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Εγκαταστήστε τα συγκεκριμένα πακέτα"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Επανεγκαταστήστε τα συγκεκριμένα πακέτα"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Αφαιρέστε τα συγκεκριμένα πακέτα"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Αφαιρέστε τα συγκεκριμένα πακέτα μαζί με τα αρχεία διαμόρφωσης"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Υποβάθμιση αυτών των πακέτων"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Απαξιωμένο: Παρακαλούμε χρησιμοποιήστε --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Ενημερώστε το σύστημα με ασφαλή τρόπο"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Ενημερώστε το σύστημα, πιθανόν εγκαθιστώντας και αφαιρώντας πακέτα"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Προσθήκη προμηθευτή στους έμπιστους"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Προσθήκη keyid προμηθευτή (χρειάζεται επίσης ο --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Χρήση του συγκεκριμένου keyserver για αναζήτηση κλειδιών"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Προσθέστε ένα νέο αποθετήριο από την συγκεκριμένη deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Ορίστε ένα εναλλακτικό αρχείο sources.list.d στο οποίο θα προστεθούν τα "
+"αποθετήρια."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Λίστα έμπιστων κλειδιών προμηθευτή"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Αφαίρεση έμπιστων κλειδιών του συγκεκριμένου αποτυπώματος"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Επαναρύθμιση των εγκατεστημένων πακέτων. Προαιρετικά μπορεί να καθοριστεί ο "
+"ελάχιστος αριθμός ερωτήσεων"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Ελάχιστη εμφανιζόμενη προτεραιώτητα debconf"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Μην επισυνάπτετε στο apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Να επιτρέπονται πακέτα από μη-πιστοποιημένες πηγές"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Προβολη πρόσθετων πληροφοριών για τα πακέτα. Προς το παρόν μόνον τον αριθμό "
+"έκδοσης"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Αναμονή για πιστοποίηση"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Μην τερματίσετε τον δαίμονα λόγω αδράνειας"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Να μη γίνει φόρτωση κανενός πρόσθετου"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Εμφάνιση εσωτερικών πληροφοριών επεξεργασίας"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Τερματισμός και αντικατάσταση ήδη ενεργού δαίμονα"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Παρακολούθηση του DBus session bus (Απαιτείται μόνο για δοκιμές)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Εκτέλεση λειτουργιών στο δεδομένο chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Αποθήκευση στατιστικών προφίλ στο προσδιορισμένο αρχείο"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Να μην γίνουν αλλαγές στο σύστημα (Χρήσιμο μόνο για τους προγραμματιστές)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Εγκατεστημένο αρχείο"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Εγκατεστημένα πακέτα"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Έγινε εισαγωγή κλειδιού από αρχείο"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "H cache ενημερώθηκε"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Η αναζήτηση ολοκληρώθηκε"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Αφαιρέθηκε έμπιστο κλειδί"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Πακέτα που αφαιρέθηκαν"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Πακέτα που ενημερώθηκαν"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Το σύστημα αναβαθμίστηκε"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Οι αλλαγές πραγματοποιήθηκαν"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Η μη-ολοκληρωμένη εγκατάσταση διορθώθηκε"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Οι μη-επιλυμένες εξαρτήσεις διορθώθηκαν"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Προστέθηκε πηγή λογισμικού"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Ενεργοποιήθηκε συστατικό της διανομής"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Αφαιρέθηκαν τα ληφθέντα πακέτα αρχείων"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Επανρυθμισμένα εγκατεστημένα πακέτα"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Επιτυχία"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Ακυρώθηκε"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Απέτυχε"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Εγκατάσταση αρχείου"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Εγκατάσταση πακέτων"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Προσθήκη κλειδιού από αρχείο"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Ενημέρωση προσωρινής μνήμης"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Αφαίρεση έμπιστου κλειδιού"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Αφαίρεση πακέτων"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Ενημέρωση πακέτων"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Αναβάθμιση του συστήματος"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Εφαρμογή αλλαγών"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Διόρθωση μη-ολοκληρωμένης εγκατάστασης"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Επισκευάζεται το εγκατεστημένο λογισμικό"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Προσθήκη πηγής λογισμικού"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Ενεργοποίηση συστατικού της διανομής"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Αφαίρεση αρχείων λήψης πακέτων"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Επανρύθμιση εγκατεστημένων πακέτων"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Γίνεται αναζήτηση"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Η εγκατάσταση του πακέτου απέτυχε"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Η εγκατάσταση του λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Η προσθήκη του κλειδιού στη λίστα προμηθευτών πιστοποιημένου περιεχομένου "
+"απέτυχε"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Η ανανέωση της λίστας λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Η αφαίρεση του εκδότη από τη λίστα των έμπιστων απέτυχε"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Η αφαίρεση λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Η ενημέρωση λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Η αναβάθμιση του συστήματος απέτυχε"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Η εφαρμογή των αλλαγών λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Η διόρθωση της μη-ολοκληρωμένης εγκατάστασης απέτυχε"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Η διόρθωση των μη-επιλυμένων εξαρτήσεων απέτυχε"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Η προσθήκη πηγής λογισμικού απέτυχε"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Η ενεργοποίηση συστατικού της διανομής απέτυχε"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Αποτυχία αφαίρεσης αρχείων λήψης πακέτων"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Αποτυχία αναζήτησης"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Προσθήκη άδειας χρήσης"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Ελέγξτε τη σύνδεσή σας με το διαδίκτυο."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Ελέγξτε αν χρησιμοποιείτε αποθετήρια τρίτων. Αν χρησιμοποιείτε, "
+"απενεργοποιήστε τα, αφού είναι συχνά πηγή προβλημάτων.\n"
+"Επιπλέον εκτελέστε την ακόλουθη εντολή σε ένα Τερματικό: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Το επιλεγμένο αρχείο ίσως δεν είναι κλειδί GPG ή ίσως είναι κατεστραμμένο."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Αδυναμία αφαίρεσης επιλεγμένου κλειδιού. Βεβαιωθείτε ότι δώσατε έγκυρο "
+"αποτύπωμα."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Ελέγξτε εάν λειτουργεί αυτήν την στιγμή και κάποια άλλη εφαρμογή διαχείρισης "
+"λογισμικού, π.χ. Synaptic ή aptitude. Μόνο μία εφαρμογή επιτρέπεται να κάνει "
+"αλλαγές κάθε φορά."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Αυτό είναι ένα σοβαρό πρόβλημα. Δοκιμάστε ξανά αργότερα. Αν το πρόβλημα αυτό "
+"εμφανιστεί ξανά, παρακαλώ αναφέρατε το σφάλμα στους προγραμματιστές."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Ελέγξτε την ορθογραφία του ονόματος του πακέτου, και ότι το κατάλληλο "
+"αποθετήριο είναι ενεργοποιημένο."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Δεν χρειάζεται να γίνει ενημέρωση."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Δενχρειάζεται να γίνει εγκατάσταση"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Δεν χρειάζεται να γίνει αφαίρεση"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Ζητήσατε να αφαιρέσετε ένα πακέτο που είναι απαραίτητο μέρος του συστήματός "
+"σας."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Η σύνδεση με την υπηρεσία χάθηκε. Πιθανότατα η υπηρεσία παρασκηνίου να "
+"σταμάτησε να λειτουργεί."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Η εγκατάσταση ή αφαίρεση ενός πακέτου λογισμικού απέτυχε."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Η ζητούμενη λειτουργία δεν υποστηρίζεται."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Φαίνεται να υπάρχει ένα προγραμματιστικό σφάλμα στο aptdaemon, δηλ. το "
+"λογισμικό που επιτρέπει την εγκατάσταση/αφαίρεση και την εκτέλεση άλλων "
+"πράξεων διαχείρισης πακέτων"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Αυτό το σφάλμα μπορεί να προκλήθηκε από αναγκαία πρόσθετα πακέτα λογισμικού "
+"που είτε λείπουν είτε δεν μπορούν να εγκατασταθούν. Επιπλέον μπορεί να "
+"υπάρχει σύγκρουση ανάμεσα σε πακέτα που δεν επιτρέπεται να εγκατασταθούν "
+"ταυτόχρονα."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Αυτό απαιτεί την εγκατάσταση πακέτων από μη ταυτοποιημένες πηγές."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Η εγκατάσταση μπορεί να απέτυχε λόγω κάποιου σφάλματος στο αντίστοιχο πακέτο "
+"λογισμικού ή ακυρώθηκε με λάθος τρόπο. Πρέπει να το διορθώσετε πριν να "
+"μπορέσετε να εγκαταστήσετε ή να αφαιρέσετε επιπλέον λογισμικό."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Παρακαλώ αντιγράψτε το αρχείο στον τοπικό σας υπολογιστή και ελέγξτε τις "
+"άδειες αρχείων"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Δεν επιτρέπεται η εγκατάσταση πακέτων που παραβιάζουν τα πρότυπα ποιότητας. "
+"Αυτό μπορεί να προκαλέσει σοβαρά προβλήματα στον υπολογιστή σας. Παρακαλώ "
+"επικοινωνήστε με το άτομο ή την οργάνωση που προσφέρει αυτό το πακέτο "
+"συμπεριλαμβάνοντας τις ακόλουθες λεπτομέρειες:"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Η λήψη κλειδιού άδειας χρήσης που απαιτείται για να τρέξει αυτό το κομμάτι "
+"του λογισμικού δεν είναι έγκυρη ή δεν μπορεί να εγκατασταθεί σωστά.\n"
+"Δείτε τις λεπτομέρειες για περισσότερες πληροφορίες."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Όλα τα διαθέσιμα πακέτα αναβάθμισης έχουν ήδη εγκατασταθεί."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Το κλειδί άδειας χρήσης η οποία σάς επιτρέπει να χρησιμοποιήσετε αυτό το "
+"πακέτο λογισμικού δεν μπορεί να ληφθεί. Ελέγξτε τη σύνδεση του δικτύου σας."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Δεν έχετε τα απαιτούμενα δικαιώματα για να εκτελέσετε αυτή τη κίνηση."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Είτε δώσατε λάθος κωδικό ή ακυρώσατε την πιστοποίηση\n"
+"Επιπλέον θα μπορούσε επίσης να υπάρχει κάποιος τεχνικός λόγος για αυτό το "
+"σφάλμα αν δεν είδατε κάποιο διάλογο κωδικού: το περιβάλλον εργασίας σας δεν "
+"παρέχει κάποιον διαχειριστή συνεδρίας PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Η λήψη των αρχείων των πακέτων απέτυχε"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Αποτυχία λήψης πληροφοριών αποθετηρίου."
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Η εξαρτήσεις του πακέτου δεν είναι δυνατόν να επιλυθούν."
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Το σύστημα πακέτων είναι φθαρμένο."
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Το κλειδί δεν εγκαταστάθηκε"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Το κλειδί δεν αφαιρέθηκε"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Το κλείδωμα της διαχείρισης πακέτων απέτυχε"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Η φόρτωση της λίστας πακέτων απέτυχε"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Το πακέτο δεν υπάρχει"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Το πακέτο είναι ήδη ενημερωμένο"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Το πακέτο είναι ήδη εγκατεστημένο"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Το πακέτο δεν είναι εγκατεστημένο"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Αποτυχία αφαίρεσης απαραίτητου πακέτου συστήματος"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Η εργασία δεν μπορεί να παρακολουθηθεί ή να ελεγχθεί"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Η λειτουργία πακέτου απέτυχε"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Απαιτεί την εγκατάσταση μη-έμπιστων πακέτων"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Η προηγούμενη εγκατάσταση δεν έχει ολοκληρωθεί"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Το πακέτο είναι κακής ποιότητας"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Το αρχείο του πακέτο δεν μπόρεσε να ανοιχτεί"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Μη υποστηριζόμενη λειτουργία"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Αποτυχία λήψης του κλειδιού άδειας χρήσης"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Αποτυχία εγκατάστασης του κλειδιού άδειας χρήσης"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Το σύστημα είναι ήδη ενημερωμένο"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Δε μπορέσατε να πιστοποιηθείτε"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Δεν επιτρέπεται να εκτελέσετε αυτή την ενέργεια"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Παρουσιάστηκε ανεπανόρθωτο σφάλμα"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Αναμονή για να ξεκινήσει η υπηρεσία"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Αναμονή"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Αναμονή για το απαιτούμενο μέσο"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Αναμονή για τον τερματισμό άλλων διαχειριστών λογισμικού"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Αναμονή για την ζήτηση από το αρχείο ρυθμίσεων"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Εκτέλεση εργασίας"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Λήψη"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Επερωτήσεις στις πηγές λογισμικού"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Εκκαθάριση"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Ολοκληρώθηκε"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Έξοδος"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Φόρτωση λίστας λογισμικού"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Εγκατάσταση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Ρύθμιση %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Αφαίρεση %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Πλήρη διαγραφή του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Σημειώνεται η εξαφάνιση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Εκτελείται το σενάριο εντολών %s για την ολοκλήρωση της εγκατάστασης"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Αναβάθμιση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Εξαγωγή αρχείων από το %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Προετοιμασία για εγκατάσταση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Προετοιμασία για τη ρύθμιση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Προετοιμασία για την αφαίρεση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Προετοιμασία για την πλήρη αφαίρεση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Έγινε εγκατάσταση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Ολοκληρωτική απομάκρυνση του %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Έγινε η αφαίρεση του %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Ολοκληρώθηκε"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Αποτυχία πιστοποίησης"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Γίνεται λήψη"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Σε αδράνεια"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Το δίκτυο δεν είναι διαθέσιμο"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Γίνεται επεξεργασία του %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Λήψη %sB από %sB στα %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Λήφθηκαν %sB από %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Λεπτομέρειες"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Αρχείο"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Μεταφορτώθηκαν %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Ληφθέντα"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Απαιτείτε CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Παρακαλώ εισάγετε το παραπάνω CD/DVD στον οδηγό '%s' για να εγκαταστήσετε "
+"πακέτα από αυτό."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Σ_υνέχεια"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Εγκατάσταση"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Επανεγκατάσταση"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Αφαίρεση"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Απομάκρυνση μαζί με τα αρχεία ρυθμίσεων"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Αναβάθμιση"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Υποβάθμιση"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Παράλειψη αναβάθμισης"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Παρακαλώ ρίξτε μια ματιά στην λίστα με τις αλλαγές παρακάτω."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Πρέπει να εγκατασταθεί επιπλέον λογισμικό"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Πρέπει να επανεγκατασταθεί επιπλέον λογισμικό"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Πρέπει να αφαιρεθεί επιπλέον λογισμικό"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Πρέπει να αφαιρεθεί επιπλέον λογισμικό με τις ρυθμίσεις του"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Πρέπει να αναβαθμιστεί επιπλέον λογισμικό"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Πρέπει να υποβαθμιστεί επιπλέον λογισμικό"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Οι ενημερώσεις θα παραλειφθούν"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Απαιτούνται επιπλέον αλλαγές"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Θα μεταφορτωθούν συνολικά %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Θα ελευθερωθούν %sB χώρου στον δίσκο."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Θα χρησιμοποιηθούν %sB επιπλέον χώρου στον δίσκο."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Να αντικατασταθούν οι αλλαγές σας στο '%s' με μια νεότερη έκδοση του αρχείου "
+"ρυθμίσεων;"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Αν δεν γνωρίζετε γιατί το αρχείο υπάρχει ήδη, είναι συνήθως ασφαλές να το "
+"αντικαταστήσετε."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Αλλαγές"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "Δι_ατήρηση"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Α_ντικατάσταση"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Πληροφορίες"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Αναμονή για την ολοκλήρωση του %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Λήψη %(files)s"
+msgstr[1] "Λήψη %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "Τοπικό αποθετήριο"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Λήψη από το %s"
+msgstr[1] "Λήψη από τα %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Η δομή του %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Η περιγραφή του %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Υπογραφή περιγραφής του %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Διαθέσιμα πακέτα από %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Διαθέσιμες πηγές από %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Διαθέσιμες μεταφράσεις από %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Μεταφράσεις για %s (%s) από %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Μεταφράσεις για %s από %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Μεταφράσεις (%s) από %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Το πακέτο %s δεν είναι διαθέσιμο"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Το πακέτο %s δεν είναι εγκατεστημένο"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Η έκδοση %s του/της %s δεν είναι εγκατεστημένη"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Το πακέτο %s είναι ήδη εγκατεστημένο"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Η έκδοση %s του %s δεν είναι διαθέσιμη."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Το URL του διακομιστή κλειδιού (keyserver) δεν είναι έγκυρο: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Μη έγκυρο πρωτόκολλο διακομιστή: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Μη έγκυρη ταυτότητα (ID) κλειδιού: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Αποτυχία λήψης κι εγκατάσταση του κλειδιού to %s από %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Αποτυχία εγκατάστασης του αρχείου κλειδιού %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Αποτυχία αφαίρεσης κλειδιού αποτύμα %s couldn't be removed: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Το πακέτο %s δεν μπορεί να αφαιρεθεί."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Η έκδοση %s του/της %s δεν είναι εγκατεστημένη"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Η προηγούμενη έκδοση%s του/της %s είναι ήδη εγκατεστημένη"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Η έκδοση %s του/της %s είναι ήδη εγκατεστημένη"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Η έκδοση %s του/της %s δεν είναι διαθέσιμη"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Πρέπει να προσδιορίστε μια έκδοση υπαναχώρισης (downgrade) του/της %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Η μεταγενέστερη έκδοση του/της %s of %s είναι ήδη εγκατεστημένη"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Το πακέτο %s δεν είναι διαθέσιμο στην έκδοση %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Το πακέτο %s δεν μπορεί να αφαιρεθεί"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Το πακέτο δεν παρέχει ένα έγκυρο πεδίο ελέγχου Installed-Size. Δείτε την "
+"Πολιτική του Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Το κλειδί της άδειας χρήσης είναι κενό"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Το κλειδί άδειας χρήσης δεν επιτρέπεται να περιέχει εκτελέσιμο κώδικα."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Η διαδρομή του κλειδιού άδειας χρήσης %s δεν είναι έγκυρη"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Το κλειδί άδειας χρήσης υπάρχει ήδη: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Η τοποθεσία του κλειδιού της άδειας χρήσης δεν είναι ασφαλής, διότι "
+"περιέχει συμβολικούς συνδέσμους. Η διαδρομή %s δείχνει στο %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Ο κατάλογος για την εγκατάσταση του κλειδιού δεν υπάρχει ακόμη: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Αποτυχία εγγραφής του αρχείου κλειδιού στο: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Τα ακόλουθα πακέτα έχουν ανεπίλυτες εξαρτήσεις:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "αλλά είναι ένα εικονικό πακέτο"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "αλλά δεν είναι εγκατεστημένο"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "αλλά δεν πρόκειται να εγκατασταθεί"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "αλλά το %s είναι εγκατεστημένο"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "αλλά το %s πρόκειται να εγκατασταθεί"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Η προσθήκη του κλειδιού στη λίστα των έμπιστων εκδοτών λογισμικού απέτυχε"
diff --git a/po/en_AU.po b/po/en_AU.po
new file mode 100644
index 0000000..cc3a8ef
--- /dev/null
+++ b/po/en_AU.po
@@ -0,0 +1,1485 @@
+# English (Australia) translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-25 13:34+0000\n"
+"Last-Translator: Jared Norris <jrnorris@gmail.com>\n"
+"Language-Team: English (Australia) <en_AU@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "List keys of trusted vendors"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "To view the list of trusted keys, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Remove downloaded package files"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "To clean downloaded package files, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Change software configuration"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "To change software settings, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Change software repository"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "To change software repository settings, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Install package file"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "To install this package, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Update package information"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "To update the software catalogue, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Install or remove packages"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "To install or remove software, you need to authenticate."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Install software from a high-trust whitelisted repository."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "To install software, you need to authenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Add a new repository and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "To install software from a new source, you need to authenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Add a new repository of purchased software and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "To install purchased software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Upgrade packages"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "To install updated software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancel the task of another user"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "To cancel someone else's software changes, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Set a proxy for software downloads"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"To use a proxy server for downloading software, you need to authenticate."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "You are not allowed to perform this action."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Queuing"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolving dependencies"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "The following NEW package will be installed (%(count)s):"
+msgstr[1] "The following NEW packages will be installed (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "The following package will be upgraded (%(count)s):"
+msgstr[1] "The following packages will be upgraded (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "The following package will be REMOVED (%(count)s):"
+msgstr[1] "The following packages will be REMOVED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "The following package will be DOWNGRADED (%(count)s):"
+msgstr[1] "The following packages will be DOWNGRADED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "The following package will be reinstalled (%(count)s):"
+msgstr[1] "The following packages will be reinstalled (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "The following package has been kept back (%(count)s):"
+msgstr[1] "The following packages have been kept back (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Need to get %sB of archives."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "After this operation, %sB of additional disk space will be used."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "After this operation, %sB of additional disk space will be freed."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Do you want to continue [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresh the cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Try to finish a previous incompleted installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Install the given packages"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstall the given packages"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Remove the given packages"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remove the given packages including configuration files"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Downgrade the given packages"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Deprecated: Please use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Upgrade the system in a safe way"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Upgrade the system, possibly installing and removing packages"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Add the vendor to the trusted ones"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Add the vendor keyid (also needs --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Use the given keyserver for looking up keys"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Add new repository from the given deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "List trusted vendor keys"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remove the trusted key of the given fingerprint"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "The minimum debconf priority of question to be displayed"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Do not attach to the apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Allow packages from unauthenticated sources"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Show additional information about the packages. Currently only the version "
+"number"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Waiting for authentication"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Do not shutdown the daemon because of inactivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Do not load any plugins"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Show internal processing information"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Quit and replace an already running daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Listen on the DBus session bus (Only required for testing"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Perform operations in the given chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Store profile stats in the specified file"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Do not make any changes to the system (Only of use to developers)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installed file"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installed packages"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Added key from file"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Updated cache"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Search done"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Removed trusted key"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Removed packages"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Updated packages"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Upgraded system"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Applied changes"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Repaired incomplete installation"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Repaired broken dependencies"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Added software source"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Enabled component of the distribution"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Removed downloaded package files"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfigured installed packages"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Successful"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelled"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Failed"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installing file"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installing packages"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Adding key from file"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Updating cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Removing trusted key"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Removing packages"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Updating packages"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Upgrading system"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Applying changes"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Repairing incomplete installation"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Repairing installed software"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Adding software source"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Enabling component of the distribution"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Removing downloaded package files"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfiguring installed packages"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Searching"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installation of the package file failed"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installation of software failed"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "Adding the key to the list of trusted software vendors failed"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Refreshing the software list failed"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Removing the vendor from the list of trusted ones failed"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Removing software failed"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Updating software failed"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Upgrading the system failed"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Applying software changes failed"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Repairing incomplete installation failed"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Repairing broken dependencies failed"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Adding software source failed"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Enabling component of the distribution failed"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Removing downloaded package files failed"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Search failed"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Adding license key"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Check your Internet connection."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "The selected file may not be a GPG key file or it might be corrupt."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "There isn't any need for an update."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "There isn't any need for an installation"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "There isn't any need for a removal."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"You requested to remove a package which is an essential part of your system."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "The installation or removal of a software package failed."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "The requested feature is not supported."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "This requires installing packages from unauthenticated sources."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Please copy the file to your local computer and check the file permissions."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "All available upgrades have already been installed."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "You don't have got the required privileges to perform this action."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"You either provided a wrong password or cancelled the authorisation.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialogue: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Failed to download package files"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Failed to download repository information"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Package dependencies cannot be resolved"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "The package system is broken"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Key was not installed"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Key was not removed"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Failed to lock the package manager"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Failed to load the package list"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Package does not exist"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Package is already up to date"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Package is already installed"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Package isn't installed"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Failed to remove essential system package"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Task cannot be monitored or controlled"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Package operation failed"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requires installation of untrusted packages"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Previous installation hasn't been completed"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "The package is of bad quality"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Package file could not be opened"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Not supported feature"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Failed to download the license key"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Failed to install the license key"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "The system is already up to date"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "You could not be authorised"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "You are not allowed to perform this action"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "An unhandleable error occured"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Waiting for service to start"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Waiting"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Waiting for required medium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Waiting for other software managers to quit"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Waiting for configuration file prompt"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Running task"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Downloading"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Querying software sources"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Cleaning up"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Finished"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelling"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Loading software list"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configuring %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Removing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Completely removing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Noting disappearance of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Running post-installation trigger %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Upgrading %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Unpacking %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparing installation of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparing configuration of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparing removal of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparing complete removal of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Installed %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Completely removed %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Removed %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Done"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Authentication failed"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Fetching"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Idle"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Network isn't available"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Processing %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "File"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Downloaded %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' is required"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinue"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Install"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstall"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Remove"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purge"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Skip upgrade"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Please take a look at the list of changes below."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Additional software has to be installed"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Additional software has to be re-installed"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Additional software has to be removed"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Additional software has to be purged"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Additional software has to be upgraded"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Additional software has to be downgraded"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Updates will be skipped"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Additional changes are required"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB will be downloaded in total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB of disk space will be freed."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB more disk space will be used."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Changes"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Keep"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Replace"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Waiting for %s to exit"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Downloading %(files)s"
+msgstr[1] "Downloading %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "local repository"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Downloading from %s"
+msgstr[1] "Downloading from %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Structure of %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Description of %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Description signature of %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Available packages from %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Available sources from %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Available translations from %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Translations for %s (%s) from %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Translations for %s from %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Translations (%s) from %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Package %s isn't available"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Package %s isn't installed"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "The version %s of %s isn't installed"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Package %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "The version %s of %s isn't available."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "The keyserver URL is invalid: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Invalid protocol of the server: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Invalid key id: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Key file %s couldn't be installed: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Key with fingerprint %s couldn't be removed: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Package %s cannot be removed."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "The version %s of %s is not installed"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "The former version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "The version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "The version %s of %s isn't available"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "You need to specify a version to downgrade %s to"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "The later version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "The package %s isn't available in the %s release."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Package %s cannot be removed"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "The license key is empty"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "The license key is not allowed to contain executable code."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "The license key path %s is invalid"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "The license key already exists: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"The location of the license key is insecure since it contains symbolic "
+"links. The path %s maps to %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "The directory where to install the key to doesn't exist yet: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Failed to write key file to: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "The following packages have unmet dependencies:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "but it is a virtual package"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "but it is not installed"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "but it is not going to be installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "but %s is installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "but %s is to be installed"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Adding the key to the list of trused software vendors failed"
diff --git a/po/en_CA.po b/po/en_CA.po
new file mode 100644
index 0000000..2ec08cf
--- /dev/null
+++ b/po/en_CA.po
@@ -0,0 +1,1459 @@
+# English (Canada) translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:47+0000\n"
+"Last-Translator: Daniel LeBlanc <danidou@gmail.com>\n"
+"Language-Team: English (Canada) <en_CA@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "List keys of trusted vendors"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "To view the list of trusted keys, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Change software repository"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "To change software repository settings, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Install package file"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "To install this package, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Update package information"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "To update the software catalog, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Install or remove packages"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "To install or remove software, you need to authenticate."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Add a new repository and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "To install software from a new source, you need to authenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Add a new repository of purchased software and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "To install purchased software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Upgrade packages"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "To install updated software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancel the task of another user"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "To cancel someone else's software changes, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Set a proxy for software downloads"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"To use a proxy server for downloading software, you need to authenticate."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "You are not allowed to perform this action."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Queuing"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolving dependencies"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Need to get %sB of archives."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "After this operation, %sB of additional disk space will be used."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "After this operation, %sB of additional disk space will be freed."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Do you want to continue [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresh the cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Try to finish a previous incompleted installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Install the given packages"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstall the given packages"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Remove the given packages"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remove the given packages including configuration files"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Deprecated: Please use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Upgrade the system in a safe way"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Upgrade the system, possibly installing and removing packages"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Add the vendor to the trusted ones"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Add the vendor keyid (also needs --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Use the given keyserver for looking up keys"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Add new repository from the given deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "List trusted vendor keys"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remove the trusted key of the given fingerprint"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Do not attach to the apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Allow packages from unauthenticated sources"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Waiting for authentication"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Do not shutdown the daemon because of inactivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Show internal processing information"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Quit and replace an already running daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Store profile stats in the specified file"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Do not make any changes to the system (Only of use to developers)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installed file"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installed packages"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Added key from file"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Updated cache"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Removed trusted key"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Removed packages"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Updated packages"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Upgraded system"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Applied changes"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Repaired incomplete installation"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Repaired broken dependencies"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Added software source"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Enabled component of the distribution"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Successful"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelled"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Failed"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installing file"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installing packages"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Adding key from file"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Updating cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Removing trusted key"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Removing packages"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Updating packages"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Upgrading system"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Applying changes"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Repairing incomplete installation"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Adding software source"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Enabling component of the distribution"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installation of the package file failed"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installation of software failed"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Refreshing the software list failed"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Removing the vendor from the list of trusted ones failed"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Removing software failed"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Updating software failed"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Upgrading the system failed"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Applying software changes failed"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Repairing incomplete installation failed"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Repairing broken dependencies failed"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Adding software source failed"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Enabling component of the distribution failed"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Check your Internet connection."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Check if you are using third-party repositories. If so, disable them, "
+"because they are a common source of problems.\n"
+"Furthermore, run the following command in a Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "The selected file might not be a GPG key file or it might be corrupt."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "There is no need for an update."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "There is no need for an installation."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "There is no need for a removal."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"You have requested to remove a package which is an essential part of your "
+"system."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"The connection to the daemon was lost. Most likely, the background daemon "
+"crashed."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "The installation or removal of a software package failed."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "You are not allowed to perform this action."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Failed to download package files"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Failed to download repository information"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Package dependencies cannot be resolved"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "The package system is broken"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Key was not installed"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Key was not removed"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Failed to lock the package manager"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Failed to load the package list"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Package does not exist"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Package is already installed"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Package isn't installed"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Failed to remove an essential system package"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Task cannot be monitored or controlled"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Package operation failed"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requires installation of untrusted packages"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Previous installation hasn't been completed"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "An unhandlable error occured"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Waiting for service to start"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Waiting"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Waiting for required medium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Waiting for other software managers to quit"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Waiting for configuration file prompt"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Running task"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Downloading"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Cleaning up"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Finished"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelling"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Loading software list"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configuring %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Removing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Running post-installation trigger %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Upgrading %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Done"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Authentication failed"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Fetching"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Idle"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Network isn't available"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "File"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Downloaded %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' is required"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinue"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Install"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstall"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Remove"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purge"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Skip upgrade"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Please take a look at the list of changes below."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Additional software has to be installed"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Additional software has to be re-installed"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Additional software has to be removed"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Additional software has to be purged"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Additional software has to be upgraded"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Additional software has to be downgraded"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Updates will be skipped"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Additional changes are required"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB will be downloaded in total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB of disk space will be freed."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB more disk space will be used."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Changes"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Keep"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Replace"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Adding the key to the list of trusted software vendors failed"
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644
index 0000000..b616bd5
--- /dev/null
+++ b/po/en_GB.po
@@ -0,0 +1,1485 @@
+# English (United Kingdom) translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-26 23:46+0000\n"
+"Last-Translator: Andi Chandler <Unknown>\n"
+"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "List keys of trusted vendors"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "To view the list of trusted keys, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Remove downloaded package files"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "To clean downloaded package files, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Change software configuration"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "To change software settings, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Change software repository"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "To change software repository settings, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Install package file"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "To install this package, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Update package information"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "To update the software catalogue, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Install or remove packages"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "To install or remove software, you need to authenticate."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Install software from a high-trust whitelisted repository."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "To install software, you need to authenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Add a new repository and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "To install software from a new source, you need to authenticate."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Add a new repository of purchased software and install packages from it"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "To install purchased software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Upgrade packages"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "To install updated software, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancel the task of another user"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "To cancel someone else's software changes, you need to authenticate."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Set a proxy for software downloads"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"To use a proxy server for downloading software, you need to authenticate."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "You are not allowed to perform this action."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Queuing"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolving dependencies"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "The following NEW package will be installed (%(count)s):"
+msgstr[1] "The following NEW packages will be installed (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "The following package will be upgraded (%(count)s):"
+msgstr[1] "The following packages will be upgraded (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "The following package will be REMOVED (%(count)s):"
+msgstr[1] "The following packages will be REMOVED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "The following package will be DOWNGRADED (%(count)s):"
+msgstr[1] "The following packages will be DOWNGRADED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "The following package will be reinstalled (%(count)s):"
+msgstr[1] "The following packages will be reinstalled (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "The following package has been kept back (%(count)s):"
+msgstr[1] "The following packages have been kept back (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Need to get %sB of archives."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "After this operation, %sB of additional disk space will be used."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "After this operation, %sB of additional disk space will be freed."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Do you want to continue [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresh the cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Try to finish a previous incompleted installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Install the given packages"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstall the given packages"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Remove the given packages"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remove the given packages including configuration files"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Downgrade the given packages"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Deprecated: Please use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Upgrade the system in a safe way"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Upgrade the system, possibly installing and removing packages"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Add the vendor to the trusted ones"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Add the vendor keyid (also needs --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Use the given keyserver for looking up keys"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Add new repository from the given deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "List trusted vendor keys"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remove the trusted key of the given fingerprint"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "The minimum debconf priority of question to be displayed"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Do not attach to the apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Allow packages from unauthenticated sources"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Show additional information about the packages. Currently only the version "
+"number"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Waiting for authentication"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Do not shutdown the daemon due to inactivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Do not load any plugins"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Show internal processing information"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Stop and replace an already running daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Listen on the DBus session bus (Only required for testing)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Perform operations in the given chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Store profile stats in the specified file"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Do not make any changes to the system (Only of use to developers)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installed file"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installed packages"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Added key from file"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Updated cache"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Search done"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Removed trusted key"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Removed packages"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Updated packages"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Upgraded system"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Applied changes"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Repaired incomplete installation"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Repaired broken dependencies"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Added software source"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Enabled component of the distribution"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Removed downloaded package files"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfigured installed packages"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Successful"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelled"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Failed"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installing file"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installing packages"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Adding key from file"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Updating cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Removing trusted key"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Removing packages"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Updating packages"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Upgrading system"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Applying changes"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Repairing incomplete installation"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Repairing installed software"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Adding software source"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Enabling component of the distribution"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Removing downloaded package files"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfiguring installed packages"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Searching"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installation of the package file failed"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installation of software failed"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "Adding the key to the list of trusted software vendors failed"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Refreshing the software list failed"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Removing the vendor from the list of trusted ones failed"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Removing software failed"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Updating software failed"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Upgrading the system failed"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Applying software changes failed"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Repairing incomplete installation failed"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Repairing broken dependencies failed"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Adding software source failed"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Enabling component of the distribution failed"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Removing downloaded package files failed"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Search failed"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Adding license key"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Check your Internet connection."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"If you are using third party repositories then disable them, since they are "
+"a common source of problems.\n"
+"Now run the following command in a terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "The selected file may not be a GPG key file or it might be corrupt."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "There isn't any need to update."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "There isn't any need for an installation"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "There isn't any need for a removal."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"You requested to remove a package which is an essential part of your system."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"The connection to the daemon was lost. The background daemon probably "
+"crashed."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "The installation or removal of a software package failed."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "The requested feature is not supported."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"There seems to be a programming error in aptdaemon. This is the software "
+"that allows you to install/remove software and to perform other package "
+"management related tasks."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "This requires installing packages from unauthenticated sources."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Please copy the file to your local computer and check the file permissions."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "All available upgrades have already been installed."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "You do not have got the required privileges to perform this action."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"You either provided a wrong password or cancelled the authorisation.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"have not seen a password dialogue: your desktop environment does not provide "
+"a PolicyKit session agent."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Failed to download package files"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Failed to download repository information"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Package dependencies cannot be resolved"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "The package system is broken"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Key was not installed"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Key was not removed"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Failed to lock the package manager"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Failed to load the package list"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Package does not exist"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Package is already up to date"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Package is already installed"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Package isn't installed"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Failed to remove essential system package"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Task cannot be monitored or controlled"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Package operation failed"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requires installation of untrusted packages"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Previous installation hasn't been completed"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "The package is of bad quality"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Package file could not be opened"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Not supported feature"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Failed to download the license key"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Failed to install the license key"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "The system is already up to date"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "You could not be authorised"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "You are not allowed to perform this action"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "An unhandled error occured"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Waiting for service to start"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Waiting"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Waiting for required medium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Waiting for other software managers to quit"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Waiting for configuration file prompt"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Running task"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Downloading"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Querying software sources"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Cleaning up"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Finished"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelling"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Loading software list"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configuring %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Removing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Completely removing %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Noting disappearance of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Running post-installation trigger %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Upgrading %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Unpacking %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparing installation of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparing configuration of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparing removal of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparing complete removal of %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Installed %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Completely removed %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Removed %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Done"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Authentication failed"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Fetching"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Idle"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Network isn't available"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Processing %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Downloaded %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "File"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Downloaded %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Downloaded"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' is required"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinue"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Install"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstall"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Remove"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purge"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Upgrade"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Downgrade"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Skip upgrade"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Please take a look at the list of changes below."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Additional software has to be installed"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Additional software has to be reinstalled"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Additional software has to be removed"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Additional software has to be purged"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Additional software has to be upgraded"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Additional software has to be downgraded"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Updates will be skipped"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Additional changes are required"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB will be downloaded in total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB of disk space will be freed."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB more disk space will be used."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Changes"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Keep"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Replace"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Waiting for %s to exit"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Downloading %(files)s"
+msgstr[1] "Downloading %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "local repository"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Downloading from %s"
+msgstr[1] "Downloading from %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Structure of %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Description of %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Description signature of %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Available packages from %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Available sources from %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Available translations from %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Translations for %s (%s) from %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Translations for %s from %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Translations (%s) from %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Package %s isn't available"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Package %s isn't installed"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "The version %s of %s isn't installed"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Package %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "The version %s of %s isn't available."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "The keyserver URL is invalid: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Invalid protocol of the server: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Invalid key id: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Key file %s couldn't be installed: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Key with fingerprint %s couldn't be removed: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Package %s cannot be removed."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "The version %s of %s is not installed"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "The former version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "The version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "The version %s of %s isn't available"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "You need to specify a version to downgrade %s to"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "The later version %s of %s is already installed"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "The package %s isn't available in the %s release."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Package %s cannot be removed"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "The license key is empty"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "The license key is not allowed to contain executable code."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "The license key path %s is invalid"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "The license key already exists: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "The directory where to install the key to doesn't exist yet: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Failed to write key file to: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "The following packages have unmet dependencies:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "but it is a virtual package"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "but it is not installed"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "but it is not going to be installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "but %s is installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "but %s is to be installed"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Adding the key to the list of trusted software vendors failed"
diff --git a/po/eo.po b/po/eo.po
new file mode 100644
index 0000000..0fe4164
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,1478 @@
+# Esperanto translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-09-15 16:37+0000\n"
+"Last-Translator: Michael Moroni <michael.moroni@mailoo.org>\n"
+"Language-Team: Esperanto <eo@li.org>\n"
+"Language: eo\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Listigi ŝlosilojn de fidataj vendejoj"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por vidi la liston da fidataj ŝlosiloj."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Forigi elŝutitajn pakaĵdosierojn"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por forigi elŝutitajn pakaĵdosierojn."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ŝanĝi programarajn agordojn"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por ŝanĝi programajn agordojn."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Ŝanĝi programarajn deponejon"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por ŝanĝi agordojn pri programaraj deponejoj."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instali pakaĵdosieron"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por instali ĉi tiun pakaĵon."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Ĝisdatigi pakaĵajn informojn"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por ĝisdatigi la programaran katalogon."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instali aŭ forigi pakaĵojn"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por instali aŭ forigi programaron."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instali programarojn el tre fidinda permesita depnejo."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Vi necesas aŭtentigadon por instali programarojn."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Aldoni novan deponejon kaj instali pakaĵojn el ĝi"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por instali programaron el nova fonto."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Aldoni novan deponejon de aĉetita programaro kaj instali pakaĵojn el ĝi"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por instali aĉetitan programaron."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Ĝisdatigitaj pakaĵoj"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por instali ĝisdatigitan programaron."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Nuligi la taskon de alia uzanto"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Aŭtentokontrolo necesas por nuligi programarŝanĝojn de alia persono."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Agordi prokurilon por programar-elŝutoj"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Aŭtentokontrolo necesas por uzi prokuran servilon por elŝuti programaron."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERARO"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB el %sB je %sB/s elŝutitaj"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB el %sB elŝutitaj"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERARO:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Vi ne rajtas fari ĉi tiun agon."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Enviciganta"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Solvanta dependojn"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "La sekva NOVA pakaĵo estos instalata (%(count)s):"
+msgstr[1] "La sekvaj NOVAJ pakaĵoj estos instalataj (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "La sekva pakaĵo estos ĝisdatigata (%(count)s):"
+msgstr[1] "La sekvaj pakaĵoj estos ĝisdatigataj (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "La sekva pakaĵo estos FORIGATA (%(count)s):"
+msgstr[1] "La sekvaj pakaĵoj estos FORIGATAJ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "La sekva pakaĵo estos MALĜISDATIGATA (%(count)s):"
+msgstr[1] "La sekvaj pakaĵoj estos MALĜISDATIGATAJ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "La sekva pakaĵo estos reinstalata (%(count)s):"
+msgstr[1] "La sekvaj pakaĵoj estos reinstalataj (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "La sekva pakaĵo estas retenita (%(count)s):"
+msgstr[1] "La sekvaj pakaĵoj estas retenitaj (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Necesas elŝuti %sB da arĥivoj."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Post ĉi tiu ago, %sB da plia diskspaco estos uzata."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Post ĉi tiu ago, %sB da diskspaco estos liberigata."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Ĉu vi volas daŭrigi [J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Por agi por pli ol unu pakaĵo, enmetu la pakaĵnomojn en citilojn:\n"
+"aptdcon --install \"fuo baro\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refreŝigi kaŝmemoron"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Provi solvi rompitajn dependecojn. Tio povas esti danĝera ĉar la ago eble "
+"provus forigi multajn pakaĵojn."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Provi fini antaŭe nekompletigitan instaladon"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instali la indikitajn pakaĵojn"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstali la indikitajn pakaĵojn"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Forigi la indikitajn pakaĵojn"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Forigi la indikitajn pakaĵojn, inkluzive agordajn dosierojn"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Malĝisdatigi la elektitajn pakaĵojn"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Evitenda: Bonvole uzu --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Ĝisdatigi la sistemon sekurmaniere"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Ĝisdatigi la sistemon, eble instaligante kaj forigante pakaĵojn."
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Aldoni la vendiston al la fidatoj"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Aldoni la 'keyid' de la vendisto (bezonas ankaŭ --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Uzi la indikitan ŝlosilservilon por serĉi ŝlosilojn"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Aldoni novan deponejon per la indikita deb-linio"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specifi alternativan sources.list.d-dosieron, al kiu deponejoj estu "
+"aldonataj."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Montri ŝlosilojn de fidataj vendistoj"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Forigi la fidatan ŝlosilon de la indikita fingropremo"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reagordi instalitajn pakaĵojn. Opcie la minimuma prioritato de demandoj "
+"specifeblas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La minimume montrenda debconf-prioritato de demandoj"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ne konekti al la apt-terminalo"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permesi pakaĵojn el neaŭtentigitaj fontoj"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Montri kromajn informojn pri la pakaĵoj. Nun nur la versionumeron"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Atendanta aŭtentokontrolon"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ne ĉesigi la demonon pro neaktiveco"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ne ŝargi iujn kromprogramojn"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Montri informojn pri interna traktado"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Ĉesigi kaj anstataŭigi jam aktivan demonon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Aŭskulti je la DBus-seancbuso (nur postulata por testado)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Efektivigi operaciojn en la elektita ‘chroot’"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Konservi profilstatojn en la specifan dosieron"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ne fari ajnan ŝanĝon al la sistemo (Nur uzinda por programistoj)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Instalita dosiero"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Instalitaj pakaĵoj"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Aldonis ŝlosilon el dosiero"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Aktualigis kaŝmemoron"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Serĉo farita"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Forigis fidatan ŝlosilon"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Forigis pakaĵojn"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Ĝisdatigis pakaĵojn"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Promociis sistemon"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Aplikis ŝanĝojn"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Riparis nekompletan instalon"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Riparis rompitajn dependecojn"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Aldonis programaran fonton"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Ebligis komponenton de la distribuo"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Forigis elŝutitajn pakaĵdosierojn"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reagordis instalitajn pakaĵojn"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Sukcesis"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Nuligita"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Fiaskis"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalas dosieron"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalas pakaĵojn"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Aldonas ŝlosilon el dosiero"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Aktualigas kaŝmemoron"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Forigas fidatan ŝlosilon"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Forigas pakaĵojn"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Ĝisdatigas pakaĵojn"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Promocias sistemon"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplikas ŝanĝojn"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Riparas nekompletan instalon"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Riparanta instalitan programaron"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Aldonas programaran fonton"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Ebligas komponenton de la distribuo"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Forigas elŝutitajn pakaĵdosierojn"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reagordas instalitajn pakaĵojn"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Ŝerĉanta"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalado de la pakaĵdosiero fiaskis"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalado de programaro fiaskis"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Fiaskis la aktualigo de la programara listo"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Fiaskis la forigo de la programaro-liveranto el la listo de fidata programaro"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Fiaskis forigo de programaro"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Fiaskis la programara ĝisdatigo"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Fiaskis la promociado de la sistemo"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Fiaskis la apliko de programaraj ŝanĝoj"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Fiaskis la riparo de nekompleta instalo"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Fiaskis la riparo de rompiĝintaj dependecoj"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Aldono de programara fonto fiaskis"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Ebligo de komponento de la distribuo fiaskis"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Fiaskis la forigo de elŝutitaj pakaĵdosieroj"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Serĉo ne sukcesis"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Aldonanta permesilŝlosilon"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kontrolu vian interret-konekton"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontrolu ĉu vi uzas deponejojn de eksteraj liverantoj. Se jes, malebligu "
+"ilin, ĉar ili estas kutima fonto da problemoj.\n"
+"Aldone, rulu la sekvan komandon en terminalo: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Eble aŭ la elektita dosiero ne estas GPG-ŝlosila dosiero aŭ ĝi estas fuŝita."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Ne eblis forigi la elektitan ŝlosilon. Kontrolu ĉu vi provizis validan "
+"fingropremon."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kontrolu ĉu vi nun uzas alian programar-mastruman ilon, ekz. Synaptic aŭ "
+"aptitue. Nur unu ilo samtempe povas fari ŝanĝojn."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Tio ĉi estas serioza problemo. Reprovu poste. Se tiu ĉi problemo prezentas "
+"sin denove, bonvolu raporti eraron al la programistoj"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Kontrolu la literumadon de la pakaĵnomo, kaj kontrolu ĉu la ĝusta deponejo "
+"estas ebligita."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Ne necesas ĝisdatigi."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Mankas neceso por instalado"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Ne necasas forigado."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Vi petis forigi pakaĵon kiu estas esenca parto de via sistemo."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "La konekto al la demono perdiĝis. Verŝajne la fona demono kolapsis."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Fiaskis la instalo aŭ forigo de programara pakaĵo."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La petita trajto ne estas subtenata"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Ŝajnas, ke programaderaro estas en aptdaemon, la programaro kiu permesas vin "
+"instali/forigi programarojn kaj por plenumi aliajn pakaĵadministradajn "
+"taskojn."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Eble tiu eraro estis kaŭzita de neinstalitaj aŭ neinstaleblaj nepraj "
+"pakaĵoj. Krome povas esti konflikto inter programaraj pakaĵoj kiuj ne rajtas "
+"esti instalitaj samtempe."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Tio necesas instalon de pakaĵoj el neaŭtentigitaj fontoj."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Eble la instalo fiaskis pro eraro en la koncerna programar-pakaĵo aŭ ĝi "
+"estis malĝuste ĉesita. Vi devas ripari ĝin antaŭ ol vi povas instali aŭ "
+"forigi ajnan plian programaron."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Bonvolu kopii la dosieron al via loka komputilo kaj kontroli la "
+"dosierpermesojn."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"La instalo de pakaĵo kiu atencas la kvalitonormojn estas nepermesata. Tio "
+"povas kaŭzi seriozajn problemojn sur via komputilo. Bonvole kontaktu la "
+"personon aŭ organizon, kiu provizis ĉi tiun pakaĵdosieron kaj inkluzivu la "
+"detalojn supre."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La elŝutita permesilŝlosilo, kiu estas postulata por ruli ĉi tiun eron de "
+"programaro, ne estas valida aŭ eble ne estas korekte instalita.\n"
+"Vidu la detalojn por pliaj informoj."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Ĉiuj disponeblaj ĝisdatigoj estas jam instalitaj."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"La permesilŝlosilo, kiu permesas vin uzi ĉi tiun eron de programaro, ne "
+"elŝuteblas. Bonvole kontrolu vian retkonekton."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Vi ne rajtas fari ĉi tiun agon."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Fiaskis elŝuti pakaĵdosierojn"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Fiaskis elŝuti deponejajn informojn"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakaĵaj dependecoj ne povas esti solvataj"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "La pakaĵa sistemo estas kaduka"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ŝlosilo estas neinstalita"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ŝlosilo estas neforigita"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Fiaskis ŝlosi la pakaĵadministrilon"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Fiaskis ŝargi la pakaĵliston"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakaĵo ne ekzistas"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakaĵo estas jam ĝisdata"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakaĵo jam estas instalita"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakaĵo ne estas instalita"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Fiaskis forigi estencan sistempakaĵon"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tasko ne povas esti monitorata aŭ kontrolata"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakaĵoperacio fiaskis"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Postulas instalon de nefidataj pakaĵoj"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Antaŭa instalo ne estis kompletigita"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "La pakaĵo estas malbonkvalita"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Ne eblis malfermi pakaĵdosieron"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nesubtenata trajto"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Elŝuto de permesilŝlosilo fiaskis"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Instalo de permesilŝlosilo fiaskis"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "La sistemo estas jam ĝisdata"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Okazis netraktebla eraro"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Atendas la starton de servo"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Atendas"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Atendas postulatan datumportilon"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Atendas ĝis aliaj programaraj administriloj ĉesas"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Atendas la fenestron de la agordodosiero"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Aktiva tasko"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Elŝutas"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Petanta pri programarfontoj"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Purigado"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Finita"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Nuligas"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Ŝargas programaran liston"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalado de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Agordado de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Forigado de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Tute foriganta %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Notanta malaperon de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Rulas post-instalan ekagilon %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Promociado de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Malpakanta %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Pretiganta instalon de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Pretiganta agordojn por %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Pretiganta forigon de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Pretiganta tutan forigon de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instalita"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s tute forigata"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s forigita"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Preta"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Aŭtentokontrolo malsukcesis"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Venigas"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Senokupe"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Reto ne disponeblas"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Procesanta %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB el %sB je %sB/s elŝutitaj"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB el %sB elŝutitaj"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detaloj"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Dosiero"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Elŝutis %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Elŝutis"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Lumdisko '%s' estas bezonata"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Metu la supre indikitan CD/DVD en ingo '%s' por instali programarajn "
+"pakaĵojn el ĝi."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "D_aŭrigi"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instali"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstali"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Forigi"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Plene forigi"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Ĝisdatigi"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Malĝisdatigi"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Preterpasi ĝisdatigon"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Bonvolu rigardi la suban ŝanĝoliston."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Aldona programaro devas esti instalita"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Aldona programaro devas esti reinstalita"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Aldona programaro devas esti forigita"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Aldona programaro devas esti plene forigita"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Aldona programaro devas esti ĝisdatigita"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Aldona programaro devas esti malpromociita"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Ĝisdatigoj estos transsaltataj"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Aldona ŝanĝoj nepras"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Entute %sB devos esti elŝutita."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB da diskspaco estos liberigita"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB da plia diskspaco estos uzata."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Ĉu anstataŭigi viajn ŝanĝojn en '%s' per pli nova versio de la agordo-"
+"dosiero?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Se vi ne scias kial la dosiero jam ekzistas, kutime vi povas senprobleme "
+"anstataŭigi ĝin."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "Ŝa_nĝoj"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Konservi"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Anstataŭigi"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detaloj"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Atendas ĝis %s ĉesas"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Elŝutas %(files)s"
+msgstr[1] "Elŝutas %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokaj deponejoj"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Elŝutanta el %s"
+msgstr[1] "Elŝutanta el %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Strukturo de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Priskribo de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Priskriba subskribo de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Disponeblaj pakaĵoj de %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Disponeblaj fontoj ĉe %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Disponeblaj tradukoj ĉe %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Tradukoj por la %s (%s) ĉe %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Tradukoj por la %s ĉe %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Tradukoj (%s) el %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakaĵo %s estas nedisponebla"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakaĵo %s ne estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versio %s de %s ne estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakaĵo %s estas jam instalita"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versio %s de %s ne estas havebla."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL de la ŝlosila servilo nevalidas: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Nevalida protokolo de la servilo: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Nevalida identigilo de ŝlosilo: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Fiaskis elŝuti kaj instali la ŝlosilon %s el %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Ne eblis instali ŝlosildosieron %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ne eblis forigi ŝlosilon kun fingropremo %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Ne eblas forigi pakaĵon %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versio %s de %s ne estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "La antaŭa versio %s de %s jam estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versio %s de %s jam estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versio %s de %s ne estas havebla"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Vi devas specifi version al kiu %s estu malpromociata"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "La pli posta versio %s de %s jam estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "La pakaĵo %s ne estas havebla en la eldono %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Ne eblas forigi pakaĵon %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"La pakaĵo ne provizas validan kontrolkampon 'Installed-Size' (Grando-"
+"Instalita). Vidu Debian-politikon 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La permesilŝlosilo estas malplena"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La permesilŝlosilo ne estas permesita por enhavi ruleblan kodon."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "La pado de la permesilŝlosilo %s nevalidas"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La permesilŝlosilo jam ekzistas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"La loko de la permesilŝlosilo ne sekuras, ekde ĝi enhavas simbolajn "
+"ligilojn. La pado %s ligas al %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "La dosierujo, kie instali la ŝlosilo ne ankoraŭ ekzistas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Skribado de la ŝlosildosiero en %s fiaskis"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "La sekvaj pakaĵoj havas neefektivigitajn dependecojn:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "sed ĝi estas virtuala pakaĵo"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "sed ĝi ne estas instalita"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "sed ĝi ne estas instalota"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "sed %s estas instalita"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "sed %s estas instalota"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Fiaskis la aldono de la ŝlosilo al la listo de fidata programaro"
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..246ad50
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,1499 @@
+# Spanish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-30 08:46+0000\n"
+"Last-Translator: Paco Molinero <paco@byasl.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista de claves de proveedores de confianza"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Para ver la lista de claves de confianza, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Eliminar los archivos de paquete descargado"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Para limpiar los archivos de paquetes descargados, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Cambiar la configuración del software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Para cambiar la configuración del software, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Cambiar el repositorio de software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Para cambiar la configuración de los repositorios, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalar archivo de paquete"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Para instalar este paquete, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualizar información de paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Para actualizar el catálogo de software, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalar o eliminar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Para instalar o eliminar software, necesita autenticarse."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalar software desde un repositorio de lista blanca altamente confiable."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Para instalar software, necesita autenticarse."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Añadir un repositorio nuevo e instalar paquetes desde él"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Para instalar software desde una fuente nueva, necesita autenticarse."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Añadir un repositorio nuevo de software comprado e instalar paquetes desde él"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Para instalar software comprado, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Actualizar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Para instalar software actualizado, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancelar la tarea de otro usuario"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Para cancelar los cambios de software de alguien más, necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Establecer un proxy para descargas de software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Para usar un servidor proxy para descargar software, necesita autenticarse."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Descargados %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Descargados %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "No tiene permitido realizar esta acción."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Poner en cola"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolviendo dependencias"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Se instalará el siguiente paquete NUEVO (%(count)s):"
+msgstr[1] "Se instalarán los siguientes paquetes NUEVOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Se actualizará el siguiente paquete (%(count)s):"
+msgstr[1] "Se actualizarán los siguientes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Se ELIMINARÁ e siguiente paquete (%(count)s):"
+msgstr[1] "Se ELIMINARÁN los siguientes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Se DESACTUALIZARÁ el siguiente paquete (%(count)s):"
+msgstr[1] "Se DESACTUALIZARÁN los siguientes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Se reinstalará el siguiente paquete (%(count)s):"
+msgstr[1] "Se reinstalarán los siguientes paquetes (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Se retuvo el siguiente paquete (%(count)s):"
+msgstr[1] "Se retuvieron los siguientes paquetes (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Se necesitan obtener %sB de archivadores."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Después de esta operación, se usarán %sB de espacio adicional en el disco."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Después de esta operación, se liberarán %sB de espacio adicional en el disco."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "¿Quiere continuar [S/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Para operar con más de un paquete debe colocar los nombres de los paquetes "
+"entre comillas:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Actualizar caché"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Intentar resolver dependencias rotas. Operación potencialmente peligrosa ya "
+"que podría tratar de eliminar muchos paquetes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Intente finalizar una instalación incompleta anterior"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalar los paquetes proporcionados"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalar los paquetes proporcionados"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Eliminar los paquetes proporcionados"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Eliminar los paquetes proporcionados incluyendo los archivos de configuración"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Desactualizar los paquetes dados"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsoleto: use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Actualice el sistema de forma segura"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Actualizar el sistema, posiblemente instalar y eliminar paquetes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Añadir al fabricante como confiable"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Añadir la id de clave de vendedor (también necesita --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utilice el servidor de claves dado para buscar las claves"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Añadir repositorio nuevo desde el deb-line dado"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especifique un archivo sources.list.d alternativo al cual deberían añadirse "
+"los repositorios."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Lista de claves de proveedores de confianza"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Eliminar la clave autenticada de la huella dada."
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurar paquetes instalados. Opcionalmente puede especificarse la "
+"prioridad mínima de las preguntas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La prioridad mínima de pregunta de debconf que se mostrará"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "No adjuntar a la terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permitir paquetes de fuente sin autenticar"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostrar información adicional acerca de los paquetes. Actualmente solo el "
+"número de versión"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Esperando la autenticación"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "No parar el demonio en caso de inactividad"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "No cargar ningún complemento"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostrar información del procesamiento interno"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Salir y sustituir un demonio que ya esté ejecutándose"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escuchar en el bus de sesión de DBus (necesario solo para pruebas"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realiza operaciones en el chroot dado"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Guardar estadísticas de perfil en el archivo especificado"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"No haga ningún cambio en el sistema (sólo para uso de los desarrolladores)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Archivo instalado"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquetes instalados"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Clave añadida desde archivo"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Caché actualizada"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Búsqueda realizada"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Clave de confianza eliminada"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paquetes desinstalados"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paquetes actualizados"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema actualizado"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Cambios aplicados"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instalación incompleta reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependencias rotas reparadas"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Origen de software añadido"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Activado componente de la distribución"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Eliminados los paquetes descargados"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfigurados los paquetes instalados"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Completado"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelado"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Falló"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalando archivo"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalando paquetes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Añadiendo clave desde archivo"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Actualizando caché"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Eliminando clave de confianza"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Desinstalando paquetes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Actualizando paquetes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Actualizando sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplicando los cambios"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparando instalación incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparando software instalado"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Añadiendo origen de software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Activando componente de la distribución"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Eliminando los archivos de paquetes descargados"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfigurando paquetes instalados"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Búsqueda"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Falló la instalación del archivo de paquete"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Falló la instalación de software"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Falla al añadir la clave a la lista de proveedores de software de confianza"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Falló la actualización de la lista de software"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Hubo un fallo al eliminar el proveedor de la lista de confianza"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Falló la eliminación de software"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Falló la actualización de software"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Falló la actualización del sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Falló la aplicación de cambios de software"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Falló la reparación de la instalación incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Falló la reparación de las dependencias rotas"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Falló añadir origen de software"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Falló activar componente de la distribución"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Falló la eliminación de archivos de paquetes descargados"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Falló la búsqueda"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Añadiendo clave de licencia"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Compruebe su conexión a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Compruebe si está usando repositorios de terceros. En tal caso, "
+"desactívelos, ya que son una fuente habitual de problemas.\n"
+"Posteriormente, ejecute el siguiente comando en un terminal: apt-get install "
+"-f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Puede que el archivo seleccionado no sea un archivo de clave GPG o que esté "
+"dañado."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"La calve seleccionada no se puede eliminar. Compruebe que suministró una "
+"huella válida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Compruebe si está actualmente ejecutando otra herramientas de gestión de "
+"software, por ejemplo Synaptic o aptitude. Solamente se puede usar una "
+"herramienta cada vez."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Este es un problema serio. Vuelva a intentarlo más tarde. Si el problema "
+"vuelve a aparecer, informe del error a los desarrolladores."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Compruebe la ortografía del nombre del paquete y si está activado el "
+"repositorio apropiado."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "No hay necesidad de una actualización."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "No hay necesidad de una instalación"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "No hay necesidad de una desinstalación."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Ha solicitado desinstalar un paquete que es parte esencial de su sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Se ha perdido la conexión con el demonio. Probablemente el demonio de "
+"segundo plano ha dejado de funcionar."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Falló al instalar o desinstalar un paquete de software."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La característica solicitada no está permitida."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Parece que hay un error de programación en aptdaemon, el software que le "
+"permite instalar o eliminar software y realizar otras tareas de gestión de "
+"paquetes relacionadas."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Este error podría deberse a que se necesitan paquetes de software "
+"adicionales que faltan o que no son instalables. También podría ser un "
+"conflicto entre paquetes de software que no pueden instalarse juntos."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Los paquetes a instalar necesarios de fuentes no autenticadas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"La instalación pudo haber fallado por un error en los paquetes "
+"correspondientes de software o se canceló de una manera incorrecta. Debe "
+"reparar esto antes de poder instalar o eliminar cualquier otro software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Copie el archivo en su equipo local y compruebe los servicios."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"No se permite la instalación de cualquier paquete que viole los estándares "
+"de calidad. Eso podría causar problemas serios a su equipo. Contacte con la "
+"persona u organización que le proporcionó este archivo de paquete e incluya "
+"los detalles a continuación."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clave de la licencia descargada requerida para ejecutar este software no "
+"es válida o no se pudo instalar correctamente.\n"
+"Vea los detalles para tener más información."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Todas las actualizaciones disponibles ya han sido instaladas."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"No pudo descargarse la clave de licencia que permite el uso de este "
+"software. Compruebe su conexión de red."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "No tiene los privilegios requeridos para realizar esta acción."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"O bien a proporcionado una contraseña incorrecta o ha cancelado la "
+"autorización.\n"
+"Puede que haya una razón técnica para este error si no ha visto un diálogo "
+"para la contraseña: su entorno de escritorio no proporciona un agente de "
+"sesión de PolicyKit"
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Falló al descargar los archivos de paquetes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Falló al descargar la información del repositorio"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Las dependencias del paquete no se pueden resolver"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "El paquete de sistema está roto"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "La clave no ha sido instalada"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "La clave no ha sido eliminada"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Falló al bloquear el gestor de paquetes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Falló al cargar la lista de paquetes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "El paquete no existe"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "El paquete ya esta actualizado a la fecha"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "El paquete ya está instalado"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "El paquete no está instalado"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Falló al desinstalar un paquete esencial del sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "La tarea no pudo monitorizarse o controlarse"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Falló la operación con el paquete"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Se requiere la instalación de paquetes no confiables"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Una instalación previa no se completó"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "El paquete es de mala calidad"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "El archivo de paquete no se puede abrir"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Característica no permitida"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Falló la descarga de la clave de licencia"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Fallo en la instalación de la clave de licencia"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "El sistema ya está actualizado"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "No se le pudo autorizar"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "No tiene permitido realizar esta acción"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ocurrió un error que no se puede manejar"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Esperando el servicio para iniciar"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Esperando"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Esperando el soporte requerido"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Esperando que los demás gestores de paquetes se cierren"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Esperando la solicitud del archivo de configuración"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Ejecutando tarea"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Descargando"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Consultando los orígenes del software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Limpiando"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Finalizado"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelando"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Cargando la lista de software"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Desinstalando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Borrando completamente %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Se detectó la desaparición de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Ejecutando activador de post-instalación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Actualizando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Desempaquetando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparando la instalación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparando la configuración %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparando la eliminación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparando para borrar completamente %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s completamente eliminado"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s eliminado"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Finalizado"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Falló la autenticación"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Consiguiendo"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactivo"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "La red no está disponible"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Procesando %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Descargados %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Descargados %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalles"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Archivo"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Descargado %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Descargado"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Se requiere el CD/DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Inserte el CD/DVD en «%s» para instalar desde él los paquetes de software."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Eliminar"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purgar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Actualizar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Desactualizar"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Omitir actualización"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Eche un vistazo a la lista de cambios."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Se necesita instalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Se debe reinstalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Se debe desinstalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Se debe desinstalar software adicional completamente"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Se debe actualizar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Se debe desactualizar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Se omitirán las actualizaciones"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Se necesitan cambios adicionales"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB se descargarán en total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Se liberará %sB de espacio en disco."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "se usarán %sB más de espacio en el disco."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"¿Reemplazar sus cambios en «%s» con la última versión del archivo de "
+"configuración?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Si no sabe por qué el archivo ya está allí, generalmente es seguro "
+"reemplazarlo."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Cambios"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Mantener"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Reemplazar"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalles"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Esperando a %s para salir"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Descargando %(files)s"
+msgstr[1] "Descargando %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositorio local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Descargando de %s"
+msgstr[1] "Descargando de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estructura de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descripción de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Firma de descripción de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquetes disponibles de %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Orígenes disponibles de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traducciones disponibles de %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traducciones para %s (%s) de %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traducciones para %s de %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traducciones (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "El paquete %s no está disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "El paquete %s no está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versión %s de %s no está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "El paquete %s ya está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versión %s de %s no está disponible."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "El URL del servidor de claves no es válido: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "El protocolo del servidor no es válido: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Id de clave inválido: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Fallo al descargar e instalar la clave %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "El archivo clave file %s no se puede instalar: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "La clave con la huella %s no se puede eliminar: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "El paquete %s no se puede eliminar."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versión %s de %s no está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "La antigua versión %s de %s ya está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versión %s de %s ya está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versión %s de %s no está disponible"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Necesita especificar una versión a la que desactualizar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "La última versión %s de %s ya está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "El paquete %s no está disponible en la distribución %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "El paquete %s no se puede eliminar"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"El paquete no proporciona un campo de control del tamaño de instalación "
+"válido. Vea la política de Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clave de la licencia está vacía."
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clave de la licencia no puede contener código ejecutable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "La ruta %s de la clave de licencia es invalida"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clave de licencia ya existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"La ubicación de la clave de licencia no es segura, ya que contiene enlaces "
+"simbólicos. La ruta %s asigna a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "El directorio para instalar la clave aún no existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Fallo al escribir el archivo de clave a: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Los siguientes paquetes tienen dependencias incumplidas:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "pero es un paquete virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "pero no está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "pero no va a ser instalado"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "pero %s está instalado"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "pero %s no está instalado"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Hubo un fallo al añadir la clave a la lista de proveedores de software de "
+#~ "confianza"
diff --git a/po/et.po b/po/et.po
new file mode 100644
index 0000000..690792a
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,1466 @@
+# Estonian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-10-14 09:15+0000\n"
+"Last-Translator: Märt Põder <boamaod@gmail.com>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"Language: et\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Näita usaldusväärsete müüjate võtmeid"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Usaldatud võtmete vaatamiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Eemalda allalaaditud pakettide failid"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Allalaaditud pakettide failide puhastamiseks pead ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Muuda tarkvara konfiguratsiooni"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Tarkvara seadete muutmiseks pead ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Tarkvaraallika vahetamine"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Tarkvaraallika sätete muutmiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Paigalda paketifail"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Selle paketi paigaldamiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Uuenda paketiinfot"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Tarkvara kataloogi uuendamiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Paki paigaldamine või eemaldamine"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Tarkvara paigaldamiseks või muutmiseks pead sa ennast autentima."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Lisa uus hoidla ja paigalda sealt pakette"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Tarkvara paigaldamiseks uuest allikast, pead ennast autentima."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Lisa uus ostetud tarkvara hoidla ja paigalda sealt pakette"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Et paigaldada ostetud tarkvara, pead ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Uuenda pakette"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Tarkvarauuenduste paigaldamiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Katkesta teise kasutaja toiming"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Kellegi teise tarkvara muudatuste tühistamiseks pead sa ennast autentima."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Tarkvara allalaadimiste jaoks proksi määramine"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Et kasutada proksi serverit tarkvara allalaadimiseks, pead sa ennast "
+"autentima."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "VIGA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Allalaaditud %sB %sB-st kiirusel %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Allalaaditud %sB %sB-st"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "VIGA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Sul pole lubatud seda toimingut teha."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Järjekorrastamine"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Sõltuvuste lahendamine"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Paigaldatakse %(count)s UUS pakett:"
+msgstr[1] "Paigaldatakse %(count)s UUT paketti:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Uuendatakse %(count)s pakett:"
+msgstr[1] "Uuendatakse %(count)s paketti:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Järgnev pakett eemaldatakse (%(count)s):"
+msgstr[1] "Järgnevad paketid eemaldatakse (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Järgnev pakett madaldatakse (%(count)s):"
+msgstr[1] "Järgnevad paketid madaldatakse (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Järgnev pakett taaspaigaldatakse (%(count)s):"
+msgstr[1] "Järgnevad paketid taaspaigaldatakse (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Järgnevat paketti on tagasi hoitud (%(count)s):"
+msgstr[1] "Järgnevaid pakette on tagasi hoitud (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Peab hankima %sB arhiive."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Pärast seda toimingut kasutatakse %sB rohkem kettaruumi."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Pärast seda toimingut vabaneb %sB kettaruumi."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Kas soovid jätkata [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Et töötada rohkem kui ühel paketil, lisa pakettide nimed jutumärkides:\n"
+"aptcon -- paigalda \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Uuenda puhvrit"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Katkiste sõltuvuste parandamise üritamine. Potentsiaalselt ohtlik toime, "
+"kuna see võib üritada mingit paketti eemaldada."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Püüa lõpetada eelnev poolik paigaldus"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Paigalda need pakid"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Paigalda uuesti need pakid"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Eemalda see pakk"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Eemalda see pakk koos konfiguratsioonifailidega"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Antud pakettide madaldamine"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Aegunud: Palun kasuta --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Uuenda süsteemi turvaliselt"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Uuenda süsteemi, võimalik, et paigaldatakse või eemaldatakse pakette"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Lisa tarnija usaldusväärsete hulka"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Lisa tarnija võtme-id (vajab lisaks --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Lisa see võtmeserver otsitavatesse võtmetesse"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Lisa uus tarkvaraallikas sellest deb-line`st"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "Määra alternatiivne sources.list.d fail, mille tarkvaraallikad lisada"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Loetle usaldatud tarnijate võtmed"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Eemalda antud sõrmejäljega võti"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Paigaldatud pakettide taasseadistamine. Soovi korral saab vähima "
+"prioriteediga küsimust täpsustada"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Vähim debconf pküsimuse rioriteeti saab kuvada"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ära ühenda apt'i terminali"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Luba paketid autentimata allikatest"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Pakettide täiendava teabe kuvamine. Praegu ainult versiooni arv"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Autentimise ootamine"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Deemoni tööd tegevusetuse pärast ei lõpetata"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ei laadita ühtegi pluginat"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Sisemiste protsesside informatsiooni kuvamine"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Lõpeta ja asenda juba käivitatud deemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBus seansi kuulamine (Vajalik ainult testimiseks)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Operatsioonide sooritamine antud chroot'is"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Talleta profiili andmed valitud faili"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Süsteemi ei tehta mingeid muudatusi (kasulik ainult arendajatele)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Paigaldatud fail"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paigaldati paketid"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Lisati võti failist"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Uuendati vahemälu"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Otsing lõpetatud"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Eemaldati usaldatud võti"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Eemaldati paketid"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Uuendati pakette"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Uuendatud süsteem"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Muudatused rakendati"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Mittetäielik paigaldus on parandatud"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Katkised sõltuvused on parandatud"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Tarkvaraallikas lisatud"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Jaotuskomponent lubatud"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Allalaaditud paketifailid eemaldatud"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Paigaldatud paketid taasseadistatud"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Edukas"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Tühistatud"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Nurjus"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Faili paigaldamine"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Pakettide paigaldamine"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Võtme lisamine failist"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Puhvri uuendamine"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Usaldatud võtme eemaldamine"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Pakettide eemaldamine"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Pakettide uuendamine"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Süsteemi uuendamine"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Muudatuste rakendamine"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Mittetäieliku paigalduse parandamine"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Paigaldatud tarkvara parandamine"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Tarkvaraallika lisamine"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Distributsiooni jaotuskomponendi lubamine"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Allalaaditud paketifailide eemaldamine"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Paigaldatud pakettide taasseadistamine"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Otsimine"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Paketifaili paigaldamine nurjus"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Tarkvara paigaldamine nurjus"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Tarkvaraloendi uuendamine nurjus"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Tootja eemaldamine usaldusväärsete tarkvaratootjate loetelust nurjus"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Tarkvara eemaldamine nurjus"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Tarkvara uuendamine nurjus"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Süsteemi uuendamine nurjus"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Tarkvaramuudatuste rakendamine nurjus"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Mittetäieliku paigalduse parandamine nurjus"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Katkiste sõltuvuste parandamine nurjus"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Takrvaraallika lisamine nurjus"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Jaotuskomponendi lubamine nurjus"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Paigaldatud paketi failide eemaldamine nurjus"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Otsing nurjus"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Litsentsivõtme lisamine"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kontrolli oma internetiühendust."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontrolli, kas kasutad kolmanda osapoole tarkvaraallikaid. Kui nii, siis "
+"keela need, kuna tavaliselt need on probleemide põhjuseks.\n"
+"Järgmiseks käivita terminalis järgnev käsk: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Valitud fail pole GPG võtmefail või see on rikutud."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Valitud võtit polnud võimalik eemaldada. Veendu, et sisestasid õige "
+"sõrmejälje."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Vaata, ega sa ei kasuta hetkel mõnda teist tarkvaratööriista nagu Synaptic "
+"või aptitude. Muudatusi tohib teha ainult üks programm korraga."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"See on tõsine probleem. Proovi hiljem uuesti. Kui probleem esineb uuesti, "
+"raporteeri sellest veast arendajatele."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Kontrolli paketi nime õigekirja ja et õige tarkvaraallikas on lubatud."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Uuendamiseks puudub vajadus."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Paigaldamiseks puudub vajadus"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Eemaldamiseks puudub vajadus."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Sa palusid eemaldada paketi, mis on süsteemi oluline osa."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Ühendus deemoniga katkes. Kõige tõenäolisemalt jooksis taustadeemon kokku."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Tarkvara paigaldamine või eemaldamine nurjus."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Soovitud valikut ei toetata"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Aptdaemon'is, mis võimaldab tarkvara paigaldadamist/eemaldamist ning teisi "
+"paketihalduse toiminguid, ilmnes programmitõrge."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Selle vea võis põhjustada vajalik lisatarkvara pakett, mis aga puudub või "
+"pole paigaldatav. Lisaks võib tekkida konflikt tarkvarapakettide vahel, mida "
+"pole lubatud samaaegselt paigaldada."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Paigaldus võis nurjuda vea tõttu vastavas tarkvarapaketis või katkestati see "
+"mittesobival viisil. Enne, kui saab muud tarkvara paigaldada või eemaldada, "
+"tuleb see parandada."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Palun kopeeri fail oma kohalikku arvutisse ja kontrolli faili õigusi."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Paketi paigaldus, mis rikub standardi kvaliteedi pole lubatud. See võib "
+"õhjustada sinu arvutile tõsiseid probleem.e Palun kontakteeru paketi faili "
+"pakkunud isiku või organisatsiooniga ja kaasa allpool detailid."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Selle tarkvaratüki kasutamiseks vajalik litsentsivõti on kehtetu või pole "
+"võimalik seda õigesti paigaldada.\n"
+"Täpsema info saamiseks vaata üksikasju."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Kõik võimalikud uuendused on juba paigaldatud."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Selle tarkvaratüki kasutamiseks vajaliku litsentsivõtme allalaadimine "
+"nurjus. Palun, kontrolli oma võrguühendust."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Sul pole lubatud seda toimingut teha."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Paketifailide allalaadimine nurjus"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Tarkvaraallika teabe allalaadimine nurjus"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Paketi sõltuvusi pole võimalik lahendada"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Paketisüsteem on katki"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Võtit ei paigaldatud"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Võtit ei eemaldatud"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Paketihalduri lukustamine nurjus"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Paketiloendi laadimine nurjus"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paketti ei eksisteeri"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakett on juba ajakohane"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakett on juba paigaldatud"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakett ei ole paigaldatud"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Olulise süsteemipaketi eemaldamine nurjus"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Toimingut pole võimalik jälgida ega juhtida"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Paketitoiming nurjus"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Nõuab mitteusaldusväärsete pakettide paigaldamist"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Eelnev paigaldus ei jõudnud lõpule"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Pakett on halva kvaliteediga"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Paketi faile ei ole võimalik avada"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Toetamata omadus"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Litsentsivõtme allalaadimine nurjus"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Litsentsivõtme paigaldamine nurjus"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Süsteem on juba ajakohane"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Tekkis käsitlematu viga"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Teenuse käivitumise järel ootamine"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Ootamine"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Nõutud andmekandja järel ootamine"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Teiste tarkvarahaldurite lõpetamise järel ootamine"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Seadistusfaili kohta käiva küsimuse järel ootamine"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Käesolev toiming"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Allalaadimine"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Tarkvaraallikate pärimine"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Puhastamine"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Lõpetatud"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Tühistamine"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Tarkvaraloendi laadimine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s paigaldamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s seadistamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s eemaldamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s täielik eemaldamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s kadumise märgitsemine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "%s järelpaigalduse sooritamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s uuendamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s lahtipakkimine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Ettevalmistused %s paigaldamiseks"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s seadistuse ettevalmistamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s eemaldamise ettevalmistamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s täieliku eemalduse ettevalmistamine"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s on paigaldatud"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s on täielikult eemaldatud"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s on eemaldatud"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Valmis"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentimine nurjus"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Allalaadimine"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Jõude"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Võrk pole saadaval"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s protsessimine"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Allalaaditud %sB %sB-st kiirusel %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Allalaaditud %sB %sB-st"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Üksikasjad"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fail"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Allalaaditud %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Allalaaditud"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Vajalik on CD/DVD plaat '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Palun sisesta CD/DVD plaadilugejasse '%s', et paigaldada tarkvara paketid."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Jätka"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Paigalda"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Paigalda uuesti"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Eemalda"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Eemalda täielikult"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Uuenda"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Madalda"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Jäta uuendamine vahele"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Palun vaata all olevat muudatuste loendit."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Täiendav tarkvara tuleb paigaldada"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Täiendav tarkvara tuleb uuesti paigaldada"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Täiendav tarkvara tuleb eemaldada"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Täiendav tarkvara tuleb täielikult eemaldada"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Täiendav tarkvara tuleb uuendada"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Täiendav tarkvara tuleb asendada vanemaga"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Uuendused jäetakse vahele"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Vajalikud on lisamuudatused"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Kokku tuleb allalaadida %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB kettaruumi vabaneb."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB lisakettaruumi võetakse kasutatakse."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Kas asendada muudatustega fail '%s' hilisema seadistusfaili versiooniga?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Kui sa ei tea, miks see fail juba seal on, on selle asendamine tavaliselt "
+"turvaline."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Muudatused"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Jäta alles"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Asenda"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Üksikasjad"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Ootan %s sulgemist"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Laaditakse alla %(files)s"
+msgstr[1] "Laaditakse alla %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "kohalik varamu"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Allalaadimine asukohast %s"
+msgstr[1] "Allalaadimine asukohtadest %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s struktuur"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s kirjeldus"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakett %s ei ole kättesaadav"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakett %s ei ole paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versioon %s %s pole paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakett %s on juba paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versioon %s %s pole saadaval"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Võtme %s asukohast %s allalaadimine ja paigaldamine nurjus:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Võtmefaili %s polnud võimalik paigaldada: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Võti koos sõrmejäljega %s ei saadud eemaldada: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakett %s ei ole eemaldatav."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versioon %s %s pole paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Endine versioon %s %s on juba paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versioon %s %s on juba paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versioon %s %s pole saadaval"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Sa pead täpsustama versiooni, milleni %s madaldada"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Hiljutine versioon %s %s on juba paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakett %s pole %s väljalaskes saadaval"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakett %s ei ole eemaldatav"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Pakett ei paku kehtivat juhtvälja paigaldussuurust. Vaata Debiani poliitikat "
+"5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Litsentsivõti on tühi"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Litsentsivõti ei tohi sisaldada käivitatavat koodi"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Litsentsivõtme asukoht %s on vigane"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Litsentsivõti on juba olemas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Järgmistel pakettidel on lahendamata sõltuvused:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "aga see on virtuaalne pakett"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "aga see pole paigaldatud"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "aga seda ei paigaldata"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "aga %s on paigaldatud"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "aga %s paigaldatakse"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Võtme lisamine usaldusväärsete tarkvaratootjate loetelusse nurjus"
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..e91e080
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,1477 @@
+# Basque translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-26 20:21+0000\n"
+"Last-Translator: Ibai Oihanguren <Unknown>\n"
+"Language-Team: Basque <eu@li.org>\n"
+"Language: eu\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Konfidantzazko saltzaileak"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Konfidantzazko gakoen zerrenda ikusteko autentikatu egin behar duzu"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Kendu deskargatutako pakete-fitxategiak"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Deskargatutako pakete-fitxategiak garbitzeko, autentikatu beharra duzu"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Aldatu software-konfigurazioa"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Software-ezarpenak aldatzeko, autentifikatu behar duzu"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Aldatu softwarearen errepositorioa"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Software errepositorioaren ezarpenak aldatzeko autentikatu egin behar zara"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Pakete-fitxategia instalatu"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Pakete hau instalatzeko zure burua identifikatu behar duzu"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Pakete-informazioa eguneratu"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Software katalogoa eguneratzeko autentikatu egin behar zara"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Paketeak gehitu edo kendu"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Softwarea instalatu edo kentzeko, zure burua identifikatu behar duzu"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instalatu softwarea zerrenda zuriko errepositorio erabat fidagarritik."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Softwarea instalatzeko autentifikatu beharra daukazu."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Gehitu errepositorio berria eta instalatu paketeak bertatik"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Iturri berri bateko softwarea instalatzeko, zure burua identifikatu behar "
+"duzu"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Erositako softwarearentzako errepositorio berria gehitu eta instalatu "
+"paketeak bertatik"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Erositako softwarea instalatzeko autentikatu egin behar zara"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Paketeak bertsio-berritu"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Eguneratutako softwarea instalatzeko zure burua identifikatu behar duzu"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Beste erabiltzaile baten ataza ezeztatu"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Beste norbaiten softwarea aldaketak ezeztatzeko autentikatu egin behar zara"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Softwarea deskargatzeko proxy bat ezarri."
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Softwarea deskargatzeko proxy zerbitzari bat erabiltzeko autentikatu egin "
+"behar duzu"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROREA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB / %sB deskargatuta (%sB/s)"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB / %sB deskargatuta"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROREA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Ez duzu ekintza hau egiteko baimenik"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Ilararatzen"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Menpekotasunak ebazten"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Hurrengo pakete BERRIA instalatuko da (%(count)s):"
+msgstr[1] "Hurrengo pakete BERRIAK instalatuko dira (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Hurrengo pakete BERRIA berrituko da (%(count)s):"
+msgstr[1] "Hurrengo pakete BERRIAK berrituko dira (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Hurrengo paketea EZABATUKO da (%(count)s):"
+msgstr[1] "Hurrengo paketeak EZABATUKO dira (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Ondorengo paketearen BERTSIO ZAHARRAGOA instalatuko da (%(count)s):"
+msgstr[1] "Ondorengo paketeen BERTSIO ZAHARRAGOA instalatuko da (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Hurrengo paketea berriz instalatuko da (%(count)s):"
+msgstr[1] "Hurrengo paketeak berriz instalatuko dira (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Ondorengo paketearen bertsioa mantendu da (%(count)s):"
+msgstr[1] "Ondorengo paketeen bertsioa mantendu da (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB fitxategi lortu behar dira."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Eragiketa honen ostean, diskoko %sB gehiago erabiliko dira."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Eragiketa honen ostean, diskoko %sB libratuko dira."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Jaraitzea nahi duzu [B/e]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Pakete bat baino gehiagoren gaineko eragiketak egiteko, erabiliko komatxo "
+"bikoitzak:\n"
+"aptdcon --install \"urlia sandia\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Katxea eguneratu"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Saiatu hautsitako menpekotasunak konpontzen. Eragiketa arriskutsua izan "
+"daiteke hainbat pakete ezabatu ditzakeelako."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Saiatu aurretik amaitu gabeko instalazioa bukatzen"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Esandako paketeak instalatu"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Esandako paketeak berriz instalatu"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Esandako paketeak ezabatu"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Esandako paketeak eta konfigurazio fitxategiak ezabatu"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Instalatu pakete hauen bertsio zaharragoa"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Baztertuta: erabili mesedez --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Sistema era seguruan eguneratu"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Sistema eguneratu, seguraski paketeak instalatu eta ezabatuz"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Saltzailea konfidantzazkoen zerrendara gehitu"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Saltzailearen gakoa gehitu (--keyserver ere behar du)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Esandako zerbitzaria erabili gakoak bilatzeko"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Errepositorio berria gehitu esandako deb lerroa erabilita"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Errepositorioen zerrenda gehitzeko beste sources.list.d fitxategi bat "
+"erabili."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Zerrendatu konfidantzazko saltzaileen giltzak"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Birkonfiguratu instalatutako paketeak. Galderen gutxieneko lehentasuna "
+"zehazteko aukera dago"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Erakutsiko den galderaren gutxieneko debconf lehentasuna"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ez erantsi apt terminalera"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Onartu autentifikatu gabeko jatorrietako paketeak"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Paketeei buruzko informazio gehiago erakutsi. Oraingoz bertsio-zenbakia "
+"bakarrik"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Autentikazioaren zai"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ez itzali daemon-a inaktibitateagatik"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ez kargatu pluginik"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Barneko prozesu-informazioa erakutsi"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Jadanik martxan dagoen daemon bat itxi eta ordezkatu"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBus saioko bus-ean entzun (Probak egiteko bakarrik beharrezkoa"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Profilaren estatistikak zehaztutako fitxategian gorde"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ez egin aldaketarik sistemari (garatzaileek erabiltzeko soilik)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Instalatu den fitxategia"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paketeak instalatuta"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Fitxategiko gakoa gehituta"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache-a eguneratuta"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Bilaketa eginda"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Gako fidagarria kenduta"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paketeak ezabatuta"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paketeak eguneratuta"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema bertsio-berrituta"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Aldaketak aplikatuta"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Osatu gabeko instalazioa konponduta"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Hautsitako menpekotasunak konponduta"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Software-jatorria gehitu da"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Deskargatutako pakete-fitxategiak ezabatu dira"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Instalatutako paketeak berkonfiguratu dira"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Arrakasta"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Ezeztatuta"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Huts egin du"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Fitxategia instalatzen"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Paketeak instalatzen"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Fitxategiko gakoa gehitzen"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Cache-a eguneratzen"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Gako fidagarria kentzen"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Paketeak ezabatzen"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Paketeak eguneratzen"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Sistema bertsio-berritzen"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aldaketak aplikatzen"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Osatu gabeko instalazioa konpontzen"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Instalatutako softwarea konpontzen"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Software-jatorria gehitzen"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Banaketaren osagaia gaitzen"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Deskargatutako pakete-fitxategiak ezabatzen"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Instalatutako paketeak berkonfiguratzen"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Bilatzen"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Pakete-fitxategiaren instalazioak huts egin du"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Softwarearen instalazioak huts egin du"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Software-zerrenda berritzeak huts egin du"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Software-hornitzaile fidagarrien zerrendatik hornitzailea kentzeak huts egin "
+"du"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Softwarea ezabatzeak huts egin du"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Softwarea eguneratzeak huts egin du"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Sistema bertsio-berritzeak huts egin du"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Software-aldaketak aplikatzeak huts egin du"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Osatu gabeko instalazioa konpontzean huts egin du"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Hautsitako menpekotasunak instalatzeak huts egin du"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Huts egin du software-jatorria gehitzeak"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Banaketaren osagaia gaitzeak huts egin du"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Huts egin du deskargatutako pakete-fitxategiak ezabatzeak"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Bilaketak huts egin du"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Lizentzia-gakoa gehitzen"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Egiaztatu zure Interneterako konexioa."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Egiaztatu hirugarrengoen errepositorioak darabiltzazun. Hala bada, ezgaitu "
+"itzazu, arazoak ekarri ohi dituzte eta.\n"
+"Honez gain, exekutatu agindu hau terminal batean: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Hautatutako fitxategia ez da GPG gako-fitxategia edo apurtuta dago."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Egiaztatu beste software-kudeaketa tresnarik irekita daukazun, adibidez "
+"Synaptic edo aptitude. Aldaketak egiteko aldi berean tresna bakar bat "
+"onartzen da."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Arazo larria da hau. Saiatu berriro geroxeago. Arazo hau berriro agertzen "
+"bada, mesedez eman errorearen berri garatzaileei."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Egiaztatu pakete-izena ondo idatzi duzula, eta errepositorio egokia gaituta "
+"dagoela."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Ez dago eguneratzeko beharrik."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Ez dago instalatzeko beharrik"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Ez dago ezabatzeko beharrik."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Zure sistemarentzat funtsezkoa den pakete bat ezabatzeko eskatu duzu."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Daemon-arekiko konexioa galdu da. Ziurrenik, atzealdeko daemon-a kraskatu da."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Huts egin du software-pakete bat instalatu edo ezabatzeak."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Eskatutako ezaugarria ez da sostengatzen."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Litekeena da instalazioak huts egin izana dagokion software-paketearen "
+"errore baten ondorioz edo instalazioa behar ez bezala eten delako. Software "
+"gehiago instalatu edo ezabatzeko aurrena arazo hau konpondu behar duzu."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Kopiatu fitxategia ordenagailu lokalera eta egiaztatu fitxategiaren baimenak."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Kalitate maila estandarra betetzen ez duen pakete baten instalazioa ez dago "
+"baimendurik. Honek arazo larriak sor litzake ordenagailuan. Jarri "
+"harremanetan pakete-fitxategi hau eman dizun pertsona edo erakundearekin eta "
+"jakinarazi iezazkiozu jarraian datozen xehetasunak."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Deskargatutako lizentzia-gakoa, software hau exekutatzeko beharrezkoa, ez da "
+"baliozkoa edo ezin izan da behar bezala\n"
+"instalatu. Ikusi xehetasunak informazio gehiagorako."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Eskuragarri zeuden bertsio-berritze guztiak insalatu dira dagoeneko."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Software hau erabiltzea ahalbidetzen dizun lizentzia-gakoa ezin izan da "
+"deskargatu. Egiaztatu zure sare-konexioa."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Ez duzu ekintza hau egiteko baimenik"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Ezin izan dira pakete-fitxategiak deskargatu"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Ezin izan da errepositorio-informazioa deskargatu"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Ezin dira paketeen menpekotasunak ebatzi"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakete-sistema apurtuta dago"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ez da gakoa instalatu"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ez da gakoa kendu"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Ezin izan da pakete-kudeatzailea blokeatu"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Ezin izan da pakete-zerrenda kargatu"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paketea ez da existitzen"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paketea dagoeneko eguneratuta dago"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Jadanik instalatuta dago paketea"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paketa ez dago instalatuta"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Ezin izan da sistemarentzako funtsezkoa den paketea ezabatu"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Ezin da ataza monitorizatu edo kontrolatu"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Huts egin du pakete-ekintzak"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Pakete ez fidagarrien instalazioa behar du"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Ez da aurreko instalazioa osatu"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paketea kalitate txarrekoa da"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pakete-fitxategia ezin izan da ireki"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Jasan gabeko ezaugarria"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Huts egin du lizentzia-gakoa deskargatzeak"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Huts egin du lizentzia-gakoa instalatzeak"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistema dagoeneko eguneratuta dago"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Errore manieazina gertatu da"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Zerbitzua hasi arte itxaroten"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Zain"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Beharrezko euskarriari itxaroten"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Beste software-kudeatzaileak itxi arte itxaroten"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Konfigurazio-fitxategi elkarrizketari itxaroten"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Ataza exekutatzen"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Deskargatzen"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Software-jatorriak kontsultatzen"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Garbitzen"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Burututa"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Ezeztatzen"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Software-zerrenda kargatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s instalatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s konfiguratzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s ezabatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s guztiz ezabatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s paketea desagertu dela antzeman da"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Instalazio-ondorengo %s abiarazlea exekutatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s bertsio-berritzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s paketetik ateratzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s instalatzeko prestatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s konfiguratzeko prestatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s ezabatzeko prestatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s guztiz ezabatzeko prestatzen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instalatu da"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s guztiz ezabatu da"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s ezabatu da"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Egina"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentifikazioak huts egin du"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Eskuratzen"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inaktibo"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Sarea ez dago eskuragarri"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s prozesatzen"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB / %sB deskargatuta (%sB/s)"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB / %sB deskargatuta"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Xehetasunak"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fitxategia"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB deskargatuta"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Deskargatuta"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "'%s' CD/DVDa behar da"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Sartu goiko CD/DVDa '%s' unitatean eta instalatu software-paketeak bertatik."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Jarraitu"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalatu"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Berrinstalatu"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Ezabatu"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Araztu"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Bertsio-berritu"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Itzuli aurreko bertsiora"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Saltatu bertsio-berritzea"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Ikusi aldaketen zerrenda azpian."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Software gehigarria instalatu beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Software gehigarria berrinstalatu beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Software gehigarria ezabatu beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Software gehigarria araztu beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Software gehigarria bertsio-berritu beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Software gehigarria aurreko bertsiora itzuli beharra dago"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Eguneraketak saltatuko dira"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Aldaketa gehigarriak egin behar dira"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB deskargatuko dira guztira."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB libratuko dira diskoan."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Diskoko %sB gehiago erabiliko dira."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Zure '%s' fitxategiko aldaketak ordezkatu konfigurazio-fitxategiaren bertsio "
+"berriago batekin?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ez badakizu zergatik existitzen den fitxategi hori dagoeneko, normalean "
+"ordezkatzea segurua da."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Aldaketak"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Mantendu"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Ordezkatu"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Xehetasunak"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "%s itxi arte itxaroten"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Paketea deskargatzen: %(files)s"
+msgstr[1] "Paketeak deskargatzen: %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "errepositorio lokala"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Hemendik deskargatzen: %s"
+msgstr[1] "Hemendik deskargatzen: %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s(r)en egitura"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s(r)en deskribapena"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s(r)en sinadura-deskribapena"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s(e)ko pakete eskuragarriak"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s(e)ko jatorri eskuragarriak"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s(e)ko itzulpen eskuragarriak"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) hizkuntzarako itzulpenak, hemendik: %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s hizkuntzarako itzulpenak, hemendik: %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Itzulpenak (%s), hemendik: %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "%s paketea ez dago eskuragarri"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "%s paketea ez dago instalatuta"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s / %s bertsioa ez dago instalatuta"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s paketea dagoeneko instalatuta dago"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s / %s bertsioa ez dago eskuragarri."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Gako-zerbitzariaren URLa baliogabea da: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Huts egin du %s gakoa deskargatu eta instalatzeak (hemendik: %s):\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "%s gako-fitxategia ezin izan da instalatu: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s paketea ezin da ezabatu."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "%s / %s bertsioa ez dago instalatuta"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "%s / %s bertsio zaharragoa dagoeneko instalatuta dago"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "%s / %s bertsioa dagoeneko instalatuta dago"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s / %s bertsioa ez dago eskuragarri"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s paketea ez dago eskuragarri %s bertsiorako."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "%s paketea ezin da ezabatu"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Ondorengo paketeek bete gabeko menpekotasunak dituzte:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "baina pakete birtuala da"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Gakoa software-hornitzaile fidagarrien zerrendara gehitzeak huts egin du"
diff --git a/po/fa.po b/po/fa.po
new file mode 100644
index 0000000..a37a2d7
--- /dev/null
+++ b/po/fa.po
@@ -0,0 +1,1419 @@
+# Persian translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2010-05-29 11:01+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Persian <fa@li.org>\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..ea6e054
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,1491 @@
+# Finnish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-08 14:13+0000\n"
+"Last-Translator: Heikki Mattila <Unknown>\n"
+"Language-Team: Finnish <fi@li.org>\n"
+"Language: fi\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Luettele luotettujen toimittajien avaimet"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Luotettujen avaimien luettelon näyttö vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Poista ladatut pakettitiedostot"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Sinun tulee tunnistautua siivotaksesi noudetut pakettitiedostot"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Muuta ohjelmistoasetuksia"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Sinun tulee tunnistautua muuttaaksesi ohjelmistoasetuksia"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Vaihda ohjelmalähde"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Ohjelmalähteiden asetuksien muuttaminen vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Asenna pakettitiedosto"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Paketin asennus vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Päivitä pakettitiedot"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Ohjelmistoluettelon päivitys vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Asenna tai poista paketteja"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Ohjelmistojen asennus tai poisto vaatii tunnistautumisen."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Asenna ohjelmistoja vahvasti luotetuista erikseen sallituista "
+"ohjelmalähteistä."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Ohjelmistojen asennus vaatii tunnistautumisen."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Lisää uusi ohjelmalähde ja asenna sieltä paketteja"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Ohjelmistojen asennus uudesta lähteestä vaatii tunnistautumisen."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Lisää uusi maksullisten sovellusten ohjelmalähde ja asenna sieltä paketteja"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Maksullisten ohjelmistojen asennus vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Päivitä paketit"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Päivitettyjen ohjelmistojen asennus vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Peru toisen käyttäjän tehtävä"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Toisen tekemien ohjelmistomuutosten keskeyttäminen vaatii tunnistautumisen."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Aseta välityspalvelin ohjelmistojen noutamista varten"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Välityspalvelimen käyttö ohjelmistojen lataamiseksi vaatii tunnistautumisen."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "VIRHE"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Ladattu %sB / %sB (%sB/s)"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Noudettu %sB / %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "VIRHE:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Sinulla ei ole oikeutta suorittaa tätä toimintoa."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Asetetaan jonoon"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Ratkaistaan riippuvuuksia"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Seuraava UUSI paketti asennetaan (%(count)s):"
+msgstr[1] "Seuraavat UUDET paketit asennetaan (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Seuraava paketti päivitetään (%(count)s):"
+msgstr[1] "Seuraavat paketit päivitetään (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Seuraava paketti POISTETAAN (%(count)s):"
+msgstr[1] "Seuraavat paketit POISTETAAN (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Seuraava paketti VANHENNETAAN (%(count)s):"
+msgstr[1] "Seuraavat paketit VANHENNETAAN (%(count)s):(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Seuraava paketti asennetaan uudelleen (%(count)s):"
+msgstr[1] "Seuraavat paketit asennetaan uudelleen (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Seuraava paketti jätetään päivittämättä (%(count)s):"
+msgstr[1] "Seuraavat paketit jätetään päivittämättä (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Noudetaan %sB."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Tämän toiminnon jälkeen %sB lisää levytilaa tullaan käyttämään."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Tämän toiminnon jälkeen %sB lisää levytilaa tulee vapautumaan."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Haluatko jatkaa [Y/n]"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Laita pakettien nimet lainausmerkkien sisälle suorittaaksesi toimenpiteitä "
+"useammalle kuin yhdelle paketille:\n"
+"aptdcon --install \"paketti1 paketti2\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Päivitä välimuisti"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Yritä selvittää rikkoutuneet riippuvaisuudet. Tämä on mahdollisesti "
+"vaarallinen toimenpide, sillä se saattaa yrittää poistaa useita paketteja."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Yritä suorittaa loppuun aiempi kesken jäänyt asennus"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Asenna annetut paketit"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Asenna annetut paketit uudelleen"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Poista annetut paketit"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Poista annetut paketit, mukaan lukien asetustiedostot"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Varhenna paketit"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Vanhentunut: käytä valintaa --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Päivitä järjestelmä turvallisella tavalla"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Päivitä järjestelmä mahdollisesti samalla asentaen tai poistaen paketteja"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Lisää toimittaja luotettuihin"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Lisää toimittajan avaintunniste (tarvitsee myös valitsimen --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Käytä annettua avainpalvelinta avaimien hakuun"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Lisää uusi lähde annetulla deb-riviltä"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Määritä vaihtoehtoinen sources.list.d-tiedosto, johon lähteet lisätään."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Luettele luotetut toimittaja-avaimet"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Poista annetun sormenjäljen mukainen luotettu avain"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Tee asennettujen pakettien asetukset uudelleen. Kysyttävien kysymysten "
+"pienin tärkeysluokitus voidaan asettaa erikseen."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Pienin tärkeysaste näytettäville kysymyksille."
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Älä kiinnitä apt-päätteeseen"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Salli paketit varmentamattomista lähteistä"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Näytä lisätietoja paketeista (tällä hetkellä vain versionumero)."
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Odotetaan tunnistautumista"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Älä sammuta taustaprosessia inaktiivisuuden takia"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Älä lataa mitään liitännäisiä"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Näytä sisäiset käsittelytiedot"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Lopeta ja korvaa jo käynnissä oleva taustaprosessi"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Kuuntele DBus-istuntoväylää (Vaadittu ainoastaan testausta varten"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Suorita toimenpiteet määritetyssä chroot-ympäristössä"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Tallenna profiilin tiedot tiedostoon"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Älä tee järjestelmään mitään muutoksia (hyödyllinen vain kehittäjille)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Asennettiin tiedosto"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Asennetut paketit"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Avain lisätty tiedostosta"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Välimuisti päivitetty"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Haku valmis"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Poistettiin luotettu avain"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Poistetut paketit"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Päivitetyt paketit"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Järjestelmä päivitetty"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Muutokset toteutettu"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Korjattiin keskeneräinen asennus"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Korjattiin rikkinäiset riippuvuudet"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Ohjelmalähde lisätty"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Otettiin jakelukomponentti käyttöön"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Poistettiin ladatut pakettitiedostot"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Asennettujen pakettien asetukset tehty uudelleen"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Onnistui"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Peruttiin"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Epäonnistui"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Asennetaan tiedostoa"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Asennetaan paketteja"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Lisätään avainta tiedostosta"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Päivitetään välimuistia"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Poistetaan luotettua avainta"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Poistetaan paketteja"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Päivitetään paketteja"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Päivitetään järjestelmää"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Toteutetaan muutoksia"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Korjataan keskeneräistä asennusta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Korjataan asennettua ohjelmistoa"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Lisätään ohjelmalähdettä"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Otetaan käyttöön jakelukomponenttia"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Poistetaan ladattuja pakettitiedostoja"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Tehdään asennettujen pakettien asetuksia uudelleen"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Haku käynnissä"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Pakettitiedoston asennus epäonnistui"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Ohjelmiston asennus epäonnistui"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Avaimen lisäys luotettujen sovellusten toimittajien listaan epäonnistui"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Ohjelmistoluettelon päivitys epäonnistui"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Avaimen poistaminen luotettavien ohjelmistotoimittajien luettelosta ei "
+"onnistunut"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Ohjelmiston poisto epäonnistui"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Ohjelmiston päivitys epäonnistui"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Järjestelmän päivitys epäonnistui"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Ohjelmistomuutosten toteutus epäonnistui"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Keskeneräisen asennuksen korjaus epäonnistui"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Rikkinäisten riippuvuuksien korjaus epäonnistui"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Ohjelmalähteen lisääminen epäonnistui"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Jakelukomponentin kytkeminen käyttöön epäonnistui"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Ladattujen pakettitiedostojen poisto epäonnistui"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Haku epäonnistui"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Lisätään lisenssiavain"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Tarkista Internet-yhteys."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Tarkista, onko käytössäsi kolmannen osapuolen ohjelmalähteitä. Jos on, ota "
+"ne pois käytöstä, sillä ne ovat yleensä syynä ongelmiin. Tämän jälkeen aja "
+"Päätteessä komento apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Valittu tiedosto ei ole kelvollinen GPG-avaintiedosto, tai se on "
+"vahingoittunut."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Valittua avainta ei voi poistaa. Tarkista että annoit oikean sormenjäljen."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Tarkista, ettet käytä samalla toista sovellusta pakettienhallintaan (esim. "
+"Synaptic tai aptitude). Useampi kuin yksi sovellus ei voi tehdä muutoksia "
+"samanaikaisesti."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Tämä on vakava ongelma, yritä myöhemmin uudestaan. Jos ongelma toistuu, "
+"raportoi siitä kehittäjille."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Tarkista paketin nimen oikeinkirjoitus ja että sopiva ohjelmalähde on "
+"käytettävissä."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Päivitykselle ei ole tarvetta."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Asennukselle ei ole tarvetta."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Poistamiselle ei ole tarvetta."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Valitsit poistettavaksi paketin, joka on olennainen osa järjestelmää."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Yhteys taustapalveluun kadotettiin, se todennäköisesti kaatui."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Ohjelmapaketin asentaminen tai poistaminen epäonnistui."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Haluttua ominaisuutta ei tueta"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Aptdaemonissa, joka on ohjelmien asentamiseen, poistamiseen ja muuhun "
+"hallintaan tarkoitettu ohjelma, vaikuttaa olevan ohjelmointivirhe."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Tämä virhe saattaa johtua tarvittavien ohjelmistopakettien puuttumisesta tai "
+"asennuskelvottomuudesta. Myöskään keskenään ristiriidassa olevia paketteja "
+"ei voida asentaa samaan aikaan."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Tämä vaatii pakettien asentamista varmentamattomista ohjelmistolähteistä."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Asennus on saattanut epäonnistua ohjelmapaketissa olevan virheen tai "
+"pakotetun keskeyttämisen takia. Ongelma täytyy korjata, ennen kuin voit "
+"asentaa tai poistaa lisää sovelluksia."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Kopioi tiedosto koneellesi ja tarkista tiedoston oikeudet."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Laatuvaatimuksia rikkovien pakettien asentaminen ei ole sallittua. Se voi "
+"aiheuttaa vakavia ongelmia tietokoneellesi. Ole hyvä ja ota yhteyttä paketin "
+"tarjonneeseen henkilöön tai organisaatioon ja liitä raporttisi mukaan alla "
+"olevat yksityiskohdat."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Tämän ohjelman käynnistämiseen vaadittava lisenssiavain ei ole oikea tai ei "
+"ole asentunut oikein.\n"
+"Lue lisätiedot."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Kaikki saatavilla olevat päivitykset on asennettu."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Tämän ohjelman ajamiseen vaadittavaa lisenssiavainta ei voitu ladata. Ole "
+"hyvä ja tarkista verkkoyhteytesi."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+"Sinulla ei ole tarvittavia oikeuksia suorittaaksesi tämän toimenpiteen."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Joko annoit väärän salasanan tai peruit tunnistautumisen.\n"
+"Tämän lisäksi tähän virheeseen saattaa liittyä tekninen syy jos et ole "
+"nähnyt salasanakyselyä: työpöytäympäristösi ei tuota PolicyKit-"
+"istuntoagenttia"
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Pakettitiedostojen noutaminen epäonnistui"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Pakettitietojen noutaminen epäonnistui"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakettien riippuvuuksia ei voi selvittää"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakettijärjestelmä on rikkinäinen"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Avainta ei asennettu"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Avainta ei poistettu"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Paketinhallinnan lukitus epäonnistui"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Pakettiluettelon lataaminen epäonnistui"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakettia ei ole olemassa"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paketti on jo ajan tasalla"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paketti on jo asennettu"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakettia ei ole asennettu"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Järjestelmälle oleellisen paketin poisto epäonnistui"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tehtävää ei voi valvoa tai hallita"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakettitoiminto epäonnistui"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Vaatii luottamattomien pakettien asentamista"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Aiempi asennus on jäänyt keskeneräiseksi"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paketti on heikkolaatuinen"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pakettitiedostoa ei voi avata"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Ominaisuutta ei tueta"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Lisenssiavaimen lataaminen epäonnistui"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Lisenssiavaimen asentaminen epäonnistui"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Järjestelmä on ajan tasalla"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Sinua ei voitu valtuuttaa"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Sinulla ei ole lupaa suorittaa tätä toimintoa"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Tapahtui virhe, jota ei voitu käsitellä"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Odotetaan palvelun käynnistymistä"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Odotetaan"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Odotetaan vaadittua mediaa"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Odotetaan muiden pakettienhallintasovellusten sulkemista"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Odota asetustiedostokyselyä"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Suoritetaan tehtävää"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Noudetaan"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Tutkitaan ohjelmalähteitä"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Siistitään"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Valmis"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Perutaan"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Ladataan ohjelmaluetteloa"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Asennetaan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Tehdään asetuksia: %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Poistetaan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Poistetaan kokonaan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Huomataan paketin %s katoaminen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Suoritetaan jälkiasennusliipaisinta %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Päivitetään %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Puretaan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Valmistellaan paketin %s asennusta"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Valmistellaan paketin %s asetuksia"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Valmistellaan paketin %s poistoa"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Valmistellaan paketin %s täydellistä poistoa"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s asennettu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s poistettiin kokonaan"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s poistettu"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Valmis"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Todennus epäonnistui"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Noudetaan"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Jouten"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Verkkoa ei saatavilla"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Käsitellään %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Ladattu %sB / %sB (%sB/s)"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Noudettu %sB / %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Yksityiskohdat"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Tiedosto"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Noudettu %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Noudettu"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD ”%s” vaaditaan"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Asenna yllä mainittu CD/DVD asemaan ”%s” asentaaksesi ohjelmistopaketteja "
+"levyltä."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "J_atka"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Asenna"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Asenna uudelleen"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Poista"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Poista asetuksineen"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Päivitä"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Vanhenna"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Ohita päivitys"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Tarkista alla olevat muutokset."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Ylimääräisiä ohjelmistoja tulee asentaa"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Ylimääräisiä ohjelmistoja tulee asentaa uudelleen"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Ylimääräisiä ohjelmistoja tulee poistaa"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Ylimääräisiä ohjelmistoja tulee poistaa asetuksineen"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Ylimääräisiä ohjelmistoja tulee päivittää"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Ylimääräisiä ohjelmistoja tulee vanhentaa"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Päivitykset ohitetaan"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Ylimääräisiä muutoksia vaaditaan"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB noudetaan yhteensä"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB levytilaa vapautuu"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB lisää levytilaa käytetään."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Korvataanko tiedostossa ”%s” olevat muutokset uudemmalla asetustiedoston "
+"versiolla?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Jos et tiedä miksi tiedosto on jo olemassa, on yleensä turvallista korvata "
+"se."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Muutokset"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Säilytä"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Ko_rvaa"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Yksityiskohdat"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Odotetaan, että %s sulkeutuu"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Noudetaan %(files)s"
+msgstr[1] "Noudetaan %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "paikallinen ohjelmalähde"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Noudetaan lähteestä %s"
+msgstr[1] "Noudetaan lähteistä %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Lähteen %s rakenne"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Lähteen %s kuvaus"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Lähteen %s kuvauksen allekirjoitus"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Lähteestä %s saatavilla olevat paketit"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Lähteestä %s saatavilla olevat lähdekoodit"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Lähteestä %s saatavilla olevat käännökset"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Käännökset kielelle %s (%s) lähteestä %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Käännökset kielelle %s lähteestä %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Käännökset (kielelle %s) ohjelmistolähteestä %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paketti %s ei ole saatavilla"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakettia %s ei ole asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versiota %s paketista %s ei ole asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paketti %s on jo asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versiota %s (paketti %s) ei ole saatavilla."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Avainpalvelimen URL-osoite ei ole kelvollinen: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Palvelimen yhteyskäytäntö ei ole kelvollinen: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Virheellinen avaimen tunniste: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Avaimen %s lataaminen ja asentaminen sijainnista %s ei onnistunut:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Avainta %s ei voitu asentaa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Avainta, jonka sormenjälkitunniste on %s, ei voitu poistaa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakettia %s ei voi poistaa."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versiota %s paketista %s ei ole asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "%s:n aiempi versio %s on jo asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "%s:n versio %s on jo asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versio %s paketista %s ei ole saatavilla"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Valitse, mihin versioon %s:n versio pudotetaan"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "%s:n uudempi versio %s on jo asennettuna"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paketti %s ei ole tarjolla julkaisussa %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakettia %s ei voi poistaa"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paketti ei sisällä kelvollista Installed-Size-kenttää. Lisätietoja: Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Lisenssiavain on tyhjä"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Lisenssiavain ei saa sisältää ajettavaa koodia"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Lisenssiavaimen polku %s on virheellinen"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Lisenssiavain on jo olemassa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Lisenssiavaimen sijainti ei ole turvallinen, sillä se sisältää symbolisia "
+"linkkejä. Polku %s johtaa kohteeseen %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Kansiota, johon avain asennetaan, ei ole vielä olemassa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Avaintiedoston kirjoittaminen epäonnistui: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Seuraavien pakettien riippuvuuksia ei ole toteutettu:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mutta se on virtuaalinen paketti"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mutta sitä ei ole asennettu"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mutta sitä ei olla asentamassa"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mutta %s on asennettu"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mutta %s tullaan asentamaan"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Avaimen lisääminen luotettavien ohjelmistotoimittajien luetteloon ei "
+#~ "onnistunut"
diff --git a/po/fil.po b/po/fil.po
new file mode 100644
index 0000000..7fc0183
--- /dev/null
+++ b/po/fil.po
@@ -0,0 +1,1426 @@
+# Filipino translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-05-02 07:53+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Filipino <fil@li.org>\n"
+"Language: fil\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Ilista ang mga pinagkakatiwalaang vendor"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Upang matingnan ang listahan ng mga pinagkakatiwalaang keys, kailangan mo "
+"itong patotohanan."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Alisin ang mga di-nownload na mga package file."
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Upang linisin ang mga di-nownload na package file, kailangan mo itong "
+"patotohanan."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Baguhin ang software configuration"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Upang baguhin ang mga settiing ng software, kailangan mo itong patotohanan."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Baguhin ang software repository"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Upang baguhin ang mga setting ng repositoryo ng software, kailangan mo itong "
+"patotohanan"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "I-install ang package file"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Upang i-install ang paketeng ito, kailangan mo itong patotohanan."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/fo.po b/po/fo.po
new file mode 100644
index 0000000..c5ae2e1
--- /dev/null
+++ b/po/fo.po
@@ -0,0 +1,1419 @@
+# Faroese translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-05-07 14:53+0000\n"
+"Last-Translator: Angutivik Casper Rúnur Tausen Hansen <Unknown>\n"
+"Language-Team: Faroese <fo@li.org>\n"
+"Language: fo\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Broyt ritbúnað samanseting"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "BREK"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Niðurtikið %sB av %sB"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Niðurtikið %sB av %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "BREK:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Vil tú halda áfram [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Niðurtikið %sB av %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..3dcc9c1
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,1522 @@
+# French translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-16 21:09+0000\n"
+"Last-Translator: Pierre Slamich <pierre.slamich@gmail.com>\n"
+"Language-Team: French <fr@li.org>\n"
+"Language: fr\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lister les clés des fournisseurs de confiance"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Pour afficher la liste des clés de confiance, vous devez vous authentifier."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Supprimer les paquets téléchargés"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Vous devez vous authentifier pour supprimer les paquets téléchargés."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Modifier la configuration du logiciel"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour modifier la configuration du logiciel."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Modifier le dépôt logiciel"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Pour modifier la configuration des dépôts logiciels, vous devez vous "
+"authentifier."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installer un paquet"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Vous devez vous authentifier pour installer ce paquet."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Mettre à jour les informations sur les paquets"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour mettre à jour la liste des logiciels "
+"disponibles."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installer ou supprimer des paquets"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour installer ou supprimer des logiciels."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Installer le logiciel à partir d'un dépot marqué comme très fiable."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Vous devez vous authentifier pour installer des logiciels."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Ajouter un nouveau dépôt et installer des paquets depuis celui-ci"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour installer le logiciel depuis une nouvelle "
+"source."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Ajouter un nouveau dépôt de logiciels à acheter et installer des paquets "
+"depuis celui-ci"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Vous devez vous authentifier pour installer le logiciel acheté."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Mettre à jour les paquets"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Vous devez vous authentifier pour mettre à jour des logiciels."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Annuler la tâche d'un autre utilisateur"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour annuler les modifications sur les "
+"logiciels d'un autre utilisateur."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Définir un serveur mandataire pour le téléchargement des logiciels"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Vous devez vous authentifier pour utiliser un serveur mandataire pour "
+"télécharger des logiciels."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERREUR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%s octets sur %s octets téléchargés à %s octets/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%s octets sur %s octets téléchargés"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERREUR :"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Vous n'êtes pas autorisé(e) à réaliser cette action."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Mise en file d'attente"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Résolution des dépendances"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Le NOUVEAU paquet suivant sera installé :"
+msgstr[1] "Les %(count)s) NOUVEAUX paquets suivants seront installés :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Le paquet suivant sera mis à jour :"
+msgstr[1] "Les %(count)s paquets suivants seront mis à jour :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Le paquet suivant sera SUPPRIMÉ :"
+msgstr[1] "Les %(count)s paquets suivants seront SUPPRIMÉS :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Le paquet suivant sera remplacé par une version ANTÉRIEURE :"
+msgstr[1] ""
+"Les %(count)s paquets suivants seront remplacés par une version ANTÉRIEURE :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Le paquet suivant sera réinstallé :"
+msgstr[1] "Les %(count)s paquets suivants seront réinstallés :"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Le paquet suivant a été conservé :"
+msgstr[1] "Les %(count)s paquets suivants ont été conservés :"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%s octets doivent être téléchargés."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Après cette opération, %s octets d'espace disque sera utilisé."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Après cette opération, %s octets d'espace disque sera libéré."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Voulez-vous continuer [O/n] ?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Pour traiter plusieurs paquets à la fois, placez leurs noms entre "
+"guillemets :\n"
+"aptdcon --install \"truc machin\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Rafraîchir le cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Tente de réparer les dépendances cassées. Cette opération est "
+"potentiellement dangereuse, car elle peut conduire à la suppression de "
+"nombreux paquets."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Tente d'achever une installation précédente incomplète"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installe les paquets spécifiés"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Réinstalle les paquets spécifiés"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Supprime les paquets spécifiés"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Supprime complétement les paquets spécifiés y compris les fichiers de "
+"configuration"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Revenir à la version précédente des paquets spécifiés"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Déconseillé : veuillez utiliser --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Met à jour le système de manière sûre"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Met à jour le système avec d'éventuels ajouts et suppressions de paquets"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Ajoute aux fournisseurs de confiance"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Ajoute la clé du fournisseur (nécessite aussi --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utilise le serveur de clés spécifié pour la recherche de clés"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Ajoute un nouveau dépôt à partir de la ligne deb spécifiée"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Spécifie un fichier sources.list.d alternatif auquel les dépôts doivent être "
+"ajoutés"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Liste les clés des fournisseurs de confiance"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Supprime la clé de confiance ayant l'empreinte spécifiée"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigure les paquets installés. Il est possible de régler la priorité des "
+"questions."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Priorité debconf minimale de la question à afficher"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ne pas attacher au terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Autorise les paquets provenant de sources non authentifiées"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Affiche des informations supplémentaires sur les paquets. Actuellement "
+"uniquement le numéro de version"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "En attente d'authentification"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ne pas quitter le démon s'il est inactif"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ne charger aucune extension"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Affiche les informations de traitement interne"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Quitte et relance un démon en cours d'exécution"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "En écoute sur le bus de session DBus (requis uniquement pour des tests"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Effectue les opérations dans l’environnement chroot spécifié"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Enregistre les statistiques du profil dans le fichier spécifié"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Ne faire aucune modification sur le système (utile uniquement pour les "
+"développeurs)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fichier installé"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquets installés"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Clé ajoutée depuis un fichier"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache mis à jour"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Recherche terminée"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Clé de confiance supprimée"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paquets supprimés"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paquets mis à jour"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Système mis à niveau"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Changements appliqués"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Installation incomplète réparée"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dépendances cassées réparées"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Source de logiciels ajoutée"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Composant de la distribution activé"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Paquets téléchargés supprimés"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Paquets installés reconfigurés"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Succès"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Annulé"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Échec"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installation du fichier"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installation des paquets"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Ajout de la clé depuis un fichier"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Mise à jour du cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Suppression de la clé de confiance"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Suppression des paquets"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Mise à jour des paquets"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Mise à niveau du système"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Application des changements"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Réparation d'une installation incomplète"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Réparation des logiciels installés"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Ajout d'une source de logiciels"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Activation d'un composant de la distribution"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Suppression des paquets téléchargés"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfiguration des paquets installés"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Recherche en cours"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "L'installation du paquet a échoué"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "L'installation du logiciel a échoué"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"L'ajout de la clé à la liste des éditeurs de logiciels de confiance a échoué."
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "L'actualisation de la liste des logiciels a échoué"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"La suppression du fournisseur de logiciels de la liste des fournisseurs de "
+"confiance a échoué"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "La suppression des logiciels a échoué"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "La mise à jour du logiciel a échoué"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "La mise à niveau du système a échoué"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "La modification des logiciels a échoué"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "La réparation d'une installation incomplète a échoué"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "La réparation des dépendances cassées a échoué"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "L'ajout de la source de logiciels a échoué"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "L'activation du composant de la distribution a échoué"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "La suppression des paquets téléchargés a échoué"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "La recherche a échoué"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Ajout de la clé de licence"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Vérifiez votre connexion à Internet"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Vérifiez si vous utilisez des dépôts de tierces parties. Si c'est le cas, "
+"désactivez-les car ils sont parfois source de problèmes.\n"
+"De plus, exécutez la commande suivante dans un terminal : sudo apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Le fichier sélectionné ne semble pas être une clé GPG ou alors il est "
+"corrompu."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Impossible de supprimer la clé sélectionnée. Vérifiez que l'empreinte "
+"spécifiée est valide."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Vérifiez si vous n'exécutez pas un autre gestionnaire de paquets, comme "
+"Synaptic ou Aptitude. Un seul outil à la fois est autorisé à apporter des "
+"changements."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ceci un problème sérieux. Veuillez réessayer plus tard. Si le problème "
+"persiste, signalez-le aux développeurs."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Vérifiez que le nom du paquet est écrit correctement et que le dépôt "
+"approprié est actif."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Aucune mise à jour n'est nécessaire."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Aucune installation n'est nécessaire"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Aucune suppression n'est nécessaire."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Vous avez demandé à supprimer un paquet essentiel au fonctionnement du "
+"système."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"La connexion au démon a été perdue. C'est probablement parce que le démon a "
+"quitté inopinément."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "L'installation ou la suppression d'un paquet logiciel a échoué."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La fonctionnalité demandée n'est pas prise en charge."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Il semble qu'il y ait une erreur logicielle dans aptdaemon, le programme qui "
+"vous permet d'installer et supprimer des logiciels et tout autre tâche liée "
+"à la gestion des paquets."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Cette erreur peut être provoquée par des paquets supplémentaires requis, "
+"mais absents ou non installables. En outre, il pourrait y avoir un conflit "
+"entre certains paquets qui ne peuvent pas être installés en même temps."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Cela nécessite l'installation de paquets depuis des sources non "
+"authentifiées."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"L'installation a pu échouer du fait d'une erreur dans le paquet ou parce "
+"qu'elle a été interrompue brutalement. Vous devez corriger ceci avant de "
+"pouvoir installer ou supprimer d'autres logiciels."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Veuillez copier le fichier sur votre ordinateur et en vérifier les "
+"permissions."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"L'installation d'un paquet qui ne respecte pas les standards de qualité "
+"n'est pas autorisée. Cela pourrait engendrer de graves problèmes sur votre "
+"ordinateur. Veuillez contacter la personne ou l'organisation qui a fourni ce "
+"paquet en incluant les renseignements ci-dessous."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clé de licence téléchargée qui est nécessaire pour lancer ce logiciel "
+"n'est pas valable ou n'a pas pu être installée correctement.\n"
+"Voir les détails pour plus d'informations."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Toutes les mises à jour disponibles ont déjà été installées."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"La clé de licence qui vous permet d'utiliser ce logiciel n'a pas pu être "
+"téléchargée. Veuillez vérifier votre connexion réseau."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+"Vous n'avez pas obtenu les privilèges requis pour exécuter cette action."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Vous avez déjà rentré un mauvais mot de passe ou fermé l'instance "
+"d'autorisation.\n"
+"Il est également possible qu'il y ait une raison technique à cette erreur si "
+"vous n'avez pas vu de dialogue de demande de mot de passe : votre "
+"environnement de bureau ne fourni pas un agent de session PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Le téléchargement des paquets a échoué"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Le téléchargement des informations du dépôt a échoué"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Impossible de résoudre les dépendances du paquet"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Le système de paquets est cassé"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "La clé n'a pas été installée"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "La clé n'a pas été supprimée"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Impossible de verrouiller le gestionnaire de paquets"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Impossible de charger la liste des paquets"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Le paquet n'existe pas"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Le paquet est déjà à jour"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Le paquet est déjà installé"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Le paquet n'est pas installé"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Impossible de supprimer un paquet essentiel du système"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "La tâche ne peut être ni surveillée, ni contrôlée"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Échec du traitement du paquet"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Nécessite l'installation de paquets non vérifiés"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "L'installation précédente était incomplète"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Le paquet est de mauvaise qualité"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Impossible d'ouvrir le paquet"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Fonctionnalité non prise en charge"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Échec du téléchargement de la clé de licence"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Échec lors de l'installation de la clé de licence"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Le système est déjà à jour"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Vous n'avez pas pu être autorisé"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Vous n'êtes pas autorisé à exécuter cette action"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Une erreur impossible à traiter est survenue"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "En attente de démarrage du service"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "En attente"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "En attente du média requis"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "En attente de l'arrêt d'un autre gestionnaire de paquets"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "En attente d'une demande de configuration"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Tâche en cours d'exécution"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Téléchargement"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Interrogation des Sources de Logiciels"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Nettoyage"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Terminé"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Annulation"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Chargement de la liste des logiciels"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installation de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configuration de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Suppression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Suppression complète de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Disparition de %s constatée"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Exécution des actions différées pour %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Mise à jour de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Décompression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Préparation de l'installation de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Préparation de la configuration de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Préparation de la suppression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Préparation de la suppression complète de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s a été installé"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s a été comptètement supprimé"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s a été supprimé"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Terminé"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Échec de l'authentification"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Réception"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactif"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Le réseau n'est pas disponible"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Traitement de %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%s octets sur %s octets téléchargés à %s octets/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%s octets sur %s octets téléchargés"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Détails"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fichier"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%s octets téléchargés"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Téléchargé"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Le CD/DVD « %s » est requis"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Veuillez insérer le CD ci-dessus dans le lecteur « %s » pour installer les "
+"paquets qui s'y trouvent."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuer"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installer"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Réinstaller"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Supprimer"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Supprimer complètement"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Mettre à jour"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Revenir à une version antérieure"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Ignorer la mise à niveau"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Veuillez consulter la liste des changements ci-dessous."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Des logiciels supplémentaires doivent être installés"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Des logiciels supplémentaires doivent être réinstallés"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Des logiciels supplémentaires doivent être désinstallés"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Des logiciels supplémentaires doivent être supprimés complètement"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Des logiciels supplémentaires doivent être mis à jour"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+"Des logiciels supplémentaires doivent être réinstallés dans leur version "
+"antérieure"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Les mises à jour seront ignorées"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Des changements supplémentaires sont nécessaires"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%s octets seront téléchargés au total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%s octets d'espace disque seront libérés."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%s octets d'espace disque supplémentaire seront utilisés."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Remplacer les modifications que vous aviez effectuées dans « %s » par une "
+"version plus récente du fichier de configuration ?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Si vous ne savez pas pourquoi le fichier est déjà là, il est généralement "
+"sans danger de le remplacer."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Changements"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Conserver"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Remplacer"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Détails"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "En attente de fermeture de %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Téléchargement de %(files)s"
+msgstr[1] "Téléchargement de %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "dépôt local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Téléchargement depuis %s"
+msgstr[1] "Téléchargement depuis %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Composition de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Description de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Description de la signature de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquets disponibles dans le dépôt %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Sources disponibles dans le dépôt %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traductions disponibles dans le dépôt %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traductions en %s (%s) dans le dépôt %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traductions en %s dans le dépôt %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traductions (%s) dans le dépôt %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Le paquet %s n'est pas disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Le paquet %s n'est pas installé"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La version %s de %s n'est pas installée"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Le paquet %s est déjà installé"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La version %s de %s n'est pas disponible."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "L'URL du serveur de clés n'est pas valide : %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocole du serveur non valide : %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Identifiant de clé non valide : %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Échec du téléchargement et de l'installation de la clé %s à partir de %s :\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Impossible d'installer la clé %s : %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Impossible de supprimer la clé ayant l'empreinte %s : %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Impossible de supprimer le paquet %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La version %s de %s n'est pas installée"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Une version antérieure (%s) de %s est déjà installée"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La version %s de %s est déjà installée"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La version %s de %s n'est pas disponible"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Vous devez spécifier la version à laquelle revenir pour %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "La dernière version (%s) de %s est déjà installée"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Le paquet %s n'est pas disponible dans la distribution %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Impossible de supprimer le paquet %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Le paquet ne fournit pas un champ de contrôle de taille valide. Cf. "
+"politique Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clé de licence est vide"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clé de licence ne peut pas contenir de code exécutable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Le chemin de la clé de licence %s n'est pas valide"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clé de licence existe déjà : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"L'emplacement de la clé de licence n'est pas sécurisé car il contient des "
+"liens symboliques. Le chemin %s renvoie à %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Le dossier où installer la clé n'existe pas pour le moment : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Échec lors de l'écriture du fichier clé dans : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Les paquets suivants ont des dépendances non satisfaites :"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mais c'est un paquet virtuel"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mais il n'est pas installé"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mais il ne va pas être installé"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mais la version %s est installée"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mais la version %s va être installée"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "L'ajout de la clé à la liste des fournisseurs de logiciels de confiance a "
+#~ "échoué"
diff --git a/po/gd.po b/po/gd.po
new file mode 100644
index 0000000..bcd6471
--- /dev/null
+++ b/po/gd.po
@@ -0,0 +1,1557 @@
+# Gaelic; Scottish translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-02 17:46+0000\n"
+"Last-Translator: alasdair caimbeul <Unknown>\n"
+"Language-Team: Gaelic; Scottish <gd@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
+"(n > 2 && n < 20) ? 2 : 3;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Liosta iuchraichean de reiceadairean earbsach"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut liosta nan iuchraichean "
+"earbsach fhaicinn."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Thoir air falbh faidhlichean phacaidean a chaidh a luchdadh a-nuas"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut faidhlichean phacaidean a "
+"sgioblachadh a chaidh a luchdadh a-nuas."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Atharraich rèiteachadh a' bhathar-bhog"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut roghainnean a' bhathar-"
+"bhog atharrachadh."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Atharraich ionad-tasgaidh a' bhathar-bhog"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut roghainnean ionad-tasgaidh "
+"a' bhathar-bhog atharrachadh."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Stàlaich faidhle pacaid"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut a' phacaid seo a stàladh."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Ùraich fiosrachadh na pacaid"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut catalog a' bhathar-bhog "
+"ùrachadh."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Stàlaich no thoir air falbh pacaidean"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut bathar-bog a stàladh no a "
+"thoirt air falbh."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Stàlaich bathar-bog bhon ionad-tasgaidh a liosta-gheal le làn-earbsa."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Gus stàladh bathar-bog, feumaidh tu dearbhachadh."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Cuir ionad-tasgaidh ris ùr agus stàlaich pacaidean uaithe"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut mus urrainn dhut bathar-"
+"bog a stàladh o thùs ùr."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Cuir ris ionad-tasgaidh ùr de bhathar-bog a chaidh a cheannach agus stàlaich "
+"pacaidean uaithe"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut bathar-bog a chaidh a "
+"cheannach a stàladh."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Àrdaich na pacaidean"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut bathar-bog ùraichte a "
+"stàladh."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Sguir de shaothair cleachdaiche eile"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut sguir de dh'atharrachadh a "
+"rinn cuideigin eile air bathar-bog."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Suidhich progsaidh airson luchdaidhean a-nuas bathar-bog"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Feumaidh tu dearbhadh a dhèanamh mus urrainn dhut frithealaiche progsaidh a "
+"chleachdadh gus bathar-bog a luchdadh a-nuas."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "MEARACHD"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Chaidh %sB de %sB a luchdadh a-nuas aig %sB"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Chaidh %sB de %sB a luchdadh a-nuas"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "MEARACHD:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Chan eil cead agad seo a dhèanamh."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "A' ciuthadh"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "A' fuasgladh nan eisimeileachdan"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Thèid a' phacaid ÙR a leanas a stàladh (%(count)s):"
+msgstr[1] "Thèid na pacaidean ÙRA a leanas a stàladh (%(count)s):"
+msgstr[2] "Thèid na pacaidean ÙRA a leanas a stàladh (%(count)s):"
+msgstr[3] "Thèid na pacaidean ÙRA a leanas a stàladh (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Thèid a' phacaid a leanas àrdachadh (%(count)s):"
+msgstr[1] "Thèid na pacaidean a leanas àrdachadh (%(count)s):"
+msgstr[2] "Thèid na pacaidean a leanas àrdachadh (%(count)s):"
+msgstr[3] "Thèid na pacaidean a leanas àrdachadh (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Thèid a' phacaid a leanas a thoirt air falbh (%(count)s):"
+msgstr[1] "Thèid na pacaidean a leanas a thoirt air falbh (%(count)s):"
+msgstr[2] "Thèid na pacaidean a leanas a thoirt air falbh (%(count)s):"
+msgstr[3] "Thèid na pacaidean a leanas a thoirt air falbh (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Thèid a' phacaid a leanas ìsleachadh (%(count)s):"
+msgstr[1] "Thèid na pacaidean a leanas ìsleachadh (%(count)s):"
+msgstr[2] "Thèid na pacaidean a leanas ìsleachadh (%(count)s):"
+msgstr[3] "Thèid na pacaidean a leanas ìsleachadh (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Thèid a' phacaid a leanas ath-stàladh (%(count)s):"
+msgstr[1] "Thèid na pacaidean a leanas ath-stàladh (%(count)s):"
+msgstr[2] "Thèid na pacaidean a leanas ath-stàladh (%(count)s):"
+msgstr[3] "Thèid na pacaidean a leanas ath-stàladh (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Thèid a'phacaid a leanas a chumail air ais (%(count)s):"
+msgstr[1] "Thèid na pacaidean a leanas an cumail air ais (%(count)s):"
+msgstr[2] "Thèid na pacaidean a leanas an cumail air ais (%(count)s):"
+msgstr[3] "Thèid na pacaidean a leanas an cumail air ais (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Feumaidh sinn %sB de thasglannan fhaighinn."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"Bidh %sB a dh'àite a bharrachd air an diosg air a chleachdadh an dèidh seo."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"Bidh %sB a dh'àite a bharrachd air an diosg air a shaoradh an dèidh seo."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "A bheil thu airson leantainn air adhart? [T/C]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Gus obair a dhèanamh air barrachd air aon phacaid, cuir ainmean nam "
+"pacaidean ann am comharran-labhairt:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Ath-nuadhaich an tasgadan"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Feuch is rèitich eisimeileachdan briste. Dh'fhaodadh seo a bhith cunnartach "
+"oir dh'fhaoidte gun rachadh cus phacaidean a thoirt air falbh."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Feuch is coilean stàladh nach deach a choileanadh roimhe"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Stàlaich na pacaidean a tha ann"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Ath-stàlaich na pacaidean a tha ann"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Thoir air falbh na pacaidean a tha ann"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Thoir air falbh na pacaidean a tha ann, a' gabhail a-steach faidhlichean "
+"rèiteachaidh"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Ìslich na pacaidean a tha ann"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Cha mholar seo tuilleadh: Cleachd --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Ùraich an siostam air dòigh shàbhailte"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Ùraich an siostam; dh'fhaoidte gun dèid pacaidean a stàladh 's a thoirt air "
+"falbh ri linn sin"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Cuir an reiceadair ris an fheadhainn earbsach"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Cuir keyid an reiceadair (bidh feum air --keyserver cuideachd)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Cleachd an keyserver a tha ann gus iuchraichean a lorg"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Cuir ionad-tasgaidh ùr ris on deb-line a tha ann"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Sònraich faidhle sources.list.d eile a thèid ionadan-tasgaidh a chur ris."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Seall iuchraichean de reiceadairean earbsach"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Thoir air falbh iuchair earbsach a' mheur-luirg a tha ann"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Ath-rèitich pacaidean stàlaichte. Ma thogras tu, 's urrainn dhut am "
+"prìomhachas as lugha airson ceistean a shònrachadh"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Am prìomhachas debconf as lugha de cheistean a thèid a shealltainn"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Na ceangail ris an tèirmineal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Ceadaich pacaidean o bhun-tùsan nach deach an dearbhadh"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Seall fiosrachadh a bharrachd mu na pacaidean. Chan eil 'ga shealltainn an-"
+"dràsta ach àireamh an tionndaidh"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "A' feitheamh ri dearbhadh"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Na dùin sìos an daemon mur eil gnìomhachd ann"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Na luchdaich plugain sam bith"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Seall fiosrachadh giollachd inntearnail"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Fàg agus cuir an àite an daemon tha a' ruith mar-thà"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+"Èist air a' bhus seisein DBus (Chan eil feum air seo ach a chum deuchainn)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Dèan obrachaidhean sa chroot a tha ann"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Stòr stats na pròifil san fhaidhle a chaidh a shònrachadh"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Na dèan atharraichean sam bith air an t-siostam (Feumail do luchd-"
+"leasachaidh a-mhàin)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Chaidh am faidhle a stàladh"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Chaidh na pacaidean a stàladh"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Chaidh an iuchair a chur ris on fhaidhle"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Chaidh an tasgadan ùrachadh"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Sireadh dèante"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Chaidh iuchair earbsach a thoirt air falbh"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Chaidh na pacaidean a thoirt air falbh"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Chaidh na pacaidean ùrachadh"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Chaidh an siostam àrdachadh"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Chaidh na h-atharraichean a chur an sàs"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Chaidh an stàladh neo-choileanta a chàradh"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Chaidh na h-eisimeileachdan briste a chàradh"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Chaidh am bun-tùs bathar-bog a chur ris"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Chaidh co-phàirt an sgaoilidh a chur an comas"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+"Chaidh na faidhlichean phacaidean a chaidh an luchdadh a-nuas a thoirt air "
+"falbh"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Chaidh na pacaidean stàlaichte ath-rèiteachadh"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Soirbheachail"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Sguireadh dheth"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Dh'fhàillig e"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "A' stàladh an fhaidhle"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "A' stàladh nam pacaidean"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "A' cur ris na h-iuchrach on fhaidhle"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Ag ùrachadh an tasgadain"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "A' toirt air falbh na h-iuchrach earbsach"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "A' toirt air falbh nam pacaidean"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Ag ùrachadh nam pacaidean"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Ag àrdachadh an t-siostaim"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "A' cur an sàs nan atharraichean"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "A' càradh an stàlaidh neo-choileanta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "A' càireadh bathar-bog stàlaichte"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "A' cur ris bun-tùs bathar-bog"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "A' cur an comas co-phàirt an sgaoilidh"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "A' toirt air falbh faidhlichean phacaidean a chaidh a luchdadh a-nuas"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Ag ath-rèiteachadh nam pacaidean stàlaichte"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Sireadh"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Dh'fhàillig stàladh faidhle na pacaid"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Dh'fhàillig stàladh a' bhathar-bhog"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Dh'fhàillig a' cur iuchair ris an liosta reiceadairean bathar-bog earbsach"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Dh'fhàillig ath-nuadhachadh liosta a' bhathar-bhog"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Cha b' urrainn dhuinn an reiceadair a thoirt air falbh o liosta na feadhainn "
+"earbsach"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Dh'fhàillig toirt air falbh a' bhathar-bhog"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Dh'fhàillig ùrachadh a' bhathar-bhog"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Dh'fhàillig àrdachadh an t-siostaim"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+"Cha b' urrainn dhuinn na h-atharraichean air a' bhathar-bhog a chur an sàs"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Dh'fhàillig càradh an stàlaidh neo-choileanta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Dh'fhàillig càradh nan eisimeileachdan briste"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Cha b' urrainn dhuinn bun-tùs a' bhathar-bhog a chur ris"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Cha b' urrainn dhuinn co-phàirt an sgaoilidh a chur an comas"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+"Cha b' urrainn dhuinn na faidhlichean phacaidean a chaidh a luchdadh a-nuas "
+"a thoirt air falbh"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Dh'fhàillig sireadh"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "A' cur ris iuchair cead"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Thoir sùil air a' cheangal agad ris an eadar-lìon."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Thoir sùil a bheil thu a' cleachdadh ionadan-tasgaidh le treas-phàrtaidhean. "
+"Ma tha, cuir à comas iad oir bidh iad ag adhbharachadh duilgheadasa gu "
+"tric.\n"
+"A bharrachd air sin, ruith an àithne a leanas san tèirmineal: apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Dh'fhaoidte nach e faidhle iuchrach CPG a tha san fhaidhle a thagh thu no 's "
+"mathaid gu bheil e coirbte."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Cha b'urrainn dhuinn an iuchair a thagh thu a thoirt air falbh. Dèan "
+"cinnteach gun do sholair thu lorg-meur dligheach."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Thoir sùil a bheil thu a' ruith inneal stiùireadh bathar-bog eile an-dràsta, "
+"m.e. Synaptic no Aptitude. Chan fhaod ach aon inneal rudan atharrachadh aig "
+"an aon àm."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"'S e trioblaid mhòr a tha seo. Feuch ris a-rithist an ceann greis. Ma "
+"nochdas an trioblaid a-rithist, dèan aithisg air an trioblaid dhan luchd-"
+"leasachaidh."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Thoir sùil air litreachadh ainm na pacaid agus gu bheil an t-ionad-tasgaidh "
+"iomchaidh an comas."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Chan eil feum air ùrachadh sam bith."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Chan eil feum air stàladh sam bith."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Chan eil feum air rud sam bith a thoirt air falbh."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Dh'iarr thu pacaid a thoirt air falbh a tha 'na phàirt riatanach dhen t-"
+"siostam agad."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Chaidh an ceangal ris an daemon air chall. 'S mathaid gun do thuislich "
+"daemon a' chùlaibh."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Dh'fhàillig stàladh no toirt air falbh de phacaid bathar-bog."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Chan eil an iarrtas feart ga taiceadh."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Tha coltas gu bheil mearachd prògramachaidh ann an aptdaemon, am bathar-bog "
+"a leigeas leat bathar-bog a stàladh no a thoirt air falbh agus rudan eile a "
+"dhèanamh a thaobh stiùireadh phacaidean."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Dh'fhaoidte gun do dh'èirich a' mhearachd seo a chionn 's gun robh feum air "
+"pacaidean bathar-bog a bha a dhìth no nach gabh stàladh. Air neo dh'fhaoidte "
+"gun robh còmhstri eadar pacaidean bathar-bog nach urrainnear stàladh aig an "
+"aon àm."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Tha seo ag iarraidh stàladh pacaidean bho bunan-tùs neo-dearbhaichte."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Dh'fhaoidte gun do dh'fhàillig an stàladh air sgàth mearachd sa phacaid "
+"bhathar-bhog cho-cheangailte no chaidh sguireadh dheth air dòigh neo-"
+"chàirdeil. Feumaidh tu seo a chàradh mus urrainn bathar-bog sam bith eile a "
+"stàladh no a thoirt air falbh."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Cuir lethbhreac dhen fhaidhle air a' choimpiutair ionadail agad agus thoir "
+"sùil air ceadan an fhaidhle."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Chan eil e ceadaichte pacaid a stàladh a bhriseas stannardan na càileachd. "
+"Faodaidh gun èirich trioblaidean mòra dhan choimpiutair agad ri linn seo. "
+"Cuir fios dhan neach no dhan bhuidheann a thug dhut am faidhle pacaid agus "
+"thoir dhaibh am mion-fhiosrachadh gu h-ìosal."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Chan eil an iuchair cead luchdaichte a-nuas a tha riatanach son ruith am "
+"pìos bathar-bog seo dligheach, no cha b'urrainn a stàladh ceart.\n"
+"Faic na mion-chunntasan son barrachd fiosrachadh."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Chaidh h-uile leasachaidhean ri fhaighinn gan stàladh mar thà."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Cha b'urrainn luchdadh a-nuas an iuchair cead a tha leigeil leat cleachdadh "
+"am pìos bathar-bog seo. Sgrùd sibh a' cheangal lìonra agaibh."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Chan eil na pribhleidean riatanach agad an gnìomh seo a dhèanamh."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Sholaraich thu an facail-faire ceàrr no chur thu dheth an ùghdarrachaidh.\n"
+"A bhàrr air sin dh'fhaodadh gu bheil adhbhar teicnigeach ann airson a' "
+"mhearachd seo ma 's e 's nach do chunnaic thu co-labhairt an fhacal-faire: "
+"chan eil do àrainneachd bàrr-deasc a' solarachadh àidseant seisein PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Dh'fhàillig luchdadh a-nuas nam faidhlichean phacaidean"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Dh'fhàillig luchdadh a-nuas fiosrachadh an ionaid-tasgaidh"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Cha ghabh eisimeileachdan na pacaid fhuasgladh"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Tha siostam na pacaid briste"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Cha deach an iuchair a stàladh"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Cha deach an iuchair a thoirt air falbh"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Dh'fhàillig glasadh manaidsear nam pacaidean"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Dh'fhàillig luchdadh liosta nam pacaidean"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Chan eil a' phacaid ann"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pacaid mar thà a dh'ionnsaigh an là"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Tha a' phacaid stàlaichte mar-thà"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Chan eil a' phacaid stàlaichte"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+"Cha b' urrainn dhuinn pacaid riatanach an t-siostaim a thoirt air falbh"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Cha ghabh sùil no smachd a chumail air an t-saothair seo"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Dh'fhàillig obrachadh na pacaid"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Feumaidh seo stàladh de phacaidean anns nach eil earbsa"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Cha deach an stàlachadh roimhe a choileanadh"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Tha a' phacaid de dhroch-chàileachd"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Cha b' urrainn dhuinn a' phacaid fhosgladh"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Feart gun taic"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Dh'fhàillig luchdadh a-nuas an iuchair cead"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Dh'fhàillig stàladh an iuchair cead"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Tha an t-siostam seo mar thà a dh'ionnsaigh an là"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Cha b'urrainn dhut a bhith ùghdarraichte"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Chan eil e ceadaichte dhut an gnìomh seo a dhèanamh"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Thachair mearachd nach gabh a làimhseachadh"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "A' feitheamh ri tòiseachadh seirbheise"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "A' feitheamh"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "A' feitheamh ri meadhan riatanach"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "A' feitheamh ri dùnadh de mhanaidsearan bathar-bog eile"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "A' feitheamh ri brodadh airson faidhle a rèiteachadh"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Saothair 'na ruith"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "'Ga luchdadh a-nuas"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "A' ceisteachadh bunan-tùs bathar-bog"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "'Ga sgioblachadh"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Deiseil"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "A' sgur dheth"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "A' luchdadh liosta a' bhathar-bhog"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "A' stàladh %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "A' rèiteachadh %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "A' toirt air falbh %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "A' toirt às %s gu lèir"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Sònrachadh teicheadh de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "A' ruith trigear post-installation %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Ag àrdachadh %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Neo-phacadh %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Ag ullachadh stàlachadh de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Ag ullachadh rèiteachadh de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Ag ullachadh a' toirt às %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Ag ullachadh a' toirt às %s gu lèir"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s Stàlaichte"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s ga thoirt às gu lèir"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s ga thoirt às"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Dèanta"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Dh'fhàillig an dearbhadh"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "'Ga fhaighinn"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "'Na thàmh"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Chan eil an lìonra ri fhaighinn"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Giollachd %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Chaidh %sB de %sB a luchdadh a-nuas aig %sB"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Chaidh %sB de %sB a luchdadh a-nuas"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Mion-fhiosrachadh"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Faidhle"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Chaidh %sB a luchdadh a-nuas"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Air a luchdadh a-nuas"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Tha feum air an CD/DVD \"%s\""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Cuir a-steach an CD/DVD gu h-àrd dhan draibh \"%s\" gus pacaidean bathar-bog "
+"a stàladh uaithe."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "L_ean air adhart"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Stàlaich"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Ath-stàlaich"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Thoir air falbh"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purgaidich"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Àrdaich"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Ìslich"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Gearr leum thairis air an àrdachadh"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Thoir sùil air liosta nan atharraichean a leanas."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Feumaidh tu bathar-bog a bharrachd a stàladh"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Feumaidh tu bathar-bog a bharrachd a ath-stàladh"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Feumaidh tu bathar-bog a bharrachd a thoirt air falbh"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Feumaidh tu bathar-bog a bharrachd a phurgaideachadh"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Feumaidh tu bathar-bog a bharrachd àrdachadh"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Feumaidh tu bathar-bog a bharrachd ìsleachadh"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Thèid leum a ghearradh thairis air na h-ùrachaidhean"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Tha feum air atharraichean a bharrachd"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Thèid %sB a luchdadh a-nuas uile gu lèir."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Thèid %sB a rum air an diosga a shaoradh."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Bidh feum air %sB a bharrachd air an diosga."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"A bheil thu airson tionndadh nas ùire an fhaidhle rèiteachaidh a chur an "
+"àite nan atharraichean agad ann an \"%s\"?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Mur eil fhios agad carson a tha am faidhle ann, bidh e ceart gu leòr ma "
+"chuireas tu rud 'na àite."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Atharraichean"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Glèidh"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Cuir 'na àite"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Mion-fhiosrachadh"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "A' feitheamh ri dùnadh %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "A' luchdachadh a-nuas %(files)s"
+msgstr[1] "A' luchdachadh a-nuas %(files)s"
+msgstr[2] "A' luchdachadh a-nuas %(files)s"
+msgstr[3] "A' luchdachadh a-nuas %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "Ionad-tasgaidh ionadail"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Luchdachadh a-nuas bho %s"
+msgstr[1] "Luchdachadh a-nuas bho %s"
+msgstr[2] "Luchdachadh a-nuas bhon %s"
+msgstr[3] "Luchdachadh a-nuas bhon %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Structar de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Dealbh-chunntas de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Earr-sgrìobhadh dealbh-chunntas de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pacaidean ri fhaighinn bho %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Bunan-tùs ri fhaighinn bho %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Eadar-theangachadh ri fhaighinn bho %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Eadar-theangachadh son %s (%s) bho %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Eadar-theangachadh son %s bho %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Eadar-theangachaidhean (%s) bho %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Chan eil a' phacaid %s ri fhaighinn"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Cha deach a' phacaid %s a stàladh"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Chan eil an tionndaidh %s de %s air a stàladh"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Tha a' phacaid %s stàlaichte mar-thà"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Chan eil an tionndadh %s de %s ri fhaighinn."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Tha URL frithealaiche-iuchair mì-dhligheach: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Pròtacal mì-dhligheach an fhrithealaiche: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "id (da) iuchair mì-dhligheach: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Dh'fhàillig luchdadh a-nuas agus stàladh na h-iuchrach %s o %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Cha b' urrainn dhuinn faidhle na h-iuchrach %s a stàladh: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+"Cha b' urrainn dhuinn an iuchair leis a' mheur-lorg %s a thoirt air falbh: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Cha ghabh a' phacaid %s a thoirt air falbh."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Chan eil an tionndadh %s de %s air a stàladh"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Tha an seann-tionndadh %s de %s air a stàladh mar-thà"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Tha an tionndadh %s de %s air a stàladh mar-thà"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Chan eil an tionndadh %s de %s ri fhaighinn"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+"Feumaidh tu tionndadh a shònrachadh mus urrainn dhut %s ìsleachadh thuige"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Tha an seann-tionndadh %s de %s air a stàladh mar-thà"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Chan eil a' phacaid %s ri fhaighinn san sgaoileadh %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Cha ghabh a' phacaid %s a thoirt air falbh"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Chan eil a' phacaid a' solar raon smachd Installed-Size dligheach. Thoir "
+"sùil air poileasaidh Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Tha an iuchair cead falamh"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Chan fhaod an iuchair cead glèidheadh còd gnìomhachail."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Tha an t-slighe iuchair cead %s neo-dhligheach"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Tha an iuchair cead ann mar thà: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Tha an àite den iuchair cead neo-thèarainte sgàth tha e glèidheadh "
+"ceangailean samhlachail. Tha an t-slighe %s na mhapa gu %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Chan eil an t-eòlaire ann far a stàladh an iuchair fhathast: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Dh'fhàillig sgrìobhadh faidhle iuchair gu: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+"Tha eisimeileachdan air na pacaidean a leanas nach deach an coileanadh:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ach tha e 'na phacaid bhiortail"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ach chan eil e stàlaichte"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ach cha dèid a stàladh"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "Ach tha %s stàlaichte"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ach tha %s ri stàladh"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Cha b' urrainn dhuinn an iuchair a chur ri liosta nan reiceadairean "
+#~ "bathar-bog"
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..2c08bd5
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,1497 @@
+# Galician translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Xosé <xosecalvo@gmail.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-02 05:57+0000\n"
+"Last-Translator: Xosé <Unknown>\n"
+"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
+"Language: gl\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista das chaves dos fornecedores de confianza"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Para ver a lista de chaves de confianza debe autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Retirar os ficheiros de paquetes descargados"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Para limpar os ficheiros de paquetes descargados necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Cambiar a configuración do software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Para cambiar a configuración do software necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Cambiar o repositorio de software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Para cambiar a configuración do repositorio debe autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalar un ficheiro de paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Para instalar este paquete debe autenticarse"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualizar a información dos paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Para actualizar o catálogo de software debe autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalar ou desinstalar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Para instalar ou desinstalar paquetes debe autenticarse."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalar software desde un repositorio no que se ten moita confianza e que "
+"está nunha lista branca."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Para instalar software haise que autenticar."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Engadir un repositorio novo e instalar paquetes desde el"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Para instalar software desde unha fonte nova necesita autenticarse."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Engadir un repositorio novo de software comprado e instalar paquetes desde el"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Para instalar software comprado necesita autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Anovar paquetes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Para instalar as anovacións de software debe autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancelar a tarefa doutro usuario"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Para cancelar os cambios de outra persoa debe autenticarse."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Establecer un proxy para as descargas de software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "Para usar un servidor proxy para descargar software debe autenticarse."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERRO"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Descargáronse %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Descargáronse %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERRO:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Non ten permiso para levar a cabo esta acción."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Metendo na cola"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Buscando as dependencias"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Vaise instalar o seguinte paquete NOVO (%(count)s):"
+msgstr[1] "Vanse instalar os seguintes paquetes NOVOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Vaise anovar o paquete seguinte (%(count)s):"
+msgstr[1] "Vanse anovar os seguintes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Vaise RETIRAR o seguinte paquete (%(count)s):"
+msgstr[1] "Vanse RETIRAR os seguintes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Vaise REVERTER o seguinte paquete (%(count)s):"
+msgstr[1] "Vanse REVERTER os seguintes paquetes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Vaise reinstalar o seguinte paquete (%(count)s):"
+msgstr[1] "Vanse reinstalar os seguintes paquetes (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Retívose o paquete seguinte (%(count)s):"
+msgstr[1] "Retivéronse os paquetes seguintes (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "É necesario obter %sB de ficheiros."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Despois desta operación ocuparanse %sB de espazo no disco"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Despois desta operación liberaranse %sB de espazo no disco"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Desexa continuar [S/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Para traballar en máis de un paquete poña os nomes dos paquetes entre "
+"vírgulas:\n"
+"aptdcon --install «foo bar»"
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Actualizar a caché"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Tentar resolver as dependencias rotas. Esta operación é potencialmente "
+"perigosa xa que podería tratar de eliminar moitos paquetes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Tentar rematar unha instalación anterior incompleta"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalar os paquetes fornecidos"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalar os paquetes fornecidos"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Retirar os paquetes indicados"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Retirar os paquetes indicados, incluídos os ficheiros de configuración"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Reverter os paquetes indicados"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsoleto: Use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Anovar o sistema de forma segura"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Anovar o sistema, posiblemente instalando e eliminando paquetes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Engadir o fabricante como de confianza"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Engadir a chave do fabricante (tamén necesita --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Usar o servidor de chaves fornecido para buscar polas chaves"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Engadir o repositorio novo desde a liña deb fornecida"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especifica un ficheiro sources.list.d alternativo onde se deben engadir os "
+"repositorios."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Mostrar as chaves de fabricantes de confianza"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Eliminar a chave de confianza para a pegada dixital fornecida."
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurar os paquetes instalados. Opcionalmente pode especificar a "
+"prioridade mínima das preguntas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "A prioridade mínima de pregunta de debconf que se mostrará"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Non anexar á terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permitir paquetes provenientes de fontes sen autenticar"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostrar información adicional sobre os paquetes. Nesta altura, só o número "
+"da versión"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Agardando pola autenticación"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Non apagar o daemon cando estea inactivo"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Non cargar ningún engadido"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostrar información sobre o procesamento interno"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Saír e substituír un daemon que se estea a executar"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escoitar no bus de sesión de DBus (requirido só para probas"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realizar operacións no chroot indicado"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Almacenar as estatísticas do perfil no ficheiro indicado"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Non facer cambios no sistema (Só para programadores)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Ficheiro instalado"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquetes instalados"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Engadiuse unha chave desde un ficheiro"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Actualizouse a caché"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Busca realizada"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Eliminouse unha chave de confianza"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Elimináronse paquetes"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Actualizáronse paquetes"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Anovouse o sistema"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Aplicáronse as modificacións"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Reparouse a instalación incompleta"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Reparáronse as dependencias rotas"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Engadiuse unha fonte de software"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Activouse un compoñente da distribución"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Retiráronse os paquetes descargados"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfiguráronse paquetes instalados"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Satisfactoriamente"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelado"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Fallou"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalando o ficheiro"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalando os paquetes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Engadindo unha chave desde un ficheiro"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Actualizando a caché"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Eliminando unha chave de confianza"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Eliminando os paquetes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Actualizando os paquetes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Anovando o sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplicando as modificacións"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparando a instalación incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "A reparar o software instalado"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Engadindo unha fonte de software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Activando o compoñente da distribución"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Retirando os ficheiros de paquetes descargados"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfigurando paquetes instalados"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "A buscar"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Fallou a instalación do paquete"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Fallou a instalación do software"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Non foi posíbel engadir a chave á lista de vendedores de software de "
+"confianza"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Fallou a actualización da lista de programas"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Fallou a eliminación do distribuidor da lista de vendedores de confianza"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Fallou a eliminación do software"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Fallou a actualización do software"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Fallou a anovación do sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Produciuse un fallo ao aplicar os cambios do software"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Produciuse un fallo ao reparar a instalación incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Produciuse un fallo ao reparar as dependencias rotas"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Produciuse un fallo ao engadir a fonte de software"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Produciuse un fallo ao activar o compoñente da distribución"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Fallou a retirada de ficheiros de paquetes descargados"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Fallou a busca"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "A engadir a clave da licenza"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Comprobe a conexión á Internet"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Comprobe se está a utilizar repositorios de terceiros. De ser o caso, "
+"desactíveos, dado que son unha fonte frecuente de problemas.\n"
+"Alén disto, execute a orde seguinte nun terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Poida que o ficheiro seleccionado non sexa un ficheiro de chave GPG ou que "
+"estea danado."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Non é posíbel eliminar a chave seleccionar. Comprobe que forneceu unha "
+"pegada dixital válida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Comprobe se ten outra ferramenta de xestión de software executándose "
+"actualmente, p.ex. Synaptic ou aptitude. Só pode haber unha ferramenta "
+"facendo cambios ao mesmo tempo."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Este problema é serio. Ténteo de novo máis tarde. Se este problema aparece "
+"de novo, informe do erro aos desenvolvedores."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Comprobe a ortografía do nome do paquete e se está activado o repositorio "
+"axeitado."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Non hai necesidade de ningunha actualización."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Non hai necesidade de instalar nada"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Non hai necesidade de eliminar nada"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Solicitou eliminar un paquete que constitúe unha parte esencial do sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Perdeuse a conexión co daemon. O máis probábel é que o daemon de fondo "
+"tivese un fallo fatal."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Fallou a instalación ou eliminación dun paquete de software."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Non se admite a funcionalidade solicitada."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Parece que hai un erro de programación en «aptdaemon», o software que lle "
+"permite instalar ou retirar software e realizar outras tarefas relacionadas "
+"coa xestión de paquetes."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Este erro pode deberse a que os paquetes de software adicional requiridos "
+"non estean presentes ou que non sexan instalábeis. Ademais, podería existir "
+"un conflito entre os paquetes que non lles permita seren instalados ao mesmo "
+"tempo."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Isto require instalar paquetes desde orixes non autenticadas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"A instalación puido ter fallado por un erro nos los paquetes "
+"correspondentes de software ou foi cancelada dun xeito incorrecto. Debe "
+"reparar isto antes de poder instalar ou eliminar calquera outro software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Copie o ficheiro no seu equipo local e comprobe os permisos do ficheiro"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Non está permitida a instalación de calquera paquete que non respecte os "
+"estándares de calidade. Iso podería provocar problemas serios ao seu equipo. "
+"Contacte coa persoa ou organización que lle forneceu este ficheiro de "
+"paquete e inclúa os detalles de embaixo."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"A clave da licenza que se descargou e que se require para executar este "
+"software non é válida ou non se puido instalar correctamente.\n"
+"Vexa os detalles para máis información."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Xa se instalaron todas as actualizacións dispoñíbeis."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Non foi posíbel descargar a clave da licenza que permite o uso deste "
+"software. Comprobe a conexión á rede."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Non dispón dos privilexios requiridos para realizar esta acción."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Escribiu un contrasinal erróneo ou cancelou a autorización.\n"
+"Alén disto pode haber unha razón técnica para este erro se vostede non viu "
+"un diálogo no que se lle pedise un contrasinal; o entorno de escritorio non "
+"fornece un axente de sesión de PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Fallou a descarga dos ficheiros de paquetes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Fallou a descarga da información do repositorio"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Non é posíbel resolver as dependencias do paquete"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "O sistema de paquetes está roto"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Non se instalou a chave"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Non se eliminou a chave"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Non foi posíbel bloquear o xestor de paquetes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Fallou a descarga da listaxe de paquetes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Ese paquete non existe"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Este paquete xa está actualizado"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Ese paquete xa está instalado"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Ese paquete non está instalado"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Fallou a eliminación dun paquete esencial do sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Non é posíbel vixiar ou controlar esta tarefa"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Fallou a operación co paquete"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Require que se instalen paquetes nos que non se confía"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Non se completou unha instalación anterior"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "El paquete é de mala calidade"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Non é posíbel abrir o ficheiro de paquete"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Característica non compatíbel"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Produciuse un fallo ao descargar a chave de licenza"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Produciuse un fallo ao instalar a chave de licenza"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "O sistema xa está anovado"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Podería non ser autorizado"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Non se lle permite realizar esta acción"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Produciuse un erro que non se pode xestionar"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Agardando polo arranque do servizo"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Agardando"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Agardando polo recurso requirido"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Agardando que rematen outros xestores de software"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Agardando polo indicador do ficheiro de configuración"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Executando a tarefa"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Descargando"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Solicitando as orixes de software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Limpando"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Rematado"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelando"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Cargando a lista do software"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Eliminando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s completamente retirado"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Detectouse a desaparición de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando o disparador de post-instalación %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Anovando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "A desempaquetar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "A preparar a instalación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "A preparar a configuración de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "A preparar a eliminación de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "A preparar a eliminación completa de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Instalouse %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Retirouse %s completamente"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Retirouse %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Feito"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Fallou a autenticación"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Obtendo"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Ocioso"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "A rede non está dispoñíbel."
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "A procesar %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Descargáronse %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Descargáronse %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalles"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Ficheiro"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Descargado %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Recibido"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Requírese o CD/DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Insira o CD/DVD de enriba na unidade «%s» para instalar os paquetes de "
+"software desde el."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Eliminar"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Borrar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Anovar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Desactualizar"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Omitir esta actualización"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Bótelle unha ollada á lista de cambios que se presenta a continuación."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Hai que instalar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Hai que instalar de novo software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Hai que eliminar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Hai que eliminar completamente software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Hai que actualizar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Débese desactualizar software adicional"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Omitiranse as actualizacións"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Necesítanse cambios adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Descargaranse en total %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Liberaranse %sB de espazo de disco."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Usaranse %sB máis de espazo en disco."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Substituír as modificacións de «%s» por unha versión posterior do ficheiro "
+"de configuración?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Se non sabe por que ese ficheiro xa se atopa aí, adoita ser máis seguro a "
+"súa substitución."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Modificacións"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Manter"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Substituír"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalles"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Agardando a que saia %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Descargando %(files)s"
+msgstr[1] "Descargando %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositorio local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "A descargar desde %s"
+msgstr[1] "A descargar desde %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estrutura de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descrición de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Sinatura de descrición de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquetes dispoñíbeis en %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Orixes dispoñíbeis desde %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traducións dispoñíbeis desde %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traducións para %s (%s) desde %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traducións para %s desde %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traducións (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "O paquete %s non está dispoñíbel"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "O paquete %s non está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "A versión %s de %s non está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "O paquete %s xa está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "A versión %s de %s non está dispoñíbel."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "O URL do servidor de chaves non é válido: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocolo do servidor non válido: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "O identificador da chave non é válido: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Produciuse un fallo ao descargar e instalar a chave %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Non é posíbel instalar o ficheiro chave %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Non é posíbel retirar a chave coa pegada %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Non é posíbel retirar o paquete %s"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Non está instalada a versión %s de %s"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Xa está instalada a anterior versión %s de %s"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "A versión %s de %s xa está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "A versión %s de %s non está dispoñíbel"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Necesita especificar unha versión á que reverter %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "A última versión %s de %s xa está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "O paquete %s non está dispoñíbel na distribución %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Non se pode retirar o paquete %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"O paquete non fornece un campo de control do tamaño de instalación válido. "
+"Vexa a política de Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "A chave de licenza está baleira"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "A chave de licenza non pode conter código executábel"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "A ruta á chave de licenza %s non é válida"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Xa existe unha chave de licenza: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"A localización da chave de licenza non é segura xa que contén ligazóns "
+"simbólicas. A ruta %s liga a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "O cartafol onde instalar a chave non existe aínda: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Produciuse un fallo ao escribir o ficheiro de chave en: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Os seguintes paquetes teñen dependencias incumpridas:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mais é un paquete virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mais non está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mais non se vai a instalar"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mais %s está instalado"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mais vaise instalar %s"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Algo fallou ao engadir a chave á lista de distribuidores de programas de "
+#~ "confianza"
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..7d1deb2
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,1464 @@
+# Hebrew translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-31 13:26+0000\n"
+"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
+"Language-Team: Hebrew <he@li.org>\n"
+"Language: he\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "הצגת מפתחות של ספקים מהימנים"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "כדי לצפות ברשימת המפתחות המהימנים, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "הסרת קובצי חבילות שהתקבלו"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "כדי לנקות את קובצי החבילות שהתקבלו, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "שינוי תצורת התכנה"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "כדי לשנות את הגדרות התכנה, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "שינוי מאגר התכנה"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "כדי לשנות את הגדרות מאגרי התכנה, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "התקנת קובץ חבילה"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "כדי להתקין חבילה, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "עדכון נתוני החבילה"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "כדי לעדכן את קטלוג התכנה, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "התקנה או הסרה של חבילות"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "כדי להתקין או להסיר את התכנה, עליך להזדהות."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "התקנת תוכנות ממאגר מורשה ומהימן ביותר."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "כדי להתקין תוכנות, עליך להזדהות."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "הוספת מאגר חדש והתקנת חבילות ממנו"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "כדי להתקין תכנה ממקור חדש, יהיה עליך להזדהות."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "הוספת מאגר חדש של תוכנות שנרכשו והתקנת חבילות ממנו"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "כדי להתקין תכנה שנרכשה יהיה עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "שדרוג חבילות"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "כדי להתקין תכנה עדכנית, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "ביטול משימה של משתמש אחר"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "כדי לבטל שינויים שביצע מישהו אחר בתכנה, עליך להזדהות."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "הגדרת מתווך להורדות תכנה"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "כדי להשתמש בשרת מתווך להורדת תכנה, עליך להזדהות."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "הורדו %s בתים מתוך %s במהירות %s בתים לשנייה"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "הורדו %s בתים מתוך %s"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "You are not allowed to perform this action."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Queuing"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "דרישות התלות נפתרות"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "The following NEW package will be installed (%(count)s):"
+msgstr[1] "The following NEW packages will be installed (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "The following package will be upgraded (%(count)s):"
+msgstr[1] "The following packages will be upgraded (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "The following package will be REMOVED (%(count)s):"
+msgstr[1] "The following packages will be REMOVED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "The following package will be DOWNGRADED (%(count)s):"
+msgstr[1] "The following packages will be DOWNGRADED (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "The following package will be reinstalled (%(count)s):"
+msgstr[1] "The following packages will be reinstalled (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "The following package has been kept back (%(count)s):"
+msgstr[1] "The following packages have been kept back (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Need to get %sB of archives."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "After this operation, %sB of additional disk space will be used."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "After this operation, %sB of additional disk space will be freed."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Do you want to continue [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refresh the cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"יש לנסות לפתור דרישות תלות שבורות. פעולה הנחשבת למסוכנת כיוון שהיא עלולה "
+"לנסות להסיר חבילות רבות."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Try to finish a previous incompleted installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Install the given packages"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstall the given packages"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Remove the given packages"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remove the given packages including configuration files"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Downgrade the given packages"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Deprecated: Please use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Upgrade the system in a safe way"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Upgrade the system, possibly installing and removing packages"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Add the vendor to the trusted ones"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Add the vendor keyid (also needs --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Use the given keyserver for looking up keys"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Add new repository from the given deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "List trusted vendor keys"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remove the trusted key of the given fingerprint"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "The minimum debconf priority of question to be displayed"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Do not attach to the apt terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Allow packages from unauthenticated sources"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Show additional information about the packages. Currently only the version "
+"number"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Waiting for authentication"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "לא לכבות את הסוכן עקב חוסר פעילות"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "לא לטעון שום תוסף"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "הצגת נתוני העיבוד הפנימיים"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "יציאה והחלפה של סוכן שכבר היה פעיל"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Listen on the DBus session bus (Only required for testing"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Perform operations in the given chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "אחסון סטטיסטיקת הפרופיל בקובץ שצויין"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "אין ליצור אף שינוי במערכת (לשימוש עבור מפתחים בלבד)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "קובץ מותקן"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "חבילות מותקנות"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "נוסף מפתח מקובץ"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "המטמון עודכן"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "החיפוש הושלם"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "הוסר מפתח מהימן"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "הוסרו חבילות"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "עודכנו חבילות"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "המערכת שודרגה"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "השינויים חלו"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "התקנות שלא הושלמו תוקנו"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "התלויות הפגומות תוקנו"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "מקור תכנה שנוסף"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "הפעלת רכיבים של ההפצה"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "קובצי החבילות שהתקבלו הוסרו"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "החבילות שהותקנו הוגדרו מחדש"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "מוצלח"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "בוטל"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "נכשל"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "הקובץ מותקן"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "החבילות מותקנות"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "נוסף מפתח מקובץ"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "המטמון מתעדכן"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "המפתח המהימן מוסר"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "החבילות מוסרות"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "החבילות מתעדכנות"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "המערכת משודרגת"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "השינויים חלים"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "מתבצע תיקון להתקנות שלא הושלמו"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "התוכנות המותקנות מתוקנות"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "נוסף מקור תכנה"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "הפעלת רכיבים של ההפצה"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "קובצי החבילות שהתקבלו מוסרים"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "החבילות המותקנות מוגדרות מחדש"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "בהליכי חיפוש"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "התקנת קובץ החבילה נכשל"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "התקנת התכנה נכשלה"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "הוספת המפתח לרשימת ספקי התכנה המהימנים נכשלה"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "רענון רשימת התוכנות נכשלה"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "הסרת הספק מרשימת המהימנים נכשלה"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "הסרת התכנה נכשלה"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "עדכון התכנה נכשל"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "שדרוג המערכת נכשל"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "החלת השינויים בתכנה נכשלה"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "תיקון ההתקנה שלא הושלמה נכשל"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "תיקון התלויות הפגומות כשל"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "הוספת מקור התכנה נכשל"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "הפעלת רכיבים של ההפצה נכשלה"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "הסרת קובצי החבילות שהתקבלו נכשלה"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "החיפוש נכשל"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "נוסף מפתח רישוי"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "יש לבדוק את החיבור שלך לאינטרנט."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"יש לבדוק האם נעשה שימוש במאגרי צד־שלישי. אם כך יש לבטל אותם, מאחר שהם מהווים "
+"מקור נפוץ לבעיות.\n"
+"יתרה מכך יש להריץ את הפקודה הבאה במסוף: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "הקובץ הנבחר אינו מפתח GPG או שהוא בלתי תקין."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "לא ניתן להסיר את המפתח הנבחר. נא לבדוק שסיפקת טביעת אצבע תקפה."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"נא לבדוק האם מופעל כרגע כלי אחר לניהול תכנה, לדוגמה: Synaptic או aptitude. "
+"כלי אחד בלבד מורשה לבצע שינויים בכול פעם."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"זוהי בעיה חמורה. יש לנסות שוב מאוחר יותר. אם בעיה זו מופיעה שוב, יש לדווח על "
+"הבעיה למפתחים."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "נא לבדוק את איות שם החבילה ושהמאגר התואם פעיל."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "אין צורך בעדכון."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "אין צורך בהתקנה"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "אין צורך בהסרה."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "ביקשת להסיר חבילה המהווה חלק חיוני מהמערכת שלך."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "החיבור לסוכן אבד. ככל הנראה סוכן הרקע קרס."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "ההתקנה או ההסרה של חבילת התכנה כשלה."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "התכונה המבוקשת אינה נתמכת."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"מסתבר כי ישנה שגיאת תכנות ב־aptdaemon, התכנה המאפשרת לך להתקין/להסיר תכנה "
+"ולבצע משימות אחרות הנוגעות לניהול חבילות."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"יתכן ששגיאה זו נגרמה על ידי חבילות תכנה חיוניות נוספות החסרות או שאינן "
+"ניתנות להתקנה. יתר על כך, יתכן שישנה התנגשות בין חבילות תכנה שהתקנתן אינה "
+"מורשית בו זמנית."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "פעולה זו דורשת התקנת חבילות ממקורות בלתי מאומתים."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"סיבה אפשרית לכשל בהתקנה היא שגיאה בחבילת התכנה עצמה או שההתקנה בוטלה בצורה "
+"לא ידידותית. יהיה עליך לתקן זאת לפני שניתן יהיה להתקין או להסיר תוכנות "
+"נוספות."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "נא להעתיק את הקובץ למחשב שלך ולבדוק את הרשאותיו."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"התקנת חבילה המפרה את תקני האיכות אסורה. מצב כזה עלול לגרום לתקלות רציניות "
+"במחשבך. נא ליצור קשר עם האדם או הארגון שסיפק לך את קובץ החבילה ולהוסיף את "
+"הפרטים להלן."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"מפתח הרישוי שהורד הנדרש להפעלת תכנית זו שגוי או שלא ניתן להתקין אותו כראוי.\n"
+"יש לעיין בפרטים לקבלת מידע נוסף."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "כל השדרוגים הזמינים כבר הותקנו."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"לא ניתן להוריד את מפתח הרישוי המאפשר לך להשתמש בתכנית זו. נא לבדוק את החיבור "
+"שלך לרשת."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "אין לך את ההרשאות הנדרשות לשם ביצוע פעולה זו."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"או שסיפקת ססמה שגויה או שביטלת את האימות.\n"
+"יתר על כך, יכול להיות שיש סיבה טכנית להופעת שגיאה זו אם לא ראית תיבת דו־שיח "
+"לבקשת ססמה: סביבת שולחן העבודה שלך אינה מספקת סוכן להפעלת PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "ארע כשל בהורדת קובצי החבילה"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "ארע כשל בהורדת נתוני המאגר"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "לא ניתן לפתור את דרישות התלות של החבילה"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "מערכת החבילות פגומה"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "המפתח לא הותקן"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "המפתח לא הוסר"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "ארע כשל בנעילת מנהל החבילות"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "ארע כשל בטעינת רשימת החבילות"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "החבילה אינה קיימת"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "החבילה כבר מעודכנת"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "החבילה כבר מותקנת"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "החבילה אינה מותקנת"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "ארע כשל בהסרת חבילת מערכת חיונית"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "לא ניתן לעקוב או לשלוט במשימה"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "הפעולה על החבילה נכשלה"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "נדרשת התקנה של חבילות לא מורשות"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "ההתקנה הקודמת לא הושלמה"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "החבילה היא באיכות נמוכה"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "לא ניתן לפתוח את קובצי החבילות"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "תכונה שאינה נתמכת"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "הורדת מפתח הרישוי נכשלה"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "התקנת מפתח הרישוי נכשלה"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "המערכת כבר מעודכנת"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "לא ניתן לאשר אותך"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "אין לך הרשאה לבצע פעולה זו"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "אירעה שגיאה שאינה ניתנת לטיפול"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "בהמתנה להתחלת השירות"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "בהמתנה"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "בהמתנה למדיום הנדרש"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "בהמתנה למנהלי החבילות האחרים שיסתיימו"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "בהמתנה לבקשת קובץ התצורה"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "משימה פעילה"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "בתהליכי הורדה"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "מקורות התכנה מתעדכנים"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "מתבצע סדר ונקיון"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "הסתיים"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "בהליכי ביטול"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "רשימת התוכנות נטענת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s מותקנת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s מוגדרת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s מוסרת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "הסרה מוחלטת של %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "ההיעלמות של %s נרשמת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "ההליכים שלאחר ההתקנה %s מופעלים"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s משתדרגת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s מחולצת"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "ההתקנה של %s בהכנות"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "התצורה של %s בהכנות"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "ההסרה של %s בהכנות"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "ההסרה המוחלטת של %s בהכנות"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s הותקנה"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s הוסרה לחלוטין"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s הוסר"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "בוצע"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "האימות נכשל"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "מתקבל"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "בהמתנה"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "הרשת אינה זמינה"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s בעיבוד"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "הורדו %s בתים מתוך %s במהירות %s בתים לשנייה"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "הורדו %s בתים מתוך %s"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "פרטים"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "קובץ"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "הורדו %s ב׳"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "הורדו"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "תקליטור ה־CD/DVD‏ '%s' נדרש"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"נא להכניס את תקליטור ה־CD/DVD הנדרש לכונן '%s' לצורך התקנת חבילות ממנו."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "ה_משך"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "התקנה"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "התקנה מחדש"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "הסרה"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "ניקוי"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "שדרוג"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "שדרוג מטה"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "דילוג על השדרוג"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "נא להביט ברשימת השינויים שלהלן."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "יש להתקין תכנה נוספת"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "יש להתקין תכנה נוספת מחדש"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "יש להסיר תכנה נוספת"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "יש למחוק לחלוטין תכנה נוספת"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "יש לשדרג תכנה נוספת"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "יש לשדרג מטה תכנה נוספת"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "העדכונים לא ייושמו"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "נדרשים שינויים נוספים"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "יתקבלו %s ב׳ בסך הכול."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "יפונו %s ב׳ משטח הכונן."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "ינוצלו %s ב׳ נוספים מהכונן בסך הכול."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "האם להחליף את השינויים שערכת ב־'%s' בגרסה עדכנית יותר של קובץ התצורה?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "אם אין לך מושג מדוע קובץ זה נמצא שם, על פי רוב די בטוח להחליפו."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "שי_נויים"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_שמירה"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "ה_חלפה"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_פרטים"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "בהמתנה ליציאת %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "מתקבל %(files)s"
+msgstr[1] "מתקבלים %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "מאגר מקומי"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "מתבצעת הורדה מהמיקום %s"
+msgstr[1] "מתבצעת הורדה מהמיקומים %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "מבנה של %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "תיאור של %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "חתימת תיאור של %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "חבילות זמינות מהמאגר %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "מקורות זמינים מהמאגר %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "תרגומים זמינים מהמאגר %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "תרגומים עבור %s‏ (%s) מאת %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "תרגומים עבור %s מאת %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "תרגומים (%s) מאת %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "החבילה %s אינה זמינה"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "החבילה %s אינה מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "הגרסה %s של %s אינה מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "החבילה %s כבר מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "The version %s of %s isn't available."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "כתובת שרת המפתחות שגויה: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "פרוטוקול שגוי של השרת: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "מזהה המפתח שגוי: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"אירע כשל בהתקנה והורדה של המפתח %s מ־%s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "לא ניתן להתקין את קובץ המפתח %s:‏ %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "לא ניתן להסיר את המפתח בעל טביעת האצבע %s:‏ %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "לא ניתן להסיר את החבילה %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "הגרסה %s של %s אינה מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "הגרסה הקודמת %s של %s כבר מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "הגרסה %s של %s כבר מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "The version %s of %s isn't available"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "עליך לציין גרסה אליה יוחזר %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "הגרסה העדכנית יותר %s של %s כבר מותקנת"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "The package %s isn't available in the %s release."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "לא ניתן להסיר את החבילה %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"החבילה אינה מספקת שדה בקרה Installed-Size תקני. נא לעיין במדיניות 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "מפתח הרישוי ריק"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "אסור שמפתח הרישוי יכיל קוד להרצה."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "נתיב מפתח הרישוי %s שגוי"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "מפתח הרישוי קיים כבר: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"מיקום מפתח הרישוי אינו מאובטח ומכיל קישורים סימבוליים. הנתיב %s ממפה אל %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "התיקייה להתקנת המפתח אינה קיימת עדיין: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "כתיבת קובץ המפתח למיקום הבא נכשלה: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "The following packages have unmet dependencies:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "but it is a virtual package"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "but it is not installed"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "but it is not going to be installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "but %s is installed"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "but %s is to be installed"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "הוספת המפתח לרשימת ספקי התכנה המהימנים נכשלה"
diff --git a/po/hi.po b/po/hi.po
new file mode 100644
index 0000000..f574f6b
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,1451 @@
+# Hindi translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-12-25 16:28+0000\n"
+"Last-Translator: Vibhav Pant <vibhavp@gmail.com>\n"
+"Language-Team: Hindi <hi@li.org>\n"
+"Language: hi\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "विश्वसनीय विक्रेता का कुँजी सूची"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "विश्वसनीय कुँजी की सूची को देखने के लिए, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "डाउनलोड पैकज संचिका हटाएँ"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "डाउनलोड पैकेज संचिका को साफ करने के लिए आपको प्राधिकार की आवश्यकता है"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "सॉफ्टवेयर विन्यास बदलें"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "सॉफ्टवेयर विन्यास हेतु, आपको प्राधिकार की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "सॉफ्टवेयर भंडार बदले"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "सॉफ्टवेयर भंडार विन्यास को बदलने हेतु, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "पैकेज संचिका को संस्थापित करें"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "इस पैकेज को संस्थापित करने के लिए, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "पैकेज सूचना को अद्यतन करें"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "सॉफ्टवेयर नामावली के अद्यतन के लिए, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "पैकेज संस्थापित करें या हटाएँ"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "सॉफ्टवेयर को संस्थापित करने या हटाने के लिए आपको सत्यापन की आवश्यकता है."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "एक नया भंडार जोड़े तथा इससे पैकेज संस्थापित करें"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "नए स्रोत से सॉफ्टवेयर संस्थापित करने के लिए, आपको सत्यापन की आवश्यकता है."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "एक नया सॉफ्टवेयर खरीदारी का भंडार जोड़े तथा इससे पैकेज संस्थापित करें"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "खरीदे गए सॉफ्टवेयर को संस्थापित करने के लिए, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "अद्यतन पैकेज"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "अद्यतन सॉफ्टवेयर को संस्थापित करने के लिए, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "दूसरे प्रयोक्ता के कार्य को रद्द करें"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"किसी और के द्वारा सॉफ्टवयेर परिवर्तन को निरस्त करने हेतु, आपको सत्यापन की आवश्यकता है."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "सॉफ्टवेयर डाउनलोड करने हेतु प्रॉक्सी नियत करें"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"सॉफ्टवेयर डाउनलोड करने के लिए प्रॉक्सी सर्वर के उपयोग हेतु आपको सत्यापन की आवश्यकता है."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "त्रुटि"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB को %sB से %sB/s पर डाउनलोड कर रहा है"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB को %sB से डाउनलोड कर रहा है"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "त्रुटि:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "इस कार्य को करने के लिए आपको अनुमति नहीं है."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "कतार"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "निर्भरता हल कर रहा है"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "निम्न नया पैकेज संस्थापित होगा (%(count)s):"
+msgstr[1] "निम्न नए पैकेजो का संस्थापना होगा (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "निम्न पैकेज उन्नत होगें (%(count)s):"
+msgstr[1] "निम्न पैकेज उन्नत होगें (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "निम्न पैकेज हटाए जाएगें (%(count)s):"
+msgstr[1] "निम्न पैकेज हटाएँ जाएगें (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "निम्न पैकेज को अवनत किया जाएगा (%(count)s):"
+msgstr[1] "निम्न पैकेजों को अवनत किया जाएगा (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "निम्न पैकेज पुनःसंस्थापित होगें (%(count)s):"
+msgstr[1] "निम्न पैकेज पुनःसंस्थापित होगें (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "निम्न पैकेज को वापस रखा जाएगा (%(count)s):"
+msgstr[1] "निम्न पैकेजों को वापस रखा जाएगा (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB के अभिलेखों को प्राप्त करने की आवश्यकता है."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "इस क्रिया कलाप के पश्चात, %sB अतिरिक्त डिस्क जगह का उपयोग होगा."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "इस क्रिया-कलाप के पश्चात, %sB अतिरिक्त डिस्क जगह खाली होगा."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "क्या आप आगे बढ़ना चाहते हैं [हाँ Y/ ना n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"एक से अधिक पैकेज पर क्रिया-कलाप हेतु पैकेज के नामों को उद्धरण चिह्न में रखें:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "कैश को पुनःताजा करें"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"खंडित निर्भरताओं को सुलझाने का प्रयास करें. सम्भवतः खतरनाक क्रिया-कलाप होगा क्योंकि यह "
+"कई पैकेज को हटाने का प्रयास करेगा."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "एक पूर्ववर्ति अपुर्ण संस्थापना को पुरा करने का प्रयास करें"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "दिए गए पैकेज को संस्थापित करें"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "दिए गए पैकेज को पुनःसंस्थापित करें"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "दिए गए पैकेज को हटाएँ"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "दिए गए पैकेज को विन्यास संचिक सहित हटाएँ"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "दिए गए पैकेज को अवनत करें"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "अवमानना: कृपया --safe-upgrade का उपयोग करें"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "तंत्र का उन्नयन सुरक्षित तरीके से करें"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "पैकेज के सम्भावित संस्थापन तथा हटाने हेतु, तंत्र का उन्नयन करें"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "केवल विश्वसनीय विक्रेता को जोड़े"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "विक्रेता के कुँजी आईडी को जोड़े (--keyserver की भी जरुरत है)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "दिए गए कुँजीसर्वर को कुँजी देखने हेतु उपयोग करें"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "दिए गए deb-line से नए भंडार को जोड़े"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "एक वैकल्पिक sources.list.d संचिका का उल्लेख करें जो जिसका भंडार जोड़ा जाए."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "विश्वसनीय विक्रेता कुँजी सूची"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "दिए गए अँगुलीछाप के विश्वसनीय कुँजी को हटाएँ"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "संस्थापित पैकेज को पुनःविन्यास करें. वरियता के प्रश्नो के न्यूनतम विकल्प का उल्लेख करें"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "debconf के न्यूनतम वरियता संबंधित प्रश्न दिखाएँ"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "एपीटी टर्मिनल को संलग्न नहीं करें"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "प्रमाणित स्रोतों से पैकेज की अनुमति दें"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "पैकेजो के अतिरिक्त सूचना को दिखाएँ. वर्तमान में केवल संस्करण संख्या"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "प्रमाणिकरण हेतु प्रतीक्षारत"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "निष्क्रिय होने के कारण डेमन को शटडाउन न करें"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "आंतरिक प्रक्रियागत सूचना दिखाएं"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "वर्तमान चल रहे डेमन को छोड़े तथा प्रतिस्थापित करे"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "डीबस सत्र बस को ध्यान दे (केवल जाँच हेतु आवश्यक"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "दिए गए chroot मेंं संक्रिया को पूरा करें"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "विशिष्ट संचिका में प्रोफाइल सांख्यिकी का संग्रह करे"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "तंत्र में कोई बदलाव न करें (केवल विकासकर्ता हेतु)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "संस्थापित संचिका"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "संस्थापित पैकेज"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "संचिका से कुंजी जोड़े"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "कैश अद्यतन करें"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "खोज हो गयी"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "विश्वासी कुंजी को हटाएं"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "पैकेज हटाएं"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "पैकेज अद्यतन करें"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "तंत्र अद्यतन करें"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "बदलाव लागू करें"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "अपूर्ण संस्थापित का जीर्णोद्वार करें"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "खंडित निर्भताओं का जीर्णोद्वार करें"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "सॉफ्टवेयर स्रोत जोड़े"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "इस वितरक के घटक को समर्थ करें"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "डाउनलोड पैकेज संचिका हटाएँ"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "संस्थापित पैकेज का पुनःविन्यास करें"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "सफल"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "रद्द"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "असफल"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "संचिका संस्थापित हो रहा है"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "पैकेज संस्थापित हो रहा है"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "संचिका से कुंजी जोड़े"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "कैश अद्यतन कर रहा है"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "विश्वासनीय कुंजी हटाएं"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "पैकेज हटाएं"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "पैकेज अद्यतन कर रहा है"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "तंत्र को उन्नत कर रहा है"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "बदलाव लागू कर रहा है"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "अपूर्ण संस्थापना का जीर्णोद्वार कर रहा है"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "स्थापित हुए सॉफ्टवेयर की मरम्मत हो रही है"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "सॉफ्टवेयर स्रोत को जोड़ रहा है"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "इस वितरक के घटक को समर्थ कर रहा है"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "डाउनलोड पैकेज संचिका को हटा रहा है"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "संस्थापित पैकेज को पुनःविन्यास कर रहा है"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "खोज हो रही हैं"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "पैकेज संचिका का संस्थापन असफल हो गया"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "साफ्टवेयर का संस्थापन असफल हो गया"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "साफ्टवेयर सूची की पुनःताजा करना असफल"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "विश्वसनीय सूची से विक्रेता को हटाना असफल"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "साफ्टवेयर हटाना असफल"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "साफ्टवेयर अद्यतन असफल"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "तंत्र का अद्यतन असफल"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "साफ्टवेयर बदलाव लागू करने में असफल"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "अपूर्ण संस्थापित का जीर्णोद्वार असफल"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "खंडित निर्भरता का जीर्णोद्वार असफल"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "सॉफ्टवेयर स्रोत को जोड़ने में विफल"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "वितरक के घटक को जोड़ने में विफल"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "डाउनलोड पैकेज संचिका हटाने में असफल"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "खोज असफल हुई"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "अंतर्जाल संयोजन की जाँच करें।"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"जाँच करे क्या आप तृतीय पक्ष भण्डार का उपयोग कर रहे है. यदि ऐसा है तो उसे अशक्त करें, "
+"क्योंकि समस्याओं की जड़ समान्यतः वही होते हैं. इसके पश्चात टर्मिनल में निम्न कमांड को चलाएंः "
+"apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "चुना गया संचिका जीपीजी कुंजी संचिका नहीं है या विकृत है."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "चुने गए कुँजी नहीं हट सकता. जाँचे की आप एक वैध अँगुलीछाप प्रदान कर रहे हैं."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"जाँचे की क्या आप वर्तमान में कोई अन्य सॉफ्टवेयर प्रबंधक उपकरण चला रहे हैं, जैसे कि सिनेप्टिक "
+"या एपटीट्यूड. एक बार में केवल एक ही उपकरण को परिवर्तन हेतु अनुमति है."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"यह गंभीर समस्या है. बाद में पुनः कोशिश करें. यदि यह समस्या पुनः आता है तो कृपया "
+"विकासकर्ता को त्रुटि के बारे में रिपोर्ट करें."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "पैकेज नाम के उच्चारण, तथा उपयुक्त भंडार को समर्थ है, की जाँच करें"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "अद्यतन की आवश्यका नहीं है."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "संस्थापन की आवश्यकता नहीं है"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "हटाने की आवश्यकता नहीं है."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "आपने एक ऐसे पैकेज को हटाने के लिए कहा है जो आपके तंत्र का अनिवार्य भाग है."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "डेमन से संयोजन नष्ट हो गया है. ज्याद उम्मीद है कि पृष्ठभूमि में डेमन विकृत हो गया है."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "साफ्टवेयर पैकेज का संस्थापना या हटाया जाना असफल हो गया है."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "अनुरोधित सुविधा समर्थित नहीं है"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"ऐप्टडीमन में एक प्रोग्रामिंग त्रुटि है | ऐप्टडीमन आपको सॉफ्टवेयर स्थापित / हटाने और कैई "
+"पैकेज प्रबंधन से संबंधित कार्य करने देता है"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"यह त्रुटि जरुरी अतिरिक्त सॉफ्टवेयर पैकेज के कारण है जो छुट रहा है या संस्थापित नहीं है. इसके "
+"अतरिक्त सॉफ्टवेयर पैकेज के बीच विरोधाभास है जो एक समय संस्थापित होने की अनुमति देता है."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"यह संस्थापना असफल हो जाएगा क्योंकि संबंधित साफ्टवेयर पैकेज में त्रुटि है या गलत तरीके से यह "
+"निरस्त कर दिया गया है. किसी अन्य साफ्टवेयर को संस्थापित करने या हटाने के पहले इसकी "
+"मरम्मत जरुरी है."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "कृपया संचिका का नकल अपने स्थानीय कंप्यूटर पर करें तथा संचिका अनुमति की जाँच करें."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"ऐसे पैकेज जो मानक गुणवत्ता का उलंघन करता है संस्थापना की अनुमति नहीं है. यह आपके कंप्यूटर के "
+"लिए गंभीर समस्य़ा पैदा कर देगा. कृपया इस पैकेज संचिका को प्रदान करने वाले व्यक्ति या संगठन "
+"से निम्न विस्तृत विवरण सहीत संपर्क करें."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "सभी उपलब्ध उन्नयन पहले से ही स्थापित हो चुके हैं"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "इस कार्य को करने के लिए आपको अनुमति नहीं है."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "पैकेज संचिका का डाउनलोड असफल"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "भण्डार सूचना का डाउनलोड असफल"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "पैकेज निर्भरता सुलझाया नहीं जा सका"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "पैकेज तंत्र विकृत है"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "कुंजी संस्थापित नहीं है"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "कुंजी हटाया नहीं गया है"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "पैकेज प्रबंधक को ताला लगाने में असफल"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "पैकेज सूची के लदान में असफल"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "पैकेज का अस्तिव नहीं है"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "पैकेज पहले से ही संस्थापित है"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "पैकेज संस्थापित नहीं है"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "अनिवार्य पैकेज तंत्र को हटाने में विफल"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "कार्य को देख-रेख या नियंत्रित नहीं किया जा सकता"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "पैकेज क्रियान्वयन असफल"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "अविश्वसनीय पैकेज संस्थापन की आवश्यकता"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "पूर्ववर्ती संस्थापन पूर्ण नहीं हुआ है"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "यह पैकेज घटिया स्तर का है"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "पैकेज संचिका नहीं खुल सका"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "सुविधा समर्थित नहीं है"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "एक अप्रबंधकीय त्रुटि हुई है"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "सेवा शुरु होने की प्रतीक्षा कर रहा है"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "प्रतीक्षारत"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "आवश्यक माध्यम हेतु प्रतीक्षारत"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "अन्य साफ्टवेयर प्रबंधक के खाली होने की प्रतीक्षा कर रहा है"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "संचिका प्राम्प्ट विन्यास की प्रतीक्षा कर रहा है"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "कार्य चल रहा है"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "डाउनलोड किया जा रहा है"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "साफ कर रहा है"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "समाप्त"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "रद्द कर रहा है"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "साफ्टवेयर सूची लदान कर रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s संस्थापित हो रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s विन्यासित कर रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s हटा रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s पूरी तरह से हट् चुका है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "संस्थापन-पश्चात ट्रीगर %s चल रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s अद्यतन कर रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s अनपैकहो रहा है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s के स्थापित होने की तैयारी हो रही है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s स्थापित हो चुका है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s पूरी तरह से हट चुका है"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s हट चुका है"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "किया गया"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "प्रमाणीकरण निष्फल"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "मिलान कर रहा है"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "निष्क्रिय"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "संजाल उपलब्ध नहीं है"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB को %sB से %sB/s पर डाउनलोड कर रहा है"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB को %sB से डाउनलोड कर रहा है"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "विवरण"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "संचिका"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB डाउनलोड हो गया"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "डाउनलोड हो गया"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "सीडी/डिवीडी '%s' की आवश्यकता है"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"कृपया उपरोक्त सीडी/डीवीडी को '%s' ड्राइव में डाले ताकि इससे सॉफ्टवेयर पैकेज संस्थापित हो "
+"सके."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "जारी रखें (_C)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "संस्थापित करें"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "पुनःसंस्थापित करें"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "हटाएँ"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "सफाई"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "उन्नयन"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "अवनयन"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "उन्नयन छोड़े"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "कृपया निम्न परिवर्तन सूची पर एक नजर देख ले."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "अतरिक्त सॉफ्टवेयर संस्थापित होना है"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "अतरिक्त सॉफ्टवेयर पुनःसंस्थापित होना है"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "अतरिक्त सॉफ्टवेयर हटाया जाना है"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "अतरिक्त सॉफ्टवेयर साफ किया जाना है"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "अतरिक्त सॉफ्टवेयर उन्नयन होना है"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "अतरिक्त सॉफ्टवेयर अवनयन होना है"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "अद्यतन छोड़ दिया जाएगा"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "अतरिक्त परिवर्तन की आवश्यकता है"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "कुल %sB डाउनलोड किया जाएगा."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB डिस्क स्थान खाली होगा."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB अतरिक्त डिस्क स्थान उपयोग होगा."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "विन्यास संचिका के नवीनतम संस्करण से '%s' में परिवर्तन प्रतिस्थापित करेंगे?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"यदि आप नहीं जानते कि वहाँ पर संचिका पहले से क्यों है, तो इसे प्रतिस्थापित करना सुरक्षित है."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "बदलाव (_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "बनाए रखें (_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "प्रतिस्थापित करें (_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "विवरण (_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "%s से बाहर होने की प्रतिक्षा कर रहा है"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "डाउनलोड कर रहा है %(files)s"
+msgstr[1] "डाउनलोड कर रहा है %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "पैकेज %s उपलब्ध नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "पैकेज %s संस्थापित नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "संस्करण %s जो %s का है संस्थापित नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "पैकेज %s पहले से संस्थपित है"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "यह संस्करण %s जो %s का है उपलब्ध नहीं है."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"डाउनलोड करने में असफल तथा कुंजी %s को %s से संस्थापित करें:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "कुंजी संचिका %s संस्थापित नहीं कर सकता: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "अंगुलीछाप सहीत कुंजी %s नहीं हटा सकता: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "पैकेज %s नहीं हटाया जा सकता."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "संस्करण %s जो %s का है संस्थपित नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "पूर्ववर्ती संस्करण %s जो %s का है पहले से संस्थापित है"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "संस्करण %s जो %s का है पहले से संस्थापित है"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "यह संस्करण %s जो %s का है उपलब्ध नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "%s से पदावनत करने के लिए आप उस संस्करण का उल्लेख करें"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "परवर्ती संस्करण %s जो %s का है पहले से संस्थापित है"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "यह पैकेज %s की उपलब्धता %s प्रकाशन में नहीं है."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "पैकेज %s नहीं हटाया जा सकता"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr "यह पैकेज वैध-आकार फिल्ड नहीं प्रदान करता है. देखें डेबियन नीति 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "निम्न पैकेज में सभी निर्भरता नहीं है."
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "लेकिन यह एक आभासी पैकेज है"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "लेकिन यह संस्थापित नहीं है"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "लेकिन यह संस्थापित नहीं होने जा रहा है"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "लेकिन %s संस्थापित है"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "लेकिन %s संस्थापित हो जाएगा"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "विश्वसनीय साफ्टवेयर विक्रेता की सूची में कुंजी जोड़ने में असफल"
diff --git a/po/hr.po b/po/hr.po
new file mode 100644
index 0000000..28f4632
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,1420 @@
+# Croatian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2009-12-04 23:14+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Croatian <hr@li.org>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..caf1168
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,1482 @@
+# Hungarian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-09-29 17:25+0000\n"
+"Last-Translator: Péter MÁTÓ <mato.peter@gmail.com>\n"
+"Language-Team: Hungarian <hu@li.org>\n"
+"Language: hu\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Megbízható szállítók kulcsainak felsorolása"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Hitelesítés szükséges a megbízható kulcsok listájának megjelenítéséhez."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Letöltött csomagok eltávolítása"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "A letöltött csomagok törléséhez hitelesítésre van szükség."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Szoftverbeállítások megváltoztatása"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "A szoftverbeállítások megváltoztatásához hitelesítésre van szükség."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Szoftvertároló módosítása"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Hitelesítés szükséges a szoftvertároló-beállítások módosításához."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Csomagfájl telepítése"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "A csomag telepítéséhez hitelesítés szükséges."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Csomaginformációk frissítése"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "A szoftverkatalógus frissítéséhez hitelesítés szükséges."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Csomagok telepítése vagy eltávolítása"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Hitelesítés szükséges szoftver telepítéséhez vagy eltávolításához."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Szoftver telepítése megbízható, fehérlistán szereplő tárolóból."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "A szoftver telepítéséhez hitelesítés szükséges."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Új tároló hozzáadása, és abból csomagok telepítése"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Hitelesítés szükséges a szoftverek új forrásból való telepítéséhez."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Új, megvásárolt csomagokat tartalmazó tároló hozzáadása, és abból csomagok "
+"telepítése"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Hitelesítés szükséges a megvásárolt szoftverek telepítéséhez."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Csomagok frissítése"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Frissített szoftver telepítéséhez hitelesítés szükséges."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Másik felhasználó feladatának megszakítása"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Hitelesítés szükséges másik felhasználó szoftvermódosításainak "
+"megszakításához."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Proxy beállítása szoftverletöltésekhez"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"A szoftver letöltéséhez proxy kiszolgáló használatához hitelesítés szükséges."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "HIBA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Letöltve: %sB/%sB, sebesség: %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Letöltve: %sB/%sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "HIBA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Ezt a műveletet nem hajthatja végre."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Sorba állítás"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Függőségek feloldása"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "A következő új csomag kerül telepítésre (%(count)s):"
+msgstr[1] "A következő új csomagok kerülnek telepítésre (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "A következő csomag kerül frissítésre (%(count)s):"
+msgstr[1] "A következő csomagok kerülnek frissítésre (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "A következő csomag kerül eltávolításra (%(count)s):"
+msgstr[1] "A következő csomagok kerülnek eltávolításra (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "A következő csomag kerül visszafejlesztésre (%(count)s):"
+msgstr[1] "A következő csomagok kerülnek visszaminősítésre (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "A következő csomag kerül újratelepítésre (%(count)s):"
+msgstr[1] "A következő csomagok kerülnek újratelepítésre (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "A következő csomag lett visszatartva (%(count)s):"
+msgstr[1] "A következő csomagok lettek visszatartva (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB töltendő le az archívumokból."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "A művelet után %sB további lemezhely kerül felhasználásra."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "A művelet után %sB további lemezhely kerül felszabadításra."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Kívánja folytatni [I/N]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Több csomagon való munkához tegye a csomagneveket idézőjelek közé:\n"
+"aptdcon --install \"izé bigyó\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Gyorsítótár frissítése"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Kísérlet törött függőségek feloldására. Veszélyes művelet lehet, mivel sok "
+"csomag eltávolítására tehet kísérletet."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Kísérlet korábban be nem fejezett telepítés befejezésére"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "A megadott csomagok telepítése"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "A megadott csomagok újratelepítése"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "A megadott csomagok eltávolítása"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "A megadott csomagok eltávolítása a beállítófájlokkal együtt"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Az adott csomagok visszafejlesztése"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Elavult: használja a --safe-upgrade kapcsolót"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "A rendszer biztonságos frissítése"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"A rendszer frissítése, csomagok esetleges telepítésével és eltávolításával"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "A szállító hozzáadása a megbízhatókhoz"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "A szállító kulcsazonosítójának hozzáadása (a --keyserver is szükséges)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "A megadott kulcskiszolgáló használata kulcsok kikeresésére"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Új tároló felvétele a megadott deb sorból"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Alternatív sources.list.d fájl megadása, amelyhez a tárolók hozzáadandók."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Megbízható szállítói kulcsok felsorolása"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "A megadott ujjlenyomatok megbízható kulcsának eltávolítása"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"A telepített csomagok újrakonfigurálása. Opcionálisan a minimális "
+"kérdésfontosság meghatározható"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "A megjelenítendő legkisebb debconf kérdésfontosság"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ne csatlakozzon az apt terminálhoz"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Csomagok engedélyezése nem hitelesített forrásokból"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"További információk megjelenítése a csomagokról. Jelenleg csak a verziószám"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Várakozás hitelesítésre"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ne álljon le a démon inaktivitás miatt"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ne töltsön be semmilyen bővítményt"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Belső feldolgozási információk megjelenítése"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Kilépés és meglévő démon cseréje"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "A D-Bus munkamenetbusz figyelése (csak teszteléshez)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Műveletek végrehajtása a megadott „chroot”-on belül"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Profilstatisztikák tárolása a megadott fájlban"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ne változtasson meg semmit a rendszeren (csak fejlesztőknek)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fájl telepítve"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Csomagok telepítve"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Kulcs felvéve a fájlból"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Gyorsítótár frissítve"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Keresés kész"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Megbízható kulcs eltávolítva"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Csomagok eltávolítva"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Csomagok frissítve"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Rendszer frissítve"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Változtatások alkalmazva"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Befejezetlen telepítések javítva"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Törött függőségek javítva"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Szoftverforrás hozzáadva"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "A disztribúció összetevője engedélyezve"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Eltávolított letöltött csomagfájlok"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Újrakonfigurált telepített csomagok"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Sikeres"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Megszakítva"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Sikertelen"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Fájl telepítése"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Csomagok telepítése"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Kulcs hozzáadása fájlból"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Gyorsítótár frissítése"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Megbízható kulcs eltávolítása"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Csomagok eltávolítása"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Csomagok frissítése"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Rendszer frissítése"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Módosítások alkalmazása"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Befejezetlen telepítések javítása"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Telepített szoftverek javítása"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Szoftverforrás engedélyezése"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "A disztribúció összetevőjének engedélyezése"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Letöltött csomagfájlok eltávolítása"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Telepített csomagok újrakonfigurálása"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Keresés"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "A csomagfájl telepítése meghiúsult"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "A szoftver telepítése meghiúsult"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "A csomaglisták frissítése meghiúsult"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "A gyártó eltávolítása a megbízható gyártók listájáról meghiúsult"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "A szoftver eltávolítása meghiúsult"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "A csomag frissítése meghiúsult"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "A rendszer frissítése meghiúsult"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "A csomagok változásainak jóváhagyása meghiúsult"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "A befejezetlen telepítések javítása meghiúsult"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "A törött függőségek javítása meghiúsult"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "A szoftverforrás hozzáadása meghiúsult"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "A disztribúció összetevőjének engedélyezése meghiúsult"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Letöltött csomagfájlok eltávolítása sikertelen"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "A keresés sikertelen"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Licenc-kulcs hozzáadása"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Ellenőrizze internetkapcsolatát."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Ellenőrizze, használ-e harmadik féltől származó tárolókat. Ha van ilyen, "
+"tiltsa le ezeket, mivel gyakran problémák forrásai.\n"
+"Ezen kívül futtassa a „sudo apt-get install -f” parancsot terminálban."
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "A kiválasztott fájl nem GPG kulcsfájl, vagy sérült."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"A kiválasztott kulcs nem távolítható el. Ellenőrizze, hogy érvényes "
+"ujjlenyomatot adott-e meg."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Ellenőrizze, hogy nem fut-e jelenleg másik szoftverkezelő eszköz, például a "
+"Synaptic vagy az aptitude. Egyszerre csak egy eszköz végezhet módosításokat."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ez egy komoly probléma. Próbálja újra később. Ha ez a probléma újra előáll, "
+"jelentse be hibaként a fejlesztőknek."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Ellenőrizze a csomagnév helyesírását, és hogy a megfelelő tároló "
+"engedélyezve van-e."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nincs szükség frissítésre."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nincs szükség telepítésre."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nincs szükség eltávolításra."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "A rendszer alapvető részét képező csomag eltávolítását kérte."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"A kapcsolat elveszett a démonnal. Valószínűleg összeomlott a háttérdémon."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Egy szoftvercsomag telepítése vagy eltávolítása meghiúsult."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "A kért funkció nem támogatott."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Úgy tűnik, programhiba van az aptdaemonban, a szoftverek telepítését és "
+"eltávolítását, valamint más csomagkezelési műveletek végrehajtását lehetővé "
+"tevő szoftverben."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ezt a hibát további szükséges, de hiányzó vagy nem telepíthető "
+"szoftvercsomagok okozhatják. Továbbá ütközés lehet olyan szoftvercsomagok "
+"között, amelyek egyszerre nem lehetnek telepítve."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Ez megbízhatatlan forrásból származó csomagok telepítését igényli."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"A telepítés megszakadását az adott szoftvercsomag hibája okozhatta, vagy "
+"barátságtalan módon megszakították. Ezt ki kell javítania, mielőtt további "
+"szoftvereket telepítene vagy eltávolítana."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Kérjük másolja át a fájlt a helyi gépére és ellenőrizze a "
+"fájljogosultságokat."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"A csomagnak, ami megsérti a minőségi szabványokat a telepítése nem "
+"engedélyezett. Ez súlyos kárt tehet a gépében. Kérjük lépjen kapcsolatba "
+"azzal a személlyel vagy szervezettel akitől a csomagfájl származik, és "
+"mellékelje a részleteit."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"A szoftver használatát lehetővé tevő licenckulcs nem érvényes vagy nem "
+"telepíthető megfelelően.\n"
+"További információkért nézze meg a részleteket."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Az összes elérhető frissítés már telepítve van."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"A szoftver használatát lehetővé tevő licenckulcs nem tölthető le. "
+"Ellenőrizze a hálózati kapcsolatot."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Ezt a műveletet nem hajthatja végre."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "A csomagfájlok letöltése meghiúsult"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "A tárolóinformációk letöltése meghiúsult"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "A csomagfüggőségek nem oldhatók fel"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "A csomagrendszer sérült"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Nincs telepítve a kulcs"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "A kulcs nem került eltávolításra"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "A csomagkezelő zárolása meghiúsult"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "A csomaglista betöltése meghiúsult"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "A csomag nem létezik"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "A csomag már a legfrissebb verziójú"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "A csomag már telepítve van"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "A csomag nincs telepítve"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Az alapvető rendszercsomag eltávolítása meghiúsult"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "A feladat nem figyelhető meg vagy nem irányítható"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "A csomagművelet meghiúsult"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Nem megbízható csomagok telepítését igényli"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Egy korábbi telepítés nem fejeződött be"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "A csomag rossz minőségű"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "A csomagfájl nem nyitható meg"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nem támogatott funkció"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "A licenc-kulcs letöltése nem sikerült"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "A licenc-kulcs telepítése sikertelen"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "A rendszer már naprakész"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Nem kezelhető hiba történt"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Várakozás a szolgáltatás elindulására"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Várakozás"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Várakozás a szükséges adathordozóra"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Várakozás más szoftverkezelők kilépésére"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Várakozás a beállítófájl parancssorára"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Feladat futtatása"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Letöltés"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Szoftverforrások lekérdezése"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Frissítés befejezése"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Befejezve"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Megszakítás"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Szoftverlista betöltése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s telepítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s konfigurálása"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s eltávolítása"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s teljes eltávolítása"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "„%s” eltűnése feljegyezve"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "A(z) %s telepítés utáni trigger futtatása"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s frissítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s kicsomagolása"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s telepítésének előkészítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s beállításának előkészítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s eltávolításának előkészítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s teljes eltávolításának előkészítése"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s telepítve"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s teljesen eltávolítva"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s eltávolítva"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Kész"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Sikertelen hitelesítés"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Letöltés"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Üresjárat"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "A hálózat nem érhető el"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s feldolgozása"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Letöltve: %sB/%sB, sebesség: %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Letöltve: %sB/%sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Részletek"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fájl"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB letöltve"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Letöltve"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "„%s” CD/DVD szükséges"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Helyezze be a fenti CD-t/DVD-t a(z) „%s” meghajtóba a rajta lévő "
+"szoftvercsomagok telepítéséhez."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Folytatás"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Telepítés"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Újratelepítés"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Eltávolítás"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Törlés"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Frissítés"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Visszafejlesztés"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Frissítés kihagyása"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Nézze meg a változtatások alábbi listáját."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "További szoftvereket kell telepíteni"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "További szoftvereket kell újratelepíteni"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "További szoftvereket kell eltávolítani"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "További szoftvereket kell törölni"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "További szoftvereket kell frissíteni"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "További szoftvereket kell visszafejleszteni"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "A frissítések kihagyásra kerülnek"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "További változtatások szükségesek"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Összesen %sB kerül letöltésre."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%s B lemezhely szabadul fel."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Még %sB lemezhely kerül felhasználásra."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Lecseréli a változtatásait a(z) „%s” fájlban a beállítófájl egy újabb "
+"verziójával?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ha nem tudja, miért létezik már a fájl, általában nyugodtan lecserélheti."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Változtatások"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Megtartás"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Csere"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Részletek"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Várakozás %s kilépésére"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s letöltése"
+msgstr[1] "%(files)s letöltése"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "helyi tároló"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Letöltés innen: %s"
+msgstr[1] "Letöltés innen: %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s szerkezete"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s leírása"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s leíró aláírása"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Elérhető csomagok innen: %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Elérhető források innen: %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Elérhető fordítások innen: %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s nyelv (%s) fordításai innen: %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s nyelv fordításai innen: %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Fordítások (%s) innen: %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "A(z) %s csomag nem elérhető"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "A(z) %s csomag nincs telepítve"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s csomag %s verziója nincs telepítve"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s csomag már telepítve van"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s csomag %s verziója nem érhető el."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "A kulcskiszolgáló URL-je érvénytelen: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "A kiszolgálóprotokoll érvénytelen: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Érvénytelen kulcsazonosító: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nem sikerült letölteni a(z) %s kulcsfájlt, a következő helyről: %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "%s kulcsfájl nem telepíthető: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "%s ujjlenyomatú kulcs nem távolítható el: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "A(z) %s csomag nem távolítható el."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "A(z) %s verziójú %s nincs telepítve"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "A(z) %s korábbi verziójú %s már telepítve van"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "A(z) %s verziójú %s már telepítve van"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "A(z) %s verziójú %s nem érhető el"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Meg kell határoznia, hogy %s milyen verzióra legyen visszafejlesztve"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "A(z) %s újabb verziójú %s már telepítve van"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s csomag nem érhető el a(z) %s kiadásban."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "A(z) %s csomag nem eltávolítható."
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"A csomag nem ad érvényes Installed-Size vezérlőmező-értéket. Részletekért "
+"tekintse át a Debian Policy 5.6.20. fejezetét."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "A licenckulcs üres"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "A licenckulcs nem tartalmazhat végrehajtható kódot."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "A(z) %s licenckulcsútvonal érvénytelen"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "A licenckulcs már létezik: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"A licenckulcs helye nem biztonságos, mivel szimbolikus linkeket tartalmaz. "
+"A(z) %s útvonal ennek felel meg: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "A kulcsfájl telepítéséhez használandó könyvtár még nem létezik: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "A kulcsfájl kiírása sikertelen ide: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "A következő csomagoknak teljesítetlen függőségei vannak:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "de ez egy virtuális csomag"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "de nincs telepítve"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "de nincs telepítésre jelölve"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "de %s verzió van telepítve"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "de %s verziót kellene telepíteni"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "A kulcs hozzáadása a megbízható szoftvergyártók listájához meghiúsult"
diff --git a/po/hy.po b/po/hy.po
new file mode 100644
index 0000000..00650c3
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,1419 @@
+# Armenian translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-03-11 21:37+0000\n"
+"Last-Translator: Serj Safarian <serjsafarian@gmail.com>\n"
+"Language-Team: Armenian <hy@li.org>\n"
+"Language: hy\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Հեռացնել նշոցները ներբեռնված փաթեթներից"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..b05a31a
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,1472 @@
+# Indonesian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-03-02 11:08+0000\n"
+"Last-Translator: Arif Budiman <arifpedia@gmail.com>\n"
+"Language-Team: Indonesian <id@li.org>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Daftar kunci dari vendor-vendor yang terpercaya"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Untuk melihat daftar kunci yang terpercaya, anda perlu melakukan "
+"otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Hapus berkas-berkas paket yang sudah diunduh"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Untuk membersihkan berkas-berkas paket yang sudah diunduh, Anda perlu "
+"melakukan otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ubah konfigurasi perangkat lunak"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Untuk mengubah pengaturan perangkat lunak, Anda perlu melakukan otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Mengubah repositori perangkat lunak."
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Untuk merubah pengaturan repositori perangkat lunak, anda perlu melakukan "
+"otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Memasang berkas paket"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Untuk memasang paket ini, Anda perlu melakukan otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Update informasi paket"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Untuk memutakhirkan katalog perangkat lunak, Anda perlu melakukan "
+"otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Memasang atau menghapus paket-paket."
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Untuk memasang atau menghapus perangkat lunak, anda perlu melakukan "
+"otentikasi."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Memasang perangkat lunak dari sumber lumbung yang terpercaya"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Untuk memasang perangkat lunak, anda memerlukan otentifikasi"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Tambahkan sebuah repositori baru dan pasang paket darinya."
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Untuk memasang perangkat lunak dari sumber yang baru, Anda perlu melakukan "
+"otentifikasi."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Tambahkan sebuah repositori baru dari perangkat lunak yang sudah dibeli dan "
+"pasanglah darinya"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Untuk memasang perangkat lunak yang sudah dibeli, Anda perlu melakukan "
+"otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Upgrade paket"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Untuk memasang perangkat lunak yang sudah dimutakhirkan, Anda perlu "
+"melakukan otentifikasi."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Membatalkan tugas pengguna lain"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Untuk membatalkan perubahan perangkat lunak orang lain, anda perlu melakukan "
+"otentikasi."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Atur proxy untuk pengunduhan perangkat lunak"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Menggunakan server proxy untuk mengunduh perangkat lunak, anda perlu "
+"melakukan otentifikasi."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "KESALAHAN"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Terunduh %sB dari %sB pada %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Terunduh %sB dari %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "KESALAHAN:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Anda tidak diizinkan melakukan tindakan ini."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Mengantri"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Menghitung dependensi"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Jumlah Paket BARU yang akan dipasang adalah (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Paket-paket ini akan ditingkatkan (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Paket-paket ini akan DIHAPUS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Paket-paket ini akan diTURUN-TINGKATkan (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Paket-paket ini akan segera dipasang ulang (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Paket-paket ini telah ditahan (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Perlu mendapatkan %sB dari arsip."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Setelah operasi ini, %sB ruang kosong harddisk akan digunakan."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Setelah operasi ini, %sB ruang diska tambahan akan dibebaskan:"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Apakah Anda ingin melanjutkannya [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Untuk beroperasi pada lebih dari satu paket, taruh nama paket dalam tanda "
+"petik:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Segarkan ulang tembolok"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Cobalah untuk mengatasi dependensi rusak. Operasi berpotensi berbahaya "
+"karena bisa mencoba untuk menghapus banyak paket."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Mencoba untuk menyelesaikan pemasangan yang tidak selesai sebelumnya"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Pasang paket yang diberikan"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Pasang ulang paket yang diberikan"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Hapus paket yang diberikan"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Hapus paket yang diberikan termasuk berkas konfigurasi"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Turunkan tingkatan paket yang diberikan"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Usang: Silakan gunakan --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Naikkan tingkatan sistem dalam cara aman"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Meningkatkan Sistem, mungkin akan ada pemasangan dan penghapusan beberapa "
+"Paket"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Tambahkan vendor menjadi yang terpercaya"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Tambahkan keyid vendor (juga butuh --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Pakai keyserver yang diberikan untuk mencari kunci"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Tambahkan repository baru dari baris-deb yang diberikan"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Tentukan berkas sources.list.d alternatif ke repository mana yang seharusnya "
+"akan ditambahkan."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Daftar kunci vendor terpercaya"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Hapus kunci terpercaya dari sidik jari yang diberikan"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Susun ulang paket-paket yang telah terpasang. Secara opsional, prioritas "
+"minimum pertanyaan bisa ditetapkan"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Prioritas minimal debconf dari pertanyaan yang akan ditampilkan"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Jangan lampirkan pada terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Perbolehkan paket-paket dari sumber yang tidak otentik"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Tampilkan informasi tambahan tentang Paket ini. Saat ini hanya menampilkan "
+"nomor versi"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Menunggu otentikasi"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Jangan shutdown daemon karena ketidakaktifan"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Jangan memuat setiap pengaya"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Tampilkan informasi pemrosesan internal"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Berhenti dan mengganti daemon yang sudah berjalan"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Menaruh statistik profil di berkas yang ditentukan"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Jangan melakukan perubahan pada sistem (Hanya untuk developer)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "File terinstall"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paket-paket terinstall"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Tambahkan kunci dari berkas"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Tembolok terbarui"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Pencarian selesai"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Hapus kunci terpercaya"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Hapus paket-paket"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paket-paket sudah terbarui"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistem sudah diperbaharui"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Terapkan perubahan"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Proses instal yang terputus sudah diperbaiki"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Sumber perangkat lunak yang telah ditambahkan"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Mengkonfigurasi ulang paket-paket yang telah terpasang"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Dengan sukses"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Dibatalkan"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Gagal"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Memasang berkas"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Memasang paket-paket"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Tambahkan kunci dari berkas"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Memperbaharui tembolok"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Menghapus kunci yang dipercaya"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Menghapus paket-paket"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Memperbaharui paket-paket"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Upgrade sistem"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Sahkan perubahan"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Sedang melakukan perbaikan instalasi"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Menambahkan sumber perangkat lunak"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Berkas paket gagal diinstal"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Piranti lunak gagal diinstal"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Gagal menampilkan daftar piranti lunak"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Gagal menghapus vendor dari daftar yang aman"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Gagal menghapus piranti lunak"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Gagal memperbarui piranti lunak"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Gagal memperbarui sistem"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Gagal melakukan perubahan perangkat lunak"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Periksa koneksi Internet Anda."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Periksa apakah anda menggunakan repositori pihak ketiga. Jika begitu, "
+"nonaktifkan mereka, karena mereka adalah sumber masalahnya.\n"
+"Selanjutnya jalankan perintah berikut di Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Berkas terpilih mungkin bukan berkas kunci GPG atau berkas mungkin korup."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ini adalah masalah serius. Coba lagi nanti. Jika masalah ini muncul lagi, "
+"tolong laporkan kesalahan ke pengembang."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Tidak perlu untuk melakukan pembaruan."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Tidak perlu untuk melakukan pemasangan."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Tidak perlu untuk melakukan penghapusan."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Anda diminta untuk menghapus sebuah paket yang merupakan bagian penting dari "
+"sistem anda."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Koneksi ke daemon hilang. Daemon background crash."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Pemasangan atau penghapusan Paket peranti lunak gagal."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Sepertinya ada pemrograman yang salah pada aptdaemon, yaitu piranti lunak "
+"yang memperbolehkan Anda memasang/menghapus piranti lunak dan melakukan "
+"tugas-tugas yang berhubungan dengan manajemen Paket."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Pemasangan gagal kemungkinan karena kerusakan pada paket perangkat lunak "
+"atau instalasi dibatalkan dengan paksa. Anda harus memperbaikinya sebelum "
+"menginstal atau menghapus piranti lunak yang lain."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Anda tidak diizinkan melakukan tindakan ini."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Gagal mengunduh berkas paket"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Gagal mengunduh informasi repositori"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Dependensi paket tidak bisa dipecahkan"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Sistem paket rusak"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Kunci tidak terinstal"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Kunci tidak dihapus"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Gagal untuk mengunci manajer paket"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Gagal untuk me-load daftar paket"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paket tidak ada"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paket sudah terinstal"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paket tidak terinstal"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Gagal untuk menghapus paket penting sistem"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tugas tidak dapat dimonitor atau dikontrol"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operasi paket gagal"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Membutuhkan pemasangan dari paket yang tidak terpercaya"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Pemasangan sebelumnya belum selesai"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paket ini berkualitas buruk"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Berkas Paket tidak dapat dibuka"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Terjadi kesalahan yang tidak dapat ditangani"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Menunggu servis untuk memulai"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Sedang menunggu"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Menunggu untuk media yang dibutuhkan"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Menunggu peranti lunak lainnya untuk keluar"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Menunggu prompt berkas konfigurasi"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Tugas yang berjalan"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Mengunduh"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Membersihkan"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Selesai"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Membatalkan"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Memuat daftar perangkat lunak"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Menginstal %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Sedang mengonfigurasi %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Memindahkan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Menjalankan pemacu %s setelah instalasi"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Diperbaharui %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Selesai"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Otentikasi gagal"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Menganggur"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Jaringan tidak tersedia"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Terunduh %sB dari %sB pada %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Terunduh %sB dari %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Rincian"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Berkas"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Terunduh %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Telah diunduh"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Membutuhkan '%s' CD/DVD"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Tolong masukkan CD/DVD ke dalam penggerak '%s' untuk memasang perangkat "
+"lunak darinya."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Pasang"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Memasang ulang"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Hapus"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Meningkatkan"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Menurunkan"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Lewati peningkatan"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Tolong periksa daftar perubahan berikut."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Perangkat lunak tambahan telah terpasang"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Perangkat lunak tambahan telah dipasang ulang"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Perangkat lunak tambahan telah dihapus"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Perangkat lunak tambahan harus ditingkatkan"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Perangkat lunak tembahan harus diturunkan"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Pemutakhiran akan dilewatkan"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Dibutuhkan beberapa perubahan lagi"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Total %sB akan diunduh."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "Apakah akan mengganti '%s' dengan file konfigurasi terbaru?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Jika anda tidak tahu kenapa file tersebut ada di sana, biasanya aman untuk "
+"mengganti file itu."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Perubahan"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Pertahankan"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Timpa"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Rincian"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Mengunduh %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paket %s tidak tersedia"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paket %s tidak terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versi %s dari %s tidak terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paket %s sudah terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versi %s dari %s tidak tersedia"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Gagal mengunduh dan memasang kunci %s dari %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Kunci berkas %s tidak dapat dipasang: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paket %s tidak bisa dihapus"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versi %s dari %s tidak terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Versi lama %s dari %s sudah terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versi %s dari %s sudah terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versi %s dari %s tidak tersedia"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Anda perlu menentukan versi %s yang akan diturunkan"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Versi yang lebih baru %s dari %s sudah terpasang"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paket %s tidak tersedia pada rilis %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paket %s tidak dapat dihapus"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "tapi paket tersebut adalah paket virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "tapi paket tersebut tidak diinstal"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "tapi %s telah terpasang"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "tapi %s yang akan dipasang"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Gagal menambahkan kunci pada daftar piranti lunak yang aman"
diff --git a/po/is.po b/po/is.po
new file mode 100644
index 0000000..b240a27
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,1423 @@
+# translation of po_aptdaemon-is.po to Icelandic
+# Icelandic translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Sveinn í Felli <sveinki@nett.is>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: po_aptdaemon-is\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:54+0000\n"
+"Last-Translator: Sveinn í Felli <sveinki@nett.is>\n"
+"Language-Team: Icelandic <rglug@rglug.org>\n"
+"Language: is\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Breyta stillingum hugbúnaðar"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Til að breyta stillingum hugbúnaðar, þarft þú að auðkenna þig."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Breyta hugbúnaðar uppruna"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Setja upp pakkaskrá"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Til að setja upp þennan pakka, þarft þú að auðkenna þig."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Uppfæra pakkaupplýsingar"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Til að uppfæra hugbúnaðar vörulistann, þarft þú að auðkenna þig."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Setja upp eða fjarlægja pakka"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Til að setja upp eða fjarlægja pakka, þarft þú að auðkenna þig."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Til að setja upp hugbúnað, þarft þú að auðkenna þig."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Uppfæra pakka"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Hætta við aðgerð frá öðrum notanda"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Náði í %sB af %sB hjá %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Náði í %sB af %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Uppsett skrá"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Uppsettir pakkar"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Bæti við lykli frá skrá"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Uppfært skyndiminni"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Fjarlægðir treystir lyklar"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Fjarlægðir pakka"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Uppfærðir pakkar"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Uppfært kerfi"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Skráðar breytingar"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Viðgerð ófullkomin uppsetning"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Viðgerðar brostnar kerfiskröfur"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Hætt við"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Mistókst"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Set upp skrá"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Set upp pakka"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Bæti við lykli frá skrá"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Fjarlægi treystan lykil"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Fjarlægi pakka"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Uppfæri pakka"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Uppfæri kerfið"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Virkja breytingar"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Geri við ófullkomna uppsetningu"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Innsetning hugbúnaðar tókst ekki"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Skráin sem þú hefur valið er hugsanlega ekki GPG lykilskrá eða hún gæti "
+"verið skemmd."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Það er engin þörf fyrir uppfærslu."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Það er engin þörf fyrir uppsetningu"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Það er engin þörf fyrir það að fjarlægja."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakkinn er ekki til"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Bíð eftir að þjónusta ræsist"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Bíð eftir diski sem til þarf"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Bíð eftir að aðrir hugbúnaðarstjórar ljúki sér af"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Bíð eftir kvaðningu úr stillingaskrá"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Keyri verk"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Sæki gögn"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Hleð inn hugbúnaðarlista"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Uppfæri %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Náði í %sB af %sB hjá %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Náði í %sB af %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' er krafist"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Breytingar"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..0712664
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,1503 @@
+# Italian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Luca Ferretti <elle.uca@libero.it>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-28 09:35+0000\n"
+"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Elenca le chiavi di vendor fidati"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"È necessario autenticarsi per visualizzare l'elenco delle chiavi fidate."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Rimuove file di pacchetto scaricati"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "È necessario autenticarsi per pulire i file di pacchetto scaricati."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Modifica la configurazione software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "È necessario autenticarsi per modificare le impostazioni software."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Modifica il repository software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"È necessario autenticarsi per modificare le impostazioni dei repository "
+"software."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installa il file di pacchetto"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "È necessario autenticarsi per installare questo pacchetto."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Aggiorna le informazioni dei pacchetti"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "È necessario autenticarsi per aggiornare il catalogo del software."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installa o rimuove pacchetti"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "È necessario autenticarsi per installare o rimuovere pacchetti."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Installa software da un repository altamente fidato in whitelist"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "È richiesto autenticarsi per installare software"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+"Aggiunge un nuovo repository e installa pacchetti che provengono da questo"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"È necessario autenticarsi per installare software da una nuova sorgente."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Aggiunge un nuovo repository di software acquistato e installa pacchetti che "
+"provengono da questo"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "È necessario autenticarsi per installare software acquistato."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Esegui l'avanzamento dei pacchetti"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "È necessario autenticarsi per installare software aggiornato."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Annulla l'attività di un altro utente"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"È necessario autenticarsi per annullare le modifiche al software fatte da "
+"altri."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Imposta un proxy per scaricare software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "È necessario autenticarsi per usare un proxy per scaricare software."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERRORE"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Scaricati %sB su %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Scaricati %sB su %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERRORE:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Non è consentito compiere questa azione."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Accodamento"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Risoluzione delle dipendenze"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Il seguente pacchetto nuovo verrà installato (%(count)s):"
+msgstr[1] "I seguenti pacchetti nuovi verranno installati (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Il seguente pacchetto verrà aggiornato (%(count)s):"
+msgstr[1] "I seguenti pacchetti verranno aggiornati (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Il seguente pacchetto verrà rimosso (%(count)s):"
+msgstr[1] "I seguenti pacchetti verranno rimossi (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+"Il seguente pacchetto verrà riportato alla versione precedente (%(count)s):"
+msgstr[1] ""
+"I seguentI pacchettI verranno riportati alla versione precedente (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Il seguente pacchetto verrà reinstallato (%(count)s):"
+msgstr[1] "I seguenti pacchetti verranno reinstallati (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Il seguente pacchetto è stato mantenuto (%(count)s):"
+msgstr[1] "I seguenti pacchetti sono stati mantenuti (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "È necessario scaricare %sB di archivi."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Dopo questa operazione verranno utilizzati %sB di spazio aggiuntivo."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Dopo questa operazione verranno liberati %sB di spazio disco."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Continuare? [S/n]"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Per agire su più di un pacchetto mettere i nomi dei pacchetti tra "
+"virgolette:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Aggiorna la cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Provare a risolvere le dipendenze danneggiate (operazione potenzialmente "
+"pericolosa in quanto potrebbe rimuovere molti pacchetti)."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Prova a terminare una precedente installazione incompleta"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installa i pacchetti indicati"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalla i pacchetti forniti"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Rimuove i pacchetti forniti"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Rimuove i pacchetti forniti compresi i file di configurazione"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Porta alla versione precedente i pacchetti selezionati"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Deprecata: usare --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Aggiorna il sistema in modo sicuro"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Aggiorna il sistema, possibilmente installando e rimuovendo pacchetti"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Aggiunge il vendor tra quelli fidati"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Aggiunge l'ID della chiave del vendor (necessario usare anche --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Usa il server di chiavi fornito per cercare le chiavi"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Aggiunge un nuovo repository dalla deb-line fornita"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specifica un file sources.list.d alternativo a cui aggiungere i repository"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Elenca le chiavi fidate dei vendor"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Rimuove la chiave fidata della firma fornita"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Riconfigura i pacchetti installati; la priorità minima delle domande può "
+"essere specificata opzionalmente"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "La priorità debconf minima delle domande da visualizzare"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Non si collega al terminale apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Consente pacchetti da sorgenti non autenticate"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostra informazioni aggiuntive sui pacchetti, attualmente solo il numero di "
+"versione"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "In attesa dell'autenticazione"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Non arresta il demone per inattività"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Non caricare alcun plugin"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostra informazioni di elaborazione interne"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Esce e sostituisce un demone già in esecuzione"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Resta in ascolto sul bus D-Bus di sessione (solo per eseguire test)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Esegue operazioni nel chroot fornito"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Memorizza le statistiche di profilo nel file specificato"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Non applica alcuna modifica al sistema (utile solo per sviluppatori)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "File installati"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pacchetti installati"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Chiave aggiunta dal file"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache aggiornata"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Ricerca terminata"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Chiave fidata rimossa"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pacchetti rimossi"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pacchetti aggiornati"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema avanzato"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Cambiamenti applicati"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Installazione incompleta riparata"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dipendenze mancanti riparate"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Sorgente software aggiunta"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Componente della distribuzione abilitato"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "File di pacchetto scaricati eliminati"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Pacchetti installati riconfigurati"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Riuscito"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Annullato"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Non riuscito"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installazione del file"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installazione pacchetti"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Aggiunta della chiave dal file"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Aggiornamento della cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Rimozione della chiave fidata"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Rimozione dei pacchetti"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Aggiornamento pacchetti"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Avanzamento del sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Applicazione delle modifiche"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Riparazione installazione incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Riparazione software installato"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Aggiunta sorgente software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Abilitazione componente della distribuzione"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Eliminazione dei file di pacchetto scaricati"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Riconfigurazione dei pacchetti installati"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Ricerca"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installazione del file di pacchetto non riuscita"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installazione del software non riuscita"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Aggiunta della chiave all'elenco dei vendor software fidati non riuscita"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Aggiornamento dell'elenco del software non riuscito"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Rimozione del vendor di software dall'elenco di quelli fidati non riuscita"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Rimozione software non riuscita"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Aggiornamento software non riuscito"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Avanzamento del sistema non riuscito"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Applicazione delle modifiche software non riuscita"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Riparazione dell'installazione incompleta non riuscita"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Riparazione delle dipendenze mancanti non riuscita"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Aggiunta della sorgente software non riuscita"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Abilitazione del componente della distribuzione non riuscita"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Eliminazione dei file di pacchetto scaricati non riuscita"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Ricerca non riuscita"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Aggiunta chiave licenza"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Controllare la propria connessione a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Verificare se sono in uso repository di terze parti. Qualora così fosse, "
+"disabilitarli, poiché questi sono talvolta causa di problemi.\n"
+"Inoltre eseguire il seguente comando in un terminale: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Il file selezionato potrebbe non essere un file di chiave GPG o potrebbe "
+"essere danneggiato."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"La chiave selezionata non può essere rimossa. Verificare di aver fornito una "
+"firma valida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Verificare che un altro strumento per la gestione del software (come "
+"Synpatic o aptitude) non sia in esecuzione. Solo uno strumento di gestione "
+"del software è autorizzato a effettuare modifiche."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Questo è un problema grave. Provare di nuovo in un secondo momento. Se il "
+"problema compare ancora, segnalare l'errore agli sviluppatori."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Verificare che il nome del pacchetto sia corretto e che il suo repository "
+"sia attivo."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Non c'è alcuna necessità di un aggiornamento."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Non c'è alcuna necessità di una installazione"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Non c'è alcuna necessità di una rimozione."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"È stato richiesto di rimuovere un pacchetto che è una parte essenziale del "
+"sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"La connessione al demone è stata persa. Probabilmente il demone in "
+"background è andato in crash."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Installazione o la rimozione di un pacchetto software non riuscita."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La funziona richiesta non è supportata."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Sembra esserci un errore di programmazione in aptdaemon, il software che "
+"consente di installare e rimuovere programmi e di eseguire altre attività di "
+"gestione dei pacchetti."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Questo problema potrebbe essere causato dalla mancanza o dalla possibilità "
+"di non installare pacchetti software aggiuntivi. Potrebbe inoltre esserci un "
+"conflitto tra pacchetti software che non possono essere installati nello "
+"stesso momento."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Ciò richiede l'installazione di pacchetti da sorgenti non autenticate."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"L'installazione potrebbe non essere riuscita a causa di un errore nel "
+"relativo pacchetto software oppure non è stata annullata correttamente. È "
+"necessario riparare questo pacchetto prima di poter installare o rimuovere "
+"qualsiasi altro software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Copiare i file nel proprio computer e controllarne i permessi."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"L'installazione di un pacchetto che viola gli standard qualitativi non è "
+"consentita: potrebbe causare seri problemi al proprio computer. Contattare "
+"la persona o la società che ha fornito questo file di pacchetto e includere "
+"i dettagli sottostanti."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La chiave di licenza scaricata, necessaria per eseguire questa parte di "
+"software, non è valida oppure non è installata in modo corretto.\n"
+"Consultare i dettagli per maggiori informazioni."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Tutti gli aggiornamenti disponibili sono già stati installati."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Non è possibile scaricare la chiave di licenza che consente di usare questa "
+"parte di software. Controllare la connessione di rete."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Permessi non sufficienti per eseguire questa azione."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"È stata fornita una password errata o l'autorizzazione è stata annullata.\n"
+"Nel caso in cui non sia stata richiesta la password, potrebbe essere dovuto "
+"a un errore tecnico: l'ambiente grafico non fornisce un servizio per "
+"PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Scaricamento dei file di pacchetto non riuscito"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Scaricamento delle informazioni del repository non riuscito"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Le dipendenze dei pacchetti non possono essere risolte"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Il sistema di pacchetti è danneggiato"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "La chiave non è stata installata"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "La chiave non è stata rimossa"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Blocco del gestore di pacchetti non riuscito"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Caricamento dell'elenco di pacchetti non riuscito"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Il pacchetto non esiste"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Il pacchetto è già aggiornato"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Il pacchetto è già installato"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Il pacchetto non è installato"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Rimozione di pacchetto di sistema essenziale non riuscita"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Impossibile monitorare o controllare le attività"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operazione di pacchetto non riuscita"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Richiede l'installazione di pacchetti non fidati"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "L'installazione precedente non è stata completata"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Il pacchetto è di cattiva qualità"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Impossibile aprire il file di pacchetto"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Funzione non supportata"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Scaricamento della chiave di licenza non riuscito"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Installazione della chiave di licenza non riuscita"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Il sistema è già aggiornato"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Impossibile eseguire l'autorizzazione"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Non è consentito eseguire questa azione"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Si è verificato un errore non gestibile"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "In attesa dell'avvio del servizio"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "In attesa"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "In attesa del supporto richiesto"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "In attesa dell'uscita di altri gestori di software"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "In attesa della richiesta del file di configurazione"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Esecuzione attività"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Scaricamento"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Interrogazione sorgenti software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Pulizia"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Terminato"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Annullamento"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Caricamento elenco software"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installazione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configurazione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Rimozione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Rimozione completa di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Notata la sparizione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Esecuzione comando di post installazione %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Avanzamento di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Estrazione di %s in corso"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparazione dell'installazione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparazione della configurazione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparazione della rimozione di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparazione della rimozione completa di %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Pacchetto %s installato"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Pacchetto %s rimosso completamente"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Pacchetto %s rimosso"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fatto"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autenticazione non riuscita"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Scaricamento"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inattivo"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Rete non disponibile"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Elaborazione di %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Scaricati %sB su %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Scaricati %sB su %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Dettagli"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "File"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Scaricati %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Scaricati"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "È richiesto il CD/DVD «%s»"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Inserire il CD/DVD nell'unità «%s» per installare pacchetti software dal "
+"supporto."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinua"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installa"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalla"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Rimuovi"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Elimina"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Aggiorna"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Retrocedi"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Salta aggiornamento"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Controllare l'elenco delle modifiche."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "È necessario installare software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "È necessario reinstallare software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "È necessario rimuovere software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "È necessario eliminare software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "È necessario aggiornare software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "È necessario retrocedere software aggiuntivo"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Gli aggiornamenti verranno tralasciati"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Sono richieste ulteriori modifiche"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "In tutto verranno scaricati %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Verranno liberati %sB di spazio su disco."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Ulteriori %sB verranno utilizzati sul disco."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Sostituire le proprie modifiche a «%s» con una versione più recente del file "
+"di configurazione?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Qualora si ingori il motivo di questo messaggio, è consigliabile scegliere "
+"di sostituire il file."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "Modifi_che"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Mantieni"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Sostituisci"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Dettagli"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Attesa della chiusura di %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Scaricamento di %(files)s"
+msgstr[1] "Scaricamento di %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repository locale"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Scaricamento da %s"
+msgstr[1] "Scaricamento da %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struttura di %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descrizione di %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Firma della descrizione di %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pacchetti disponibili da %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Sorgenti disponibili da %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduzioni disponibili da %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduzioni per %s (%s) da %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduzioni per %s da %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduzioni (%s) da %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Il pacchetto %s non è disponibile"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Il pacchetto %s non è installato"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La versione %s di %s non è installata"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Il pacchetto %s è già installato"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La versione %s di %s non è disponibile."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "L'URL del server di chiavi non è valido: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocollo del server non valido: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Id della chiave non valido: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Scaricamento e installazione della chiave %s da %s non riusciti:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Impossibile installare il file di chiave %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Impossibile rimuovere la chiave con impronta %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Impossibile rimuovere il pacchetto %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La versione %s di %s non è installata"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "La precedente versione %s di %s è già installata"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La versione %s di %s è già installata"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La versione %s di %s non è disponibile."
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Specificare a quale versione precedente riportare %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "L'ultima versione %s di %s è già installata"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Il pacchetto %s non è disponibile nel rilascio %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Impossibile rimuovere il pacchetto %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Il pacchetto non fornisce un campo di controllo Installed-Size valido. "
+"Consultare la «Debian Policy 5.6.20»."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La chiave di licenza è vuota"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La chiave di licenza non può contenere codice eseguibile."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Il percorso %s della chiave di licenza non è valido."
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La chiave di licenza esiste già: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"La posizione della chiave di licenza non è sicura, poiché contiene "
+"collegamenti simbolici. Il percorso %s è mappato su %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "La directory in cui installare la chiave non esiste ancora: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Scrittura del file chiave su %s non riuscita"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "I seguenti pacchetti presentano dipendenze non soddisfatte:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ma è un pacchetto virtuale"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ma non è installato"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ma non sta per essere installato"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ma %s è installato"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ma %s sta per essere installato"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Aggiunta della chiave all'elenco dei vendor di software fidati non "
+#~ "riuscita"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..f330d06
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,1476 @@
+# Japanese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-24 01:57+0000\n"
+"Last-Translator: Koichi Akabe <vbkaisetsu@gmail.com>\n"
+"Language-Team: Japanese <ja@li.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "信頼できるベンダーの鍵を一覧表示します"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "信頼している鍵のリストを表示するには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "ダウンロードしたパッケージファイルの削除"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"ダウンロードしたパッケージファイルを削除するには、認証する必要があります"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "ソフトウェア設定の変更"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "ソフトウェア設定を変更するには、認証する必要があります"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "ソフトウェアリポジトリの変更"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "ソフトウェアリポジトリの設定を変更するには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "パッケージファイルのインストール"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "このパッケージをインストールするには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "パッケージ情報の更新"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "ソフトウェアカタログを更新するには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "パッケージのインストールまたは削除"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"ソフトウェアをインストールまたは削除するには、認証を行う必要があります。"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"信頼性の高いホワイトリストに載っているリポジトリからソフトウェアをインストー"
+"ルします。"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "ソフトウェアをインストールするには認証が必要です。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "新しいリポジトリを追加してパッケージをインストールします"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "新しいソースからソフトウェアをインストールするには、認証が必要です。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "新しいリポジトリを追加してパッケージをインストールします"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "購入したソフトウェアをインストールするには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "パッケージのアップグレード"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "更新されたソフトウェアをインストールするには、認証が必要です。"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "他のユーザのタスクの中止"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "他人によるソフトウエアの変更を防ぐため、認証が必要です"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "ソフトウェアダウンロードのためのプロキシを設定"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"ソフトウェアのダウンロードにプロキシサーバーを利用するには、認証が必要です。"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "エラー"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB / %sB をダウンロード済(%sB/s)"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB / %sB をダウンロード済"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "エラー:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "このアクションを行う権限がありません。"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "待機中"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "依存関係を解決しています"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "以下の新しいパッケージをインストールします (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "以下のパッケージをアップグレードします (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "以下のパッケージを削除します (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "以下のパッケージをダウングレードします (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "以下のパッケージを再インストールします (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "以下のパッケージはそのままです (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB のアーカイブを取得する必要があります。"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "この操作を行うと、%sB の追加ディスク領域を使用します。"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "この操作を行うと、%sB の追加ディスク領域が開放されます。"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "続けますか? [Y/n]"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"2 個以上のパッケージを操作するにはクォーテーションマークの間にパッケージ名を"
+"入れてください:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "キャッシュを更新"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"壊れた依存関係を修復しようとしています。この操作は多くのパッケージを削除する"
+"可能性がある、危険な作業です。"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "以前の不完全なインストール状態を終了させようとしています"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "指定されたパッケージをインストール"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "指定されたパッケージを再インストール"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "指定されたパッケージを削除"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "設定ファイルを含めて指定されたパッケージを削除"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "指定されたパッケージでダウングレード"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "非推奨: --safe-upgrade を使用してください"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "安全な方法でシステムをアップグレード"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"システムをアップグレードします。パッケージのインストールや削除が行われるかも"
+"しれません。"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "信頼できるベンダーに追加する"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "ベンダーの鍵 ID を追加 (--keyserver も必要)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "鍵の検索に、指定された鍵サーバーを利用する"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "指定された deb-line から新しいリポジトリを追加"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"どのリポジトリを追加するかは、他の sources.list.d ファイルを指定してくださ"
+"い。"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "信頼されたベンダー鍵の一覧"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "指定のフィンガープリントをもつ信頼済の鍵を削除"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"インストール済みのパッケージを再設定します。オプションで質問の優先度を最小に"
+"するよう指定できます。"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "質問の優先度が最小のdebconfのみ表示されます"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "apt terminalをアタッチしないでください"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "認証されていないソースからのパッケージ導入を許可する"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "パッケージの追加情報を表示します。現在はバージョン番号のみです。"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "認証を待っています"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Do not shutdown the daemon because of inactivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "どのプラグインもロードしない"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Show internal processing information"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Quit and replace an already running daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBusセッションバスの接続を待ちます(テスト時のみ必要です"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "指定されたchroot環境で操作を実行します"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Store profile stats in the specified file"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Do not make any changes to the system (Only of use to developers)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "インストール済のファイル"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "インストール済のパッケージ"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "ファイルから鍵を追加しました"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "キャッシュを更新しました"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "検索が完了しました"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "信頼された鍵を削除しました"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "パッケージを削除しました"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "パッケージを更新しました"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "システムをアップグレードしました"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "変更を適用しました"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "不完全なインストール状態を修復しました"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "壊れている依存関係を修復しました"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "追加されたソフトウェアソース"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "ディストリビューションの指定されたコンポーネントを利用可能にしました"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "ダウンロードしたパッケージファイルの削除"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "インストールしたパッケージの再設定"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "成功しました"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "キャンセルされました"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "失敗しました"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ファイルをインストールしています"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "パッケージをインストールしています"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ファイルから鍵を追加しています"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "キャッシュを更新しています"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "信頼された鍵を削除しています"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "パッケージを削除しています"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "パッケージを更新しています"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "システムをアップグレードしています"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "変更を適用しています"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "不完全なインストール状態を修復しています"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "インストール済みのソフトウェアを修復しています"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "ソフトウェアソースの追加"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "ディストリビューションの指定されたコンポーネントを利用可能にしています"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "ダウンロードしたパッケージファイルの削除中"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "インストールしたパッケージの再設定中"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "検索"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "パッケージのインストールに失敗しました"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "ソフトウェアのインストールに失敗しました"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "ソフトウェアリストの更新に失敗しました"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "信頼済みリストからのベンダーの削除に失敗しました"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "ソフトウェアの削除に失敗しました"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "ソフトウェアの更新に失敗しました"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "システムのアップグレードに失敗しました"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "ソフトウェアの変更の適用に失敗しました"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "不完全なインストール状態の修復に失敗しました"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "壊れている依存関係の修復に失敗しました"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "ソフトウェアソースの追加に失敗しました"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+"ディストリビューションの指定されたコンポーネントを利用可能にできませんでした"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "ダウンロードしたパッケージファイルの削除に失敗しました"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "検索に失敗しました"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "ライセンスキーの追加"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "インターネット接続を確認してください。"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"サードパーティのリポジトリを使用しているかどうかを確認してください。利用して"
+"いる場合、トラブルの原因になる場合があるので無効にしてください。\n"
+"そのうえで端末から次のコマンドを実行してください: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"選択したファイルはGPG鍵ファイルではないか、壊れている可能性があります。"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"選択された鍵は削除できません。有効なフィンガープリントを入力したか確認してく"
+"ださい"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"他のソフトウェア管理ツールを現在実行していないかどうか確認してください。例: "
+"Synaptic または aptitude。同時にソフトウェアの変更を行えるのは 1 つのツールの"
+"みです。"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"重大な問題が発生しました。もう一度行い、再度問題が生じた場合には開発チームに"
+"エラー報告をお願いします。"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"パッケージ名のスペルや、パッケージに合ったリポジトリが有効になっているか確認"
+"してください。"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "アップデートを必要とするものはありません。"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "インストールを必要とするものはありません。"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "削除を必要とするものはありません。"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "削除を要求したパッケージはシステムの重要な部分に関わるものです。"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"デーモンとの接続が切断されました。バックグラウンドデーモンがクラッシュした可"
+"能性が極めて高いです。"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "ソフトウェアのインストールまたは削除が失敗しました。"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "要求された機能はサポートされていません。"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"ソフトウェアをインストール/削除したり、他のパッケージ管理に関連したタスクを行"
+"うソフトウェアである、aptdaemonのプログラミングエラーのようです。"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"このエラーは必要な追加ソフトウェアパッケージが見つからないかインストールされ"
+"ていないため発生したものです。そのうえ、同時にインストールできないソフトウェ"
+"アパッケージの間で衝突が発生している可能性があります。"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"この操作には認証されていないソースからのパッケージをインストールする必要があ"
+"ります。"
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"関係のあるソフトウェアパッケージでエラーが発生したか、通常ではない方法で中断"
+"されたためインストールに失敗した可能性があります。ソフトウェアをインストール"
+"または削除する前に、この問題を修正する必要があります。"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"ファイルをローカルのコンピュータにコピーして、ファイルの権限をチェックしてく"
+"ださい。"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"品質を満たしていない壊れたパッケージのインストールは許可されていません。コン"
+"ピュータに深刻な問題を発生させる可能性があるからです。詳細については、この"
+"パッケージを作成した人物か組織に連絡してください。"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"このソフトウェアを実行するのに必要なダウンロード済みのライセンスキーが有効で"
+"ないか、または正常にインストールされていません。\n"
+"詳しい情報は詳細を確認してください。"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "すべての利用可能なアップグレードはすでにインストールされています。"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"このソフトウェアの使用を許可するライセンスキーがダウンロードできませんでし"
+"た。ネットワーク接続を確認してください。"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "このアクションを行う権限がありません。"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "パッケージファイルのダウンロードに失敗しました。"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "リポジトリ情報のダウンロードに失敗しました。"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "パッケージの依存性を解決できません。"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "パッケージシステムが壊れています。"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "鍵はインストールされませんでした"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "鍵は削除されませんでした"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "パッケージマネージャーのロックに失敗しました"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "パッケージ一覧の読み込みに失敗しました"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "パッケージが存在しません"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "パッケージはすでに最新です"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "パッケージはインストール済です"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "パッケージはインストールされていません"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "重要なシステムパッケージの削除に失敗しました"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "タスクを監視またはコントロールすることができません"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "パッケージの操作に失敗しました"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "信頼されていないパッケージのインストールが必要です"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "以前のインストールが完了していません"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "パッケージの品質が悪いです"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "パッケージファイルを開けませんでした"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "サポートされていない機能です"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "ライセンスキーのダウンロードに失敗しました"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "ライセンスキーのインストールに失敗しました"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "システムはすでに最新です"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "このアクションを実行する権限がありません"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "ハンドルできないエラーが発生しました"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "処理の開始を待っています"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "待機中"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "要求されたメディアを待っています"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "他のソフトウェアマネージャーの終了を待っています"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "設定ファイルのプロンプトを待っています"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "タスクを実行中です"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ダウンロード中です"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "ソフトウェアソースに問い合わせています"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "クリーンアップ中です"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "終了しました"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "キャンセルします"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "ソフトウェアの一覧を読み込んでいます"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s をインストールしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s を設定しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s を削除しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s を完全に削除しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%sの消失を記録しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "インストール後トリガ %s を実行しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s をアップグレードしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s を展開しています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s をインストールする準備をしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s を設定する準備をしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s を削除する準備をしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s を完全に削除する準備をしています"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s をインストールしました"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s を完全に削除しました"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s を削除しました"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "完了"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "認証に失敗しました"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "取得しています"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "待機中"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "ネットワークが利用できません"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s を処理中"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB / %sB をダウンロード済(%sB/s)"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB / %sB をダウンロード済"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "詳細情報"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "ファイル"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "ダウンロード済み %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "ダウンロード済"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "'%s' という名のCD/DVDが必要です"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"パッケージをインストールするため、CD/DVDをドライブ '%s' に入れてください。"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "続行(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "インストール"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "再インストール"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "削除"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "完全に削除"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "アップグレード"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "ダウングレード"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "アップグレードをスキップ"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "以下の変更点のリストを確認してください。"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "追加ソフトウェアをインストールする必要があります"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "追加ソフトウェアを再インストールする必要があります"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "追加ソフトウェアを削除する必要があります"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "完全に削除されようとしている追加のソフトウエア"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "追加ソフトウェアをアップグレードする必要があります"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "追加ソフトウェアをダウングレードする必要があります"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "アップグレードはスキップされます"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "追加の変更が必要です"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "全部で %sB がダウンロードされます。"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB のディスクスペースが開放されます。"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "少なくとも %sB のディスクスペースが使用されます。"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "変更されている '%s' を最新バージョンの設定ファイルで置き換えますか?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"そのファイルが存在している理由が分からない場合は、通常置き換えたほうが安全で"
+"す。"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "変更(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "そのまま(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "置き換える(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "詳細(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "%s の終了を待っています"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "ダウンロード中 %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "ローカルリポジトリ"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "%s からダウンロードしています"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s の構成"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s の詳細"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%sの署名済み詳細ファイル"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s で利用可能なパッケージ"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s で利用可能なソース"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s で利用可能な翻訳"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s(%s)用の%sの翻訳データ"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s用の%sの翻訳データ"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "(%s)用の%sの翻訳データ"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "パッケージ %s は利用できません"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "パッケージ %s はインストールされません"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "バージョン %s の %s はインストールされていません"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "パッケージ %s はインストール済みです"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "バージョン %s の %s は利用できません。"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "キーサーバーのURLが無効です: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "サーバーのプロトコルが無効です: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "キーIDが無効です: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"キー %s を %s からダウンロードしてインストールするのに失敗しました:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "キーファイル %s はインストールできませんでした: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "フィンガープリント %s のキーを削除できませんでした: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "パッケージ %s は削除できません"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "バージョン %s の %s はインストールされていません"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "以前のバージョン %s の %s はインストール済みです"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "バージョン %s の %s はインストール済みです"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "バージョン %s の %s は利用できません"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "ダウングレードする %s のバージョンを指定してください"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "最新バージョン %s の %s はインストール済みです"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "パッケージ %s は %s リリースでは利用できません。"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "パッケージ %s は削除できません"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"このパッケージは、正しいInstall-Sizeが記述されていません。Debian Policy "
+"5.6.20を確認してください。"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "ライセンスキーが空です"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "ライセンスキーに実行コードを含めることはできません。"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "ライセンスキーのパス %s が無効です"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "ライセンスキーはすでに存在しています: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"ライセンスキーの場所はシンボリックリンクを含んでいるため安全ではありません。"
+"パス%sは%sにマップされています。"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "キーのインストール先のディレクトリは存在しません: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "キーの書き込みに失敗しました: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "以下のパッケージは依存関係を満たしていません:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "しかし、仮想パッケージです"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "しかし、インストールされていません"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "しかし、インストールされません"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "しかし、%s はインストール済みです"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "しかし、%s はインストールされます"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "信頼済みソフトウェアベンダーリストへの鍵の追加に失敗しました"
diff --git a/po/kk.po b/po/kk.po
new file mode 100644
index 0000000..61a3599
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,1438 @@
+# Kazakh translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-08-19 16:56+0000\n"
+"Last-Translator: jmb_kz <Unknown>\n"
+"Language-Team: Kazakh <kk@li.org>\n"
+"Language: kk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Сенімді жабдықтаушылардың кілттер тізімі"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Сенімді кілттер тізімін көру үшін, аутентификация қажет."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Жүктелген пакеттер файлдарын өшіру"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Бағдарламалар қайнар көздерін өзгерту"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Пакет файлын орнату"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Осы пакетті орнату үшін, аутентификация қажет."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Пакет туралы ақпаратты жаңарту"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Бағдарламалар тізімдемесін жаңарту үшін, аутентификация қажет."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Пакеттерді орнату немесе жою"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Жаңа репозиторий қосып, оның ішінен пакеттерді орнату"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Ақылы бағдарламалар жаңа репозиторий қосып, оның ішінен пакеттерді орнату"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Пакетті жаңарту"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Жаңартуларды орнату үшін, аутентификация қажет."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Басқа пайдаланушының пакеттерді басқару тапсырмасын аяқтау."
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Бағдарламаларды жүктеу үшін прокси серверді орнату"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Бағдарламаларды прокси сервер арқылы жүктеу үшін, аутентификация қажет."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ҚАТЕ"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB/s жылдамдықта %sB-нан, %sB жүктелінді"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB-нан, %sB жүктелінді"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ҚАТЕ:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Сізге бұл іс-әрекетті орындауға болмайды."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Тәуелділіктерге рұқсат беру"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sБ ***архивтер*** алу қажет."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Бұл амалдан кейін қосымша %sБ дискілік орын қолданылатын болады."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Бұл амалдан кейін қосымша %sБ дискілік орын болатын болады."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Жалғастыруды қалайсыз ба [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Кэшты жаңарту"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Бұрыңғы аяқталмаған орнатылымды бітіруге тырысу"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Осы пакеттерді орнату"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Осы пакеттерді қайта орнату"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Осы пакеттерді жою"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Осы пакеттерді толық жою (баптаулар файлдарымен бірге)"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Жүйені қауіпсіз әдіспен жаңарту"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Мүмкін болса пакеттерді орнатып та, жойып та жүйені жаңарту"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Жабдықтаушыны сенімділер тізіміне қосу"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Көрсетілген deb-жолынан жаңа қайнар көзді қосу"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Сенімді жабдықтаушылар кілттер тізімі"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Белсенді болмағаны үшін қызметті өшірмеңіз"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Ішкі өңдеу туралы ақпарат көрсету"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Шығу және жұмыс істеп тұрған қызметті алмастыру"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Пайдаланушы туралы ақпарат статистикасын көрсетілген файлда сақтау"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Жүйеге ешбір өзгертулерді енгізбейді (тек өндірушілер қолдану үшін)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Орнатылған файл"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Орнатылған пакеттер"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Кілт файлдан құрылды"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Жаңартылған кэш"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Сенімді кілт жойылды"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Жойылған пакеттер"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Жаңартылған пакеттер"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Жаңартылған жүйе"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Іске асқан өзгертулер"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Жөнделінген аяқталмаған орнатылым"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Жөнделінген бұзылған тәуелділіктер"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Бағдарлама қайнар көзі тізімге қосылды"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Дистрибутив құрамдас бөлігі іске қосылды"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Сәтті"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Болдырылмаған"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Сәтсіз"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Файлдың орнатылуы"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Пакеттердің орнатылуы"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Кілттің файлдан құрылуы"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Кэштің жаңартылуы"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Сенімді кілттің жойылуы"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Пакеттер жойылуы"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Пакеттердің жаңартылуы"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Жүейнің жаңартылуы"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Өзгерістерді қолдану"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Аяқталмаған орнатылымды жөнделуде"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Бағдарлама қайнар көзін тізімге қосу"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Дистрибутив құрамдас бөлігін іске қосу"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Пакет файлдың орнатылымы сәтсіз"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Бағдарламаны орнату сәтсіз"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Бағдарламалар тізімін жаңарту сәтсіз"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Кілтті сенімді бағдарлама вендорлар тізіміне алып тастау мүмкін емес"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Бағдарламаны жою сәтсіз"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Бағдарламаны жаңарту сәтсіз"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Жүйені жаңарту сәтсіз"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Бағдарламадағы өзгерістерді сақтау сәтсіз"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Аяқталмаған орнатылымды жөндеу сәтсіз аяқталды"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Бұзылған тәуелділіктерді жөндеу сәтсіз аяқталды"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Бағдарлама қайнар көзін тізімге қосу сәтсіз аяқталды"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Дистрибутив құрамдас бөлігін іске қосу сәтсіз аяқталды"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Сіздің Интернетпенен қосылысты тексеру."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Егер сіз шеттегі бағдарламалар көздерін қолданып жатсаңыз, оларды өшіріңіз, "
+"себебі, олар көптеген\n"
+"мәселелер мен қателердің көзі болады. Содан кейін терминалда apt-get install "
+"-f коммандасын орындыңыз."
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Таңдалған файл, GPG кілті емес болуы мүмкін немесе ол бұзылған."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Бұл ауыр мәселе. Кейінірек қайталаңыз. Мәселе тағы да қайталанса, қате "
+"туралы есепті өндірушілерге жіберіңіз."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Жаңартылу қажет емес"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Орнатылым қажет емес"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Жойылуы қажет емес"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Жоюға жүйенің ажырамас бөлігі болып табылатын пакет таңдалынды."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Демон арасында байланыс үзілді. Мүмкін оның жұмысы кенет аяқталды."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Пакеттің орнатылуы немесе жойылуы сәтсіз болады."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Орнатылымның сәтсіз аяқталу, сәйкес пакеттегі қате пайда болу кесірінен "
+"немесе орнатылым дұрыс емес әдіспен үзілгенінен болуы мүмкін. Әрі қарай кез-"
+"келген бағдарламаларды орнату немесе жою үшін, осы қатені жөндеуіңіз қажет."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Сізге бұл іс-әрекетті орындауға болмайды."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Пакеттің файлдарын жүктеу мүмкін емес"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Бағдарламалар көздері туралы мәліметтерді жүктеу сәтсіз"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Пакеттің тәуелділіктері рұқсат берілу мүмкін емес"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Пакеттер жүйесі бұзынған"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Кілт орнатылмаған"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Кілт жойылмаған"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Пакеттер менеджерін қоршау сәтсіз"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Пакеттер тізімін жүктеу сәтсіз"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакет жоқ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакет орнатылып тұр"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакет орнатылмаған"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Маңызды жүйелік пакеттің жойылуы сәтсіз"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Тапсырма көріне немесе басқарылуы мүмкін емес"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Пакеттік операциясы сәтсіз"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Сенімсіз пакеттік орнатылуы тиіс"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Алдыңғы орнатылым аяқталған жоқ"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Қызметтің жүктелуін күту"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Күтіңіз"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Қажетті ақпарат тасымалдауышын күту"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Басқа бағдарламалар менеджерлер жұмысының аяқталуын күту"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Конфигурациялық файл сұранысын күту"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Орындалатын тапсырма"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Жүктелуде"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Тазарту"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Бітті"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Болдырмау"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Бағдарламалар тізімі жүктелуде"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s орнатылуда"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s қалыпқа келтірілуде"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s жойылуда"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "%s орнатылымнан кейінгі триггер орындалуда"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s жаңартылуда"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Орындалды"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Аутентификация сәтсіз"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Жүктелу"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Желі қол жетімсіз"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB/s жылдамдықта %sB-нан, %sB жүктелінді"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB-нан, %sB жүктелінді"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Толық ақпарат"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Файл"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Жүктелген %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Жүктелген"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "\"%s\" CD/DVD қажет"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Жалғастыру"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Орнату"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Қайта орнату"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Жою"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Тазарту"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Жаңарту"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Нұсқаны төмендету"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Жаңартуды өткізіп жіберу"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Қосымша бағдарламалық қамтамасыздандыру орнатылуы тиіс"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Қосымша бағдарламалық қамтамасыздандыру қайта орнатылуы тиіс"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Жаңартулар қарастырылмайтын болады"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Қосымша өзгертулер қажет"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Толығымен %sB жүктелінетін болады."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sБ дискілік орын босатылатын болады."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sБ қосымша дискілік орын қолданылатын болады."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Өзіңізбен өзгертілген \"%s\" файлды, оның соңғы нұсқасымен алмастыруды "
+"қалайсыз ба?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Егер сіз, ол файлдың осы жерде қайдан пайда болғанын білмеген жағдайда, оны "
+"әдеттегідей, қауіпсіз жерге көшіріңіз."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Өзгерістер"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Қалдыру"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Алмастыру"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Толық ақпарат"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Кілтті сенімді бағдарлама вендорлар тізіміне қосу мүмкін емес"
diff --git a/po/km.po b/po/km.po
new file mode 100644
index 0000000..c699798
--- /dev/null
+++ b/po/km.po
@@ -0,0 +1,1439 @@
+# translation of po_aptdaemon-km.po to Khmer
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2012.
+# Khmer translation for aptdaemon
+msgid ""
+msgstr ""
+"Project-Id-Version: po_aptdaemon-km\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-03 02:39+0000\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "រាយ​បញ្ជី​សោ​​របស់​ក្រុមហ៊ុន​លក់​ដែល​ជឿ​ទុកចិត្ត"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "មើល​បញ្ជី​របស់​​សោ​​​ដែល​ជឿ​ទុកចិត្ត អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "យក​ឯកសារ​កញ្ចប់​ដែល​បាន​ទាញ​យក​ចេញ"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "សម្អាត​ឯកសារ​កញ្ចប់​ដែល​បាន​ទាញ​យក អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "ផ្លាស់ប្ដូរ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ផ្នែកទន់"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "ផ្លាស់ប្ដូរ​ការ​កំណត់​ផ្នែក​ទន់ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "ផ្លាស់ប្ដូរ​ឃ្លាំង​ផ្នែកទន់"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "ផ្លាស់ប្ដូរ​ការ​កំណត់​ឃ្លាំង​ផ្នែក​ទន់ អ្នក​​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "ដំឡើង​ឯកសារ​កញ្ចប់"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "ដំឡើង​កញ្ចប់​នេះ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព​ព័ត៌មាន​កញ្ចប់"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព​កាតាឡុក​ផ្នែក​ទន់ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "ដំឡើង ឬ​យក​កញ្ចប់​ចេញ"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "ដំឡើង ឬ​យក​ផ្នែក​ទន់​ចេញ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "បន្ថែម​ឃ្លាំង​ថ្មី និង​ដំឡើង​កញ្ចប់​ពី​​​​ឃ្លាំង​នេះ"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "ដំឡើង​ផ្នែក​ទន់​ពី​ប្រភព​ថ្មី អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "បន្ថែម​ឃ្លាំង​ថ្មី​នៃ​ផ្នែក​ទន់​ដែល​បាន​ជាវ ហើយ​ដំឡើង​កញ្ចប់​ពី​វា"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "ដំឡើង​ផ្នែក​ទន់​ដែល​បាន​ជាវ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "ធ្វើ​ឲ្យ​កញ្ចប់​ប្រសើរ​ឡើង"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "ដំឡើង​ផ្នែក​ទន់​ដែល​បាន​ធ្វើ​បច្ចុប្បន្នភាព អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "បោះបង់​​កិច្ចការ​របស់​អ្នក​ប្រើ​ផ្សេងទៀត"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "បោះបង់​ការ​ផ្លាស់ប្ដូរ​ផ្នែក​ទន់​ផ្សេង​ទៀត អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "កំណត់​ប្រូកស៊ី​សម្រាប់​ការ​ទាញ​យក​ផ្នែក​ទន់"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "ប្រើ​ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី​សម្រាប់​​ទាញ​យក​ផ្នែក​ទន់ អ្នក​ចាំបាច់​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "កំហុស"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "បាន​ទាញ​យក %sB of %sB at %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "ទាញ​យក %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "កំហុស ៖"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "អ្នក​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ប្រតិបត្តិ​សកម្មភាព​នេះ​ទេ ។"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "រៀប​ជា​ជួរ"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "ដោះស្រាយ​ភាព​អាស្រ័យ"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "កញ្ចប់​ថ្មី​ដូច​ខា​ងក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង (%(count)s): ៖"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "កញ្ចប់​ដូច​ខាង​ក្រោម​នឹង​ត្រូវ​បាន​ធ្វើ​ឲ្យ​ប្រសើ​រឡើង (%(count)s): ៖"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "កញ្ចប់​ដូច​ខាង​ក្រោម​នឹង​ត្រូវ​បាន​យក​ចេញ (%(count)s): ៖"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "កញ្ចប់​ដូច​ខាង​ក្រោម​នឹង​ត្រូវ​បាន​បន្ទាប (%(count)s): ៖"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "កញ្ចប់​ដូច​ខាង​​ក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង​ឡើង​វិញ (%(count)s): ៖"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "កញ្ចប់​ដូច​ខាងក្រោម​ត្រូវ​បាន​​បន្ថយ​ក្រោម (%(count)s): ៖"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "ត្រូវ​ទទួល​យក %sB នៃ​​​ប័ណ្ណសារ ។"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "បន្ទាប់​ពី​​ការ​ប្រតិបត្តិការ​នេះ %sB នៃ​ទំហំ​ថាស​បន្ថែម​នឹង​ត្រូវ​បាន​ប្រើ ។"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "បន្ទាប់​ពី​ការ​ប្រតិបត្តិការ​នេះ %sB នៃ​ទំហំ​ថាស​បន្ថែម​នឹង​​ទំនេរ ។"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "តើ​អ្នក​ចង់​បន្ត​ [Y/n] ឬ ?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"ដើម្បី​ប្រតិបត្តិ​ការ​​​កញ្ចប់​ច្រើន​ជាង​មួយ ដាក់​ឈ្មោះ​កញ្ចប់​នៅ​ក្នុង​សញ្ញា​​សម្រង់ ៖\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "ធ្វើ​ឲ្យ​ឃ្លាំង​ស្រស់"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"ព្យាយាម​​ដោះស្រាយ​ភាព​អាស្រ័យ​ដែល​ខូច ។ ប្រតិបត្តិការ​មាន​​គ្រោះថ្នាក់ នៅ​ពេល​​ព្យាយាម​យក​កញ្ចប់​ជា​ច្រើន​ចេញ "
+"។"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "ព្យាយាម​បញ្ចប់​ការ​ដំឡើង​ដែល​មិន​ទាន់​បាន​បញ្ចប់​មុន"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "ដំឡើង​កញ្ចប់​ដែល​បាន​ផ្ដល់"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "ដំឡើង​កញ្ចប់​ដែល​បាន​ផ្ដល់​ឡើងវិញ"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "យក​កញ្ចប់​ដែល​បាន​ផ្ដល់​ចេញ"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "យក​កញ្ចប់​ដែល​បាន​ផ្ដល់​ចេញ​រួម​នឹង​ឯកសារ​ការ​កំណត់​រចនាសម្ព័ន្ធ"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "បន្ទាប​កញ្ចប់​ដែល​បាន​ផ្ដល់"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "បាន​បដិសេធ ៖ សូម​ប្រើ​ --សុវត្ថិភាព​ធ្វើ​ឲ្យ​ប្រសើរ​ឡើង"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "ធ្វើ​ឲ្យ​ប្រព័ន្ធ​នៅ​ក្នុង​មធ្យោបាយ​សុវត្ថិភាព​ប្រសើរ​ឡើង"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "ធ្វើ​ឲ្យ​ប្រព័ន្ធ​ប្រសើរ​ឡើង ​ការ​ដំឡើង និង​យក​កញ្ចប់​ចេញ"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "បន្ថែម​ក្រុមហ៊ុន​លក់​​​ដែល​ជឿ​ទុកចិត្ត"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "បន្ថែម​​លេខ​សម្គាល់​សោ​ក្រុមហ៊ុន​លក់​ (ចាំបាច់​ផង​ដែរ --ម៉ាស៊ីន​បម្រើ​សោ)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "ប្រើ​ម៉ាស៊ីន​បម្រើ​សោ​ដែល​បាន​ផ្ដល់​សម្រាប់​ស្វែងរក​សោ"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "បន្ថែម​ឃ្លាំង​ថ្មី​ពី deb-line ដែល​បាន​ផ្ដល់"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "បញ្ជាក់​ឯកសារ sources.list.d ដែល​ឃ្លាំង​គួរ​តែ​ត្រូវ​បាន​បន្ថែម ។"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "រាយ​បញ្ជី​សោ​ក្រុមហ៊ុន​លក់​ដែល​ជឿ​ទុកចិត្ត"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "យក​សោ​ដែល​ជឿ​ទុកចិត្ត​​នៃ​ស្នាម​ម្រាមដៃ​ដែល​បាន​ផ្ដិត​ចេញ"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​​កញ្ចប់​ដែល​បាន​ដំឡើង​​ឡើងវិញ ។ អាទិភាព​អប្បបរមា​នៃ​សំណួរ​ដែល​អាច​ត្រូវ​បាន​បញ្ជាក់"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "អាទិភាព debconf អប្បបរមា​នៃ​សំណួរ​ដែល​ត្រូវ​បាន​បង្ហាញ"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "កុំ​ភ្ជាប់​ជាមួយ​ស្ថានីយ apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "អនុញ្ញាត​ឲ្យ​កញ្ចប់​ពី​ប្រភព​ដែល​មិន​បាន​ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "បង្ហាញ​ព័ត៌មាន​បន្ថែម​​អំពី​កញ្ចប់ ។ បច្ចុប្បន្ន​មាន​តែ​លេខ​កំណែ​ប៉ុណ្ណោះ"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "កុំ​បិទ​ដេមិន ដោយសារ​តែ​អសកម្មភាព"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "កុំ​ផ្ទុក​កម្មវិធី​ជំនួយ"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "បង្ហាញ​ព័ត៌មាន​អំពី​ដំណើរការ​ខាងក្នុង"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "បោះបង់ និង​ជំនួស​ដេមិន​ដែល​​ដំណើរការ​រួច​ហើយ"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "ស្ដាប់​ខ្សែ​បញ្ជូន​សម័យ​របស់ DBus (បាន​ទាមទារ​ឲ្យ​មាន​ការ​សាកល្បង"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "ធ្វើ​ប្រតិបត្តិការ​នៅ​ក្នុង chroot ដែល​បាន​ផ្ដល់"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "រក្សាទុក​ទម្រង់​នៅ​ក្នុង​ឯកសារ​ដែល​បាន​បញ្ជាក់"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "កុំ​ធ្វើ​ការ​ផ្លាស់ប្ដូរ​ទៅ​កាន់​ប្រព័ន្ធ (ប្រើ​តែ​ចំពោះ​អ្នក​អភិវឌ្ឍន៍​ប៉ុណ្ណោះ)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "បាន​ដំឡើង​ឯកសារ"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "បាន​ដំឡើង​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "បាន​បន្ថែម​សោ​ពី​ឯកសារ"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "បាន​ធ្វើ​បច្ចុប្បន្ន​ឃ្លាំង"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "ស្វែងរក​រួចហើយ"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "បាន​យក​សោ​ដែល​បាន​ជឿ​ទុកចិត្ត​ចេញ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "បាន​យក​កញ្ចប់​ចេញ"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "បាន​ធ្វើ​បច្ចុប្បន្នភាព​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "បាន​ធ្វើ​ឲ្យ​ប្រព័ន្ធ​ប្រសើរ"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "បាន​អនុវត្ត​ការ​ផ្លាស់ប្ដូរ"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "បាន​ជួសជុល​ការ​ដំឡើង​ដែល​មិន​ទាន់​បាន​បញ្ចប់"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "បាន​ជួសជុល​ភាព​អាស្រ័យ​ដែល​ខូច"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "បាន​បន្ថែម​ប្រភព​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "បាន​បើក​សមាសភាគ​នៃ​ការ​ចែកចាយ"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "បាន​យក​ឯកសារ​កញ្ចប់​ដែល​បាន​ទាញ​យក​ចេញ"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "បាន​កំណត់​រចនាសម្ព័ន្ធ​កញ្ចប់​ដែល​បាន​ដំឡើង​ឡើងវិញ"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "ជោគជ័យ"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "បាន​បោះបង់"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "បរាជ័យ"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ដំឡើង​ឯកសារ"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "ដំឡើង​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "បន្ថែម​សោ​ពី​ឯកសារ"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព​ឃ្លាំង"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "យក​សោ​ដែល​ជឿ​ទុកចិត្តចេញ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "យក​កញ្ចប់​ចេញ"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "ធ្វើ​ឲ្យ​ប្រព័ន្ធ​ប្រើសើរ"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "អនុវត្ត​ការ​ផ្លាស់ប្ដូរ"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "ជួសជុល​ការ​ដំឡើង​ដែល​មិន​ទាន់​បាន​បញ្ចប់"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "ជួសជុល​ផ្នែក​ទន់​ដែល​បាន​ដំឡើង"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "បន្ថែម​ប្រភព​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "បើក​សមាសភាគ​នៃ​​ការ​ចែកចាយ"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "យក​ឯកសារ​កញ្ចប់​ដែល​បាន​ទាញ​យក​ចេញ"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កញ្ចប់​ដែល​បាន​ដំឡើង​ឡើងវិញ"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "ស្វែងរក"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ដំឡើង​ឯកសារ​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ដំឡើង​​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ធ្វើ​ឲ្យ​បញ្ជី​ផ្នែក​ទន់​ស្រស់"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​យក​ក្រុមហ៊ុន​លក់​ចេញ​ពី​បញ្ជី​ដែល​ជឿ​ទុកចិត្ត"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​យក​ផ្នែក​ទន់​ចេញ"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ធ្វើ​បច្ចុប្បន្នភាព​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ធ្វើឲ្យ​ប្រព័ន្ធ​ប្រសើរ​ឡើង"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​អនុវត្ត​ការ​ផ្លាស់ប្ដូរ​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ជួសជុល​ការ​ដំឡើង​ដែល​មិន​ទាន់​បាន​បញ្ចប់"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ជួសជុល​ភាព​អាស្រ័យ​ដែល​ខូច"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​បន្ថែម​ប្រភព​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​បើក​សមាសភាគ​​នៃ​ការ​ចែកចាយ"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​យក​​ឯកសារ​កញ្ចប់​ដែល​បាន​ទាញ​យក​ចេញ"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "បាន​បរាជ័យ​​ការ​ស្វែងរក"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "បន្ថែម​សោ​អាជ្ញាប័ណ្ណ"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "ពិនិត្យ​មើល​ការ​តភ្ជាប់​អ៊ីនធឺណិត​របស់​អ្នក ។"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"ពិនិត្យ​មើល ប្រសិនបើ​អ្នក​កំពុង​ប្រើ​ឃ្លាំង​ភាគី​ទី​បី ។ ប្រសិនបើ​បិទ នៅ​ពេល​ដែល​ពួកវា​មាន​ប្រភព​បញ្ហា ។\n"
+"រត់​​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ស្ថានីយ ៖ apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "ឯកសារ​ដែល​បាន​ជ្រើស​​អាច​មិន​មែន​​ជា​ឯកសារ​សោ​របស់ GPG ឬ​វា​អាច​ខូច ។"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "សោ​ដែល​បាន​ជ្រើស​មិន​អាច​យក​ចេញ​បាន​ទេ ។ ពិនិត្យ​មើល​ថា​អ្នក​បាន​ផ្ដិត​ម្រាម​ដៃ​ត្រឹមត្រូវ​​ហើយ​ ។"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"ពិនិត្យមើល ប្រសិនបើ​​អ្នក​កំពុង​ដំណើរការ​ឧបករណ៍​ការ​គ្រប់គ្រង​ផ្នែក​ទន់​បច្ចុប្បន្ន ឧ. Synaptic ឬ "
+"aptitude ។ អនុញ្ញាត​ឲ្យ​តែ​ឧបករណ៍​​ប៉ុណ្ណោះ​ធ្វើ​ការ​ផ្លាស់ប្ដូរ​​នៅ​ពេល​តែ​មួយ​បាន ។"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"វា​ជា​បញ្ហា​ធ្ងន់ធ្ងរ ។ ព្យាយាមម្ដងទៀត ។ ប្រសិនបើ​នៅ​តែ​មាន​បញ្ហា​លេចឡើង​ទៀត​នោះ សូម​រាយការណ៍​កំហុស​​ទៅ​"
+"អ្នក​អភិវឌ្ឍន៍ ។"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "ពិនិត្យមើល​អក្ខរាវិរុទ្ធ​នៃ​ឈ្មោះ​កញ្ចប់ នោះ​ឃ្លាំង​នឹង​ត្រូវ​បាន​បើក​ ។"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "មិន​ចាំបាច់​ធ្វើ​បច្ចុប្បន្នភាព​​ឡើយ ។"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "មិន​ចាំបាច់​​​​ការ​ដំឡើង​ឡើយ"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "មិន​ចាំបាច់​​ការ​យកចេញ​ឡើយ ។"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "អ្នក​បាន​ស្នើ​យក​កញ្ចប់​ចេញ​ដែល​ជា​ផ្នែក​ចាំបាច់​របស់​ប្រព័ន្ធ​របស់​អ្នក ។"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "ការ​តភ្ជាប់​ទៅកាន់​ដេមិន​ខូច ។ ភាគច្រើន​ដេមិន​ផ្ទៃខាងក្រោយ​គាំង ។"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​​ដំឡើង ឬ​​ក្នុង​ការ​យក​កញ្ចប់​ផ្នែក​ទន់​ចេញ ។"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "មិន​គាំទ្រ​លក្ខណ​ពិសេស​ដែល​បាន​ស្នើ​ឡើយ"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"ហាក់​បី​ដូច​​ជា​​មាន​កំហុស​ក្នុង​ការ​សរសេរ​កម្មវិធី​នៅ​ក្នុង aptdaemon ផ្នែក​ទន់​ដែល​អនុញ្ញាត​ឲ្យ​អ្នក ដំឡើង/​យក​"
+"ចេញ ផ្នែក​ទន់ ត្រូវ​ប្រតិបត្តិ​កិច្ចការ​ដែល​ទាក់ទង​ការ​គ្រប់គ្រង​កញ្ចប់​ផ្សេង ។"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"កំហុស​នេះ​អាច​បណ្ដាល​មក​ពី​​​កញ្ចប់​ផ្នែក​ទន់​​​បន្ថែម​ដែល​បាន​ទាមទារ ខូច​ឬ​មិន​អាច​ដំឡើង​បាន ។ អាច​ប៉ះ​ទង្គិច​រវាង​"
+"កញ្ចប់​ផ្នែក​ទន់ ដែល​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ដំឡើង​នៅ​ពេល​តែមួយ ។"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"ការ​ដំឡើង​អាច​បរាជ័យ ដោយសារ​តែ​​មាន​កំហុស​នៅ​ក្នុង​កញ្ចប់​ផ្នែក​ទន់​មិន​ត្រូវគ្នា ឬ​វា​អាច​ត្រូវ​បាន​បោះបង់​ ។ អ្នក​"
+"ត្រូវ​ជួសជុល​វា​សិន មុន​ពេល​អ្នក​ដំឡើង ឬ​យក​ផ្នែក​ទន់​ចេញ ។"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "សូម​ចម្លង​ឯកសារ​ទៅកាន់​កុំព្យូទ័រ​មូលដ្ឋាន​របស់​អ្នក ហើយ​ពិនិត្យ​មើល​សិទ្ធ​ឯកសារ ។"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"ការ​ដំឡើង​កញ្ចប់​​ដែល​ផ្អាក​ស្តង់ដារ​គុណភាព​មិន​​ត្រូវ​បាន​អនុញ្ញាត​ឡើយ ។ វា​​អាច​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ធ្ងន់ធ្ងរ​នៅ​"
+"លើ​កុំព្យូទ័រ​របស់​អ្នក ។ សូម​ទាក់ទង​អង្គភាព ឬ​អ្នក​ដែល​បាន​ផ្ដល់​ឯកសារ​កញ្ចប់​នេះ ។"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"សោ​អាជ្ញាប័ណ្ណ​ដែល​បាន​ទាញ​យក​ត្រូវ​បាន​ទាមទារ ដើម្បី​ដំណើរការ​ផ្នែក​ទន់​​មិន​ត្រឹមត្រូវ ឬ​មិន​អាច​ត្រូវ​បាន​​​ដំឡើង​​​"
+"បច្ចុប្បន្ន ។\n"
+"មើល​សេចក្ដី​លម្អិត​សម្រាប់​ព័ត៌មាន​បន្ថែម ។"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "ការ​ធ្វើ​ឲ្យ​ប្រសើរ​ឡើង​​ដែល​មាន​ទាំងអស់​ត្រូវ​បាន​ដំឡើង​រួច​ហើយ ។"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"សោ​អាជ្ញាប័ណ្ណ​​ដែល​អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ផ្នែក​ទន់​អាច​មិន​ត្រូវ​បាន​ទាញ​យក ។ សូម​ពិនិត្យ​មើល​ការ​តភ្ជាប់​បណ្ដាញ​របស់​"
+"អ្នក ។"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "អ្នក​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ប្រតិបត្តិ​សកម្មភាព​នេះ​ទេ ។"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ទាញ​យក​ឯកសារ​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ទាញ​យក​ព័ត៌មាន​​ឃ្លាំង"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "មិន​អាច​ដោះស្រាយ​ភាព​អាស្រ័យ​របស់​កញ្ចប់​ទេ"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "ខូច​ប្រព័ន្ធ​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "មិន​បាន​ដំឡើង​សោ​ឡើយ"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "មិន​បាន​យក​សោ​ចេញ​ឡើយ"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ចាក់សោ​កម្មវិធី​គ្រប់គ្រង​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទុក​បញ្ជី​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "មិន​មាន​កញ្ចប់​ឡើយ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "កញ្ចប់​ត្រូវ​បាន​ធ្វើ​ឲ្យ​ទាន់សម័យ​រួចហើយ"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "បាន​ដំឡើង​កញ្ចប់​រួច​ហើយ"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "មិន​ទាន់​បាន​ដំឡើង​កញ្ចប់​នៅ​ឡើយ​ទេ"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​យក​កញ្ចប់​ប្រព័ន្ធ​ចេញ"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "មិន​អាច​ត្រួតពិនិត្យ​ភារកិច្ច​បាន​ទេ"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "បាន​បរាជ័យ​ប្រតិបត្តិការ​កញ្ចប់"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "ទាមទារ​ការ​ដំឡើង​កញ្ចប់​ដែល​មិន​ជឿ​ទុកចិត្ត"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "ការ​ដំឡើង​មុន​មិន​ទាន់​ត្រូវ​បាន​បញ្ចប់​នៅ​ឡើយ​ទេ"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "កញ្ចប់​គ្មាន​គុណភាព"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "មិន​អាច​បើក​ឯកសារ​កញ្ចប់​បាន​ទេ"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "គ្មាន​លក្ខណ​ពិសេស​ដែល​បាន​គាំទ្រ​ឡើយ"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ទាញ​យក​សោ​អាជ្ញាប័ណ្ណ"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​​ដំឡើង​សោ​អាជ្ញាប័ណ្ណ"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "ប្រព័ន្ធ​ហួស​សម័យ​ហើយ"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "បាន​កើត​ឡើង​កំហុស​ដែល​មិន​អាច​ដោះស្រាយ​បាន"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "កំពុង​រង់​ចាំ​សេវា​ចាប់ផ្ដើម"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "រង់ចាំ"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "រង់ចាំ​ទាមទារ​មធ្យម"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "រង់ចាំ​កម្មវិធី​គ្រប់គ្រង​ផ្នែក​ទន់​ផ្សេងទៀត ដើម្បី​បោះបង់"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "រង់ចាំ​ប្រអប់​បញ្ចូល​​ឯកសារ​ការ​កំណត់​រចនាសម្ព័ន្ធ"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "កំពុង​ដំណើរការ​ភារកិច្ច"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ការ​ទាញ​យក"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "សួរ​ប្រភព​ផ្នែក​ទន់"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "សម្អាត"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "បាន​បញ្ចប់"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "បោះបង់"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "បោះបង់​បញ្ជី​ផ្នែក​ទន់"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "ដំឡើង %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "យកចេញ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "យក​ចេញ %s បាន​បញ្ចប់"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "សម្គាល់​ភាព​បាត់បង់​នៃ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "ដំណើរការ​ការ​ដំឡើង​ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "ធ្វើ​ឲ្យ​ឲ្យ​ប្រសើរ​​ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "ស្រាយ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "រៀបចំ​ការ​ដំឡើង %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "រៀបចំ​ការ​កំណត់​រចនាសម្ព័ន្ធ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "រៀបចំ​ការ​យក​ចេញ​ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "រៀបចំ​ការ​យក​ចេញ​បញ្ចប់​នៃ​​ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "បាន​ដំឡើង %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "បាន​យក %s ចេញ​បញ្ចប់​ទាំងស្រុង"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "បាន​យក​ចេញ %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "ធ្វើ​រួច"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "ទៅ​ប្រមូល​យក"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "ទំនេរ"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "គ្មាន​បណ្ដាញ​ឡើយ"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "ដំណើរការ %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "បាន​ទាញ​យក %sB of %sB at %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "ទាញ​យក %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "សេចក្ដី​លម្អិត"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "ឯកសារ"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "បាន​ទាញ​យក %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "បាន​ទាញ​យក"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "ទាមទារ ស៊ីឌី​​/ឌីវីឌី '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "សូម​បញ្ចូល​ ស៊ីឌី/ឌីវីឌី ខាងលើ​ទៅ​ក្នុង​ដ្រាយ '%s' ដើម្បី​ដំឡើង​កញ្ចប់​ផ្នែក​ទន់​ ។"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "បន្ត"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "ដំឡើង"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "ដំឡើង​ឡើងវិញ"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "យកចេញ"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "លុប​បំបាត់"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "ធ្វើ​ឲ្យ​ប្រសើរ"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "បន្ទាប"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "រំលង​ការ​ធ្វើ​ឲ្យ​ប្រើសើរ"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "សូម​មើល​បញ្ជី​សម្រាប់​ការ​ផ្លាស់ប្ដូរ​ខាងក្រោម ។"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "ដំឡើង​ផ្នែក​ទន់​ដែល​​បន្ថែម"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "ដំឡើង​ផ្នែក​ទន់​​ដែល​បន្ថែម​ឡើង​វិញ"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "យក​ចេញ​ផ្នែក​ទន់​ដែល​​បន្ថែម"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "លុប​បំបាត់​ផ្នែក​ទន់​ដែល​បន្ថែម"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "ធ្វើ​ឲ្យ​​ផ្នែក​ទន់​ដែល​បន្ថែម​ប្រសើរ"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "បន្ទាប​ផ្នែក​ទន់​ដែល​បន្ថែម"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "រំលង​ការ​ធ្វើ​បច្ចុប្បន្នភាព"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "ទាមទារ​ការ​ផ្លាស់ប្ដូរ​ដែល​បន្ថែម"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB នឹង​ត្រូវ​បាន​ទាញ​យក​ជា​សរុប ។"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "មាន​ទំហំ​ថា %sB ទំនេរ ។"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "ទំហំ​ថាស​​ច្រើន %sB នឹង​ត្រូវ​បាន​ប្រើ ។"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "ជំនួស​ការ​ផ្លាស់ប្ដូរ​របស់​អ្នក​នៅ​ក្នុង '%s' ជាមួយ​កំណែ​ថ្មី​​របស់​ឯកសារ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ឬ ?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "ប្រសិនបើ​អ្នក​មិន​ស្គាល់​មូលហេតុ​ឯកសារ​នោះ​ទេ តាម​ធម្មតា​វា​មាន​​សុវត្ថិភាព​ក្នុង​ការ​ជំនួស​វា ។"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "ការ​ផ្លាស់ប្ដូរ"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "រក្សាទុក"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "ជំនួស"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "សេចក្ដី​លម្អិត"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "រង់ចាំ %s ដើម្បី​ចាកចេញ"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "ទាញយក %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "ឃ្លាំង​មូលដ្ឋាន"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Downloading from %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "រចនាសម្ព័ន្ធ %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "សេចក្ដី​ពិពណ៌នា​អំពី %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "សេចក្ដី​ពិពណ៌នា​អំពី​ហត្ថលេខា %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "កញ្ចប់​ដែល​មាន​ពី %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "ប្រភព​ដែល​មាន​ពី %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "ការ​បកប្រែ​ដែល​មាន​ពី %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "ការ​បកប្រែ %s (%s) ពី %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "ការ​បកប្រែ​ %s ពី %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "ការ​បកប្រែ​ (%s) ពី %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "គ្មាន​កញ្ចប់ %s ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "មិន​បាន​ដំឡើង​កញ្ចប់ %s ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "មិន​បាន​ដំឡើង​កំណែ %s របស់ %s ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "បាន​ដំឡើង​កញ្ចប់ %s រួចហើយ"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "មិន​មាន​កំណែ %s របស់ %s ឡើយ ។"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"បាន​បរាជ័យ​​ក្នុង​ការ​ទាញ​យក និង​ដំឡើង​សោ %s ពី %s ៖\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "មិន​អាច​ដំឡើង​ឯកសារ​សោ %s បាន​ទេ ៖ %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "មិន​អាច​យក​ចេញ​សោ​ដែល​មាន​​ស្នាម​ផ្ដិត​ម្រាមដៃ %s បាន​ទេ ៖ %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "មិន​អាច​យក​​​ចេញ​កញ្ចប់ %s ​បាន​ទេ ។"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "មិន​បាន​ដំឡើង​កំណែ %s របស់ %s ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "បាន​ដំឡើង​កំណែ​មុន %s របស់ %s រួច​ហើយ"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "បាន​ដំឡើង​កំណែ %s របស់ %s រួច​ហើយ"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "គ្មាន​កំណែ %s របស់ %s ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "អ្នក​ត្រូវ​បញ្ជាក់​កំណែ​ដែល​ត្រូវ​បន្ទាប %s ទៅ"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "បាន​ដំឡើង​កំណែ​ថ្មី %s របស់ %s រួច​ហើយ"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "គ្មាន​​កញ្ចប់ %s នៅ​ក្នុង​ការ​ចេញ​ផ្សាយ %s ឡើយ ។"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "មិន​អាច​យក​​​ចេញ​​កញ្ចប់​ %s ​បាន​ទេ"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"កញ្ចប់​ដែល​មិន​បាន​ផ្ដល់​ឲ្យ​វាល​ត្រួតពិនិត្យ​ទំហំ​ដែល​បាន​ដំឡើង​ត្រឹមត្រូវ ។ សូម​មើល​គោលការណ៍​ដេបៀន 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "សោ​អាជ្ញាប័ណ្ណ​​ទទេ"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "សោ​អាជ្ញាប័ណ្ណ​មិន​ត្រូវ​បាន​អនុញ្ញាត​​មាន​កូដ​ឯកសារ​ប្រតិបត្តិ​បាន​ទេ ។"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "ផ្លូវ​សោ​អាជ្ញាប័ណ្ណ %s មិន​ត្រឹមត្រូវ​ឡើយ"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "សោ​អាជ្ញាប័ណ្ណ​មាន​រួចហើយ ៖ %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr "ទីតាំង​របស់​សោ​អាជ្ញាប័ណ្ណ​គឺ​គ្មាន​សុវត្ថិភាព នៅ​ពេល​វា​មាន​តំណ​ជា​​សញ្ញា ។ ផ្លូវ %s ទៅកាន់ %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "ថត​ដែល​​ត្រូវ​ដំឡើង​សោ​មិន​ទាន់​មាន​នៅ​ឡើយ​ទេ ៖ %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "បាន​បរាជ័យ​ក្នុង​ការ​សរសេរ​ឯកសារ​សោ​ទៅកាន់ ៖ %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "កញ្ចប់​បន្ទាប់​មិន​បាន​​ជួប​ភាព​អាស្រ័យ​ទេ ៖"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ប៉ុន្តែ​​វា​ជា​កញ្ចប់​និម្មិត"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ប៉ុន្តែ​វា​មិន​ត្រូវ​បាន​ដំឡើង​ទេ"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ប៉ុន្តែ​វា​នឹង​មិន​ត្រូវ​បាន​ដំឡើង​ឡើយ"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ប៉ុន្តែ %s ត្រូវ​បាន​ដំឡើង"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ប៉ុន្តែ %s ត្រូវ​បាន​ដំឡើង"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "បាន​​បរាជ័យ​ក្នុង​ការ​បន្ថែម​សោ​ទៅកាន់​បញ្ជី​​របស់​ក្រុមហ៊ុន​លក់​ផ្នែក​ទន់​ដែល​ជឿ​ទុកចិត្ត"
diff --git a/po/kn.po b/po/kn.po
new file mode 100644
index 0000000..ddc120e
--- /dev/null
+++ b/po/kn.po
@@ -0,0 +1,1419 @@
+# Kannada translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2010-10-20 11:33+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: Kannada <kn@li.org>\n"
+"Language: kn\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "ಬೇರೊಬ್ಬ ಬಳಕೆದಾರರ ಕಾರ್ಯವನ್ನು ತೊಡೆದು ಹಾಕು"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 0000000..6bd8a6f
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,1460 @@
+# Korean translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-30 12:15+0000\n"
+"Last-Translator: Kim Boram <boramism@gmail.com>\n"
+"Language-Team: Korean <ko@li.org>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "신뢰하는 공급자의 키 목록"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "신뢰할 수 있는 키의 목록을 보려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "다운로드한 패키지 파일을 제거"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "다운로드한 패키지 파일을 지우려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "소프트웨어 설정 바꾸기"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "소프트웨어 설정을 바꾸려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "소프트웨어 저장소 바꾸기"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "소프트웨어 저장소 설정을 바꾸려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "패키지 파일 설치"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "이 패키지를 설치하려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "패키지 정보 업데이트"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "소프트웨어 카탈로그를 업데이트하려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "패키지 설치 혹은 제거"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "프로그램을 추가 혹은 제거하려면 인증이 필요합니다."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "매우 신뢰하는 저장소에서 소프트웨어 설치"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "소프트웨어를 설치하려면 인증을 해야합니다."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "새 저장소를 추가하고 패키지 설치하기"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "새 소스에서 소프트웨어를 설치하려면 인증이 필요합니다."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "구입한 프로그램의 저장소를 추가하고 패키지 설치"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "구입한 프로그램을 설치하려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "패키지 업그레이드"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "업데이트한 소프트웨어를 설치하려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "다른 사용자의 작업 취소"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "다른 사용자의 바뀐 소프트웨어를 취소하려면 인증이 필요합니다."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "소프트웨어 다운로드 프록시 설정"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "프록시 서버로 소프트웨어를 다운로드하려면 인증이 필요합니다."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "오류"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "다운로드함 %sB of %sB 속도 %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "다운로드함 %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "오류:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "이 작업을 실행할 수 있는 권한이 없습니다."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "대기 중"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "의존성 문제 해결 중"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "새로 설치할 패키지 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "업그레이드할 패키지 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "제거할 패키지 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "하위 버전으로 다운그레이드할 패키지 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "다시 설치할 패키지 (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "그대로 유지할 패키지 (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "압축 파일 %sB를 가져와야 합니다."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "다음 동작은 %sB의 디스크 용량을 추가로 사용합니다."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "다음 동작은 %sB의 디스크 용량을 추가로 확보합니다."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "계속 진행하시겠습니까(Y/N)?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"한 개의 패키지 이상으로 작업하려면 인용 기호로 패키지 이름을 감싸십시오.:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "캐시 다시 읽기"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"망가진 의존성을 해결하려고 합니다. 많은 패키지를 제거할 수도 있는 위험한 작업"
+"입니다."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "이전에 완료하지 못한 설치 다시 시도"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "해당 패키지 다시 설치"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "해당 패키지 다시 설치"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "해당 패키지 제거"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "해당 패키지와 포함된 설정 파일 제거"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "해당 패키지 다운그레이드"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "사용 불가: --safe-upgrade 옵션을 사용하십시오"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "안전하게 시스템 업그레이드"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "패키지를 설치 혹은 제거하면서 시스템 업그레이드"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "해당 공급자를 신뢰하는 항목으로 추가"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "공급자의 키 ID 추가 (--keyserver 옵션도 필요합니다.)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "키를 검색하기 위하여 주어진 키 서버를 사용"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "주어진 deb-line에서 새 공급자를 추가합니다."
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "추가해야 할 공급자의 대안 sources.list.d 파일을 지정합니다."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "신뢰하는 공급자의 키의 목록 표시"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "주어진 지문을 가진 신뢰하는 키 제거"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"설치한 패키지를 다시 설정합니다. 추가적으로 질의의 우선 순위를 최소화할 수 있"
+"습니다."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "표시할 질문의 최소 debconf 우선 순위"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "apt 터미널에 첨부하지 마십시오."
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "인증하지 않은 소스의 패키지를 허용합니다."
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "패키지에 대한 추가 정보 표시. 현재는 버전만 표시 중"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "인증을 기다리는 중"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "중지한 상태이므로 데몬을 종료하지 마십시오"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "어떨 플러그인도 불러오지 않기"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "내부 작업 정보 보이기"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "끝낸 후 이미 실행 중인 데몬 바꾸기"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBUS 세션 버스 듣기 (시험 목적으로만 사용합니다)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "주어진 chroot로 작업 수행"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "명시된 파일내에 프로파일 통계를 저장합니다"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "시스템 바꾸지 않기. (개발자 전용)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "설치한 파일"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "설치한 패키지"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "파일에서 추가한 키"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "업데이트한 캐시"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "검색 완료"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "제거한 신뢰하는 키"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "제거한 패키지"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "업데이트한 패키지"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "업그레이드한 시스템"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "바뀐 내용 적용함"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "완료하지 못한 설치 상태를 복구"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "의존성 문제 해결"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "추가한 소프트웨어 소스"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "사용 중인 배포판의 구성 요소"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "다운로드한 패키지 파일 제거"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "설치한 패키지 다시 설정"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "성공"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "취소함"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "실패"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "파일 설치"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "패키지 설치"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "파일에서 키 추가"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "캐시 업데이트"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "신뢰하는 키를 제거"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "패키지 제거"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "패키지 업데이트"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "시스템 업그레이드"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "바뀐 내용 적용"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "완료하지 못한 설치 상태를 복구 중"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "설치한 소프트웨어 복구"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "소프트웨어 소스 추가"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "배포판의 구성 요소 사용"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "다운로드한 패키지 파일 제거"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "설치한 패키지 다시 설정"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "검색"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "패키지 파일의 설치 실패"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "소프트웨어 설치 실패"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "신뢰하는 소프트웨어 판매자 목록에 기를 추가할 수 없습니다."
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "소프트웨어 목록 다시 읽기 실패"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "신뢰 목록에서 공급자 제거 실패"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "소프트웨어 제거 실패"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "소프트웨어 업데이트 실패"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "시스템 업그레이드 실패"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "소프트웨어의 바뀐 내용 적용 실패"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "완료하지 못한 설치 상태 복구 작업 실패"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "의존성 문제 해결 실패"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "소프트웨어 소스 추가를 실패하였습니다."
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "배포의 구성물 활성화를 실패하였습니다."
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "다운로드한 패키지 파일 제거 실패"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "검색 실패"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "라이선스 키 추가"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "인터넷 연결 상태를 확인하십시오."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"일반적으로 문제의 원인이 되는 서드 파티 저장소를 사용 여부를 확인한 후 사용하"
+"고 있는 서드 파티 저장소를 사용하지 않도록 설정하십시오.또한 다음 명령을 터미"
+"널에서 실행하십시오: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "선택된 파일은 GPG 키 파일이 아니거나 올바르지 않은 파일입니다."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "선택한 키를 제거할 수 없습니다. 올바른 지문을 제공하는지 확인하십시오."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"현재 시냅틱 또는 apttiude와 같은 다른 소프트웨어 관리 도구를 실행 중인지 확인"
+"하십시오. 한번에 한 개의 도구만이 시스템을 바꿀 수 있습니다."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"이것은 심각한 문제입니다. 잠시 뒤 다시 시도하십시오. 만약 이러한 문제가 계속 "
+"발생한다면 개발자에게 오류를 보고해 주십시오."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"패키지 이름의 철자를 확인하십시오, 패키지 이름으로 적합한 저장소를 사용하도"
+"록 합니다."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "업데이트할 필요가 없습니다."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "설치할 필요가 없습니다"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "제거할 필요가 없습니다."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "시스템의 필수 패키지를 제거할 것을 요청했습니다."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"데몬 연결을 잃어 버렸습니다. 백그라운드 데몬이 충돌한 것이 이유일 가능서이 높"
+"습니다."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "소프트웨어의 설치 혹은 제거에 실패했습니다."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "요청한 기능을 지원하지 않습니다."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"이 것은 aptdaemon의 프로그래밍 오류인 것 같습니다. 이 소프트웨어는 프로그램"
+"을 설치하고 제거할 수 있게 한 후 작업과 관계 있는 다른 패키지 관리자를 실행합"
+"니다."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"이 오류는 요청한 추가 소프트웨어 패키지가 없거나 설치할 수 없을 경우 발생합니"
+"다.또한 동시에 설치할 수 없는 소프트웨어 패키지의 충돌일 수도 있습니다."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "안전성을 확인하지 않은 출처에서 패키지를 설치해야 합니다."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"패키지에 문제가 있었거나, 설치가 올바르지 않은 방법으로 취소하여 설치 과정에 "
+"실패했습니다.추가 소프트웨어를 설치/제거 하기 전에 우선 이 문제를 해결해야 합"
+"니다."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "파일을 컴퓨터로 복사하여 파일 권한을 확인해보세요."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"품질 기준에 어긋난 패키지를 설치할 수 없습니다. 이것은 컴퓨터에 문제를 일으"
+"킬 수 있습니다.본 패키지를 제공한 사람 혹은 기관에 연락한 후 아래의 정보를 첨"
+"부해주세요."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"이 소프트웨어를 사용하는데 필요한 다운로드 라이선스 키가 유효하지 않거나 올바"
+"로 설치할 수 없습니다.\n"
+"더 많은 정보를 자세한 내용을 확인하십시오."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "사용할 수 있는 모든 업그레이드를 설치했습니다."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"이 소프트웨어를 사용하는데 필요한 라이선스 키를 다운로드할 수 없습니다.네트워"
+"크 연결을 확인하십시오."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "이 동작을 수행할 수 있는 권한이 없습니다."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"올바르지 않은 암호를 입력했거나 인증을 취소했습니다.\n"
+"뿐만 아니라 암호 입력 대화 상자를 볼 수 없는 경우에는 기술적인 원인으로 이 오"
+"류가 발생했을 수 있습니다. 사용자의 데스크톱 환경이 PolicyKit 세션 에이전트"
+"를 제공하지 않습니다."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "패키지 파일 다운로드에 실패했습니다"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "저장소 정보 다운로드에 실패함"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "패키지 의존성을 해결할 수 없습니다"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "패키지 시스템이 망가졌습니다"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "키가 설치되지 않았습니다"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "키를 제거하지 않았습니다"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "패키지 관리자를 잠글 수 없습니다"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "패키지 목록을 불러오지 못했습니다"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "패키지가 존재하지 않습니다"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "페키지를 모두 업데이트했습니다"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "패키지를 이미 설치했습니다"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "패키지를 설치되지 않았습니다"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "필수 시스템 패키지를 제거할 수 없습니다"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "작업을 감시하거나 통제할 수 없습니다"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "패키지 작업 실패"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "신뢰할 수 없는 패키지를 설치해야 합니다"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "이전 설치 작업을 완료하지 못했습니다"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "패키지의 품질이 나쁩니다."
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "패키지 파일 열 수 없음"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "지원하지 않는 기능"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "라이선스 키 다운로드 실패"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "라이선스 키 설치 실패"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "시스템을 모두 업데이트했습니다"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "인증할 수 없습니다."
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "이 동작을 수행할 수 있는 권한이 없습니다."
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "처리할 수 없는 오류가 발생하였습니다."
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "서비스 시작을 기다립니다"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "대기 중"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "요구하는 미디어를 기다리는 중"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "다른 소프트웨어 관리자들이 끝나는 것을 기다립니다"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "설정 파일 프롬프트를 기다립니다"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "작업 실행 중"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "다운로드 중"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "소프트웨어 소스 질의"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "지우는 중"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "완료함"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "취소 중"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "소프트웨어 목록을 불러오는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s을(를) 설치하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s을(를) 설정하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s을(를) 제거하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s 완전하게 제거"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s이(가) 사라지지 않음"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "설치 후 트리거 %s을(를) 실행하는 중입니다"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s을(를) 업그레이드 하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s의 압축을 해제하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s을(를) 설치할 준비를 하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s을(를) 설정할 준비를 하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s을(를) 제거할 준비를 하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s을(를) 완전히 제거할 준비를 하는 중"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s을(를) 설치함"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s을(를) 완전히 제거함"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s을(를) 제거함"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "완료"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "인증을 실패했습니다"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "가져오는 중"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "대기"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "네트워크를 사용할 수 없습니다."
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s을(를) 처리하는 중"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "다운로드함 %sB of %sB 속도 %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "다운로드함 %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "자세한 내용"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "파일"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB을(를) 다운로드함"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "다운로드함"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s'이(가) 필요합니다"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"소프트웨어 패키지를 설치하려면 위 CD/DVD을(를) '%s' 드라이브에 넣어주십시오."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "계속(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "설치"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "다시 설치"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "제거"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "완전히 제거"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "업그레이드"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "다운그레이드"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "업그레이드 건너 뛰기"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "아래의 바뀐 내용 목록을 확인하십시오."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "추가 소프트웨어를 설치해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "추가 소프트웨어를 다시 설치해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "추가 소프트웨어를 제거해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "추가 소프트웨어를 완전히 삭제해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "추가 소프트웨어를 업그레이드해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "추가 소프트웨어를 다운그레이드해야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "업데이트를 건너 뜁니다."
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "추가로 바꿔야 합니다."
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "모두 %sB를 다운로드할 것입니다."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "디스크 공간의 %sB가 비울 것입니다."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB의 디스크 공간을 사용할 것입니다."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "파일 '%s'의 바뀐 내용을 최신 설정 파일로 바꾸시겠습니까?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"이유를 알 수는 없어도 파일이 존재한다면 그 파일은 교체해도 안전한 파일입니다."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "바뀐 내용(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "유지(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "바꾸기(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "자세한 내용(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "%s이(가) 끝나는 것을 기다리는 중"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s 다운로드 중"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "로컬 저장소"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "%s에서 다운로드 중"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s 저장소의 서명"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s 저장소 설명"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s 저장소 서명의 설명"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s 저장소에서 사용할 수 있는 패키지"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s 저장소에서 사용할 수 있는 소스"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s 저장소에서 사용할 수 있는 번역"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s)의 번역을 저장소 %s에서 가져오는 중"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s 번역을 저장소 %s에서 가져오는 중"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "번역 (%s), 저장소 %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "다음 패키지를 사용할 수 없습니다 %s"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "다음 패키지가 설치되지 않았습니다 %s"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s 버전의 %s을(를) 설치하지 않았습니다"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "패키지 %s은(는) 이미 설치했습니다"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s의 %s 버전을 이용할 수 없습니다."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "키 서버 주소가 올바르지 않음: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "올바르지 않은 서버 프로토콜: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "올바르지 않은 키 ID: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"키 %s을(를) %s에서 다운로드하고 설치하지 못했습니다:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "키 파일 %s이(가) 설치되지 못했습니다: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "지문이 있는 키 %s을(를) 제거할 수 없었습니다: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "패키지 %s을(를) 제거할 수 없습니다."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "버전 %s의 %s을(를) 설치하지 않았습니다"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "이미 이전 버전 %s의 %s을(를) 설치했습니다."
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "버전 %s의 %s을(를) 이미 설치했습니다."
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s의 %s 버전을 이용할 수 없습니다."
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "%s의 다운그레이드할 버전을 선택해야 합니다."
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "이미 최신 버전 %s의 %s을(를) 설치했습니다."
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s 릴리즈에서 패키지 %s을(를) 사용할 수 없습니다."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "패키지 %s을(를) 제거할 수 없습니다"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"이 패키지는 올바른 설치 용량 정보를 제공하지 않습니다. Debian Policy 5.6.20"
+"을 참고하십시오."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "라이선스 키의 내용이 없음"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "라이선스 키가 내장 실행 코드를 실행할 권한이 없습니다."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "라이선스 키 경로 %s이(가) 올바르지 않습니다"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "라이선스 키가 올바르지 않습니다: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"라이선스 키의 위치가 심볼릭 링크를 포함하고 있기 때문에 불안정합니다.경로 %s"
+"이(가) %s(으)로 연결되었습니다"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "키를 설치할 디렉터리가 아직 존재하지 않습니다: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "키 파일을 작성할 수 없습니다: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "다음 패키지가 충족할 수 없는 의존성을 가지고 있습니다:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "하지만 이것은 가상 패키지입니다."
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "하지만 설치하지 않았습니다."
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "하지만 설치하지 않습니다."
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "하지만 %s은(는) 설치했습니다"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "하지만 %s은(는) 설치했습니다"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "신뢰할 수 있는 소프트웨어 공급자 목록에 키를 추가할 수 없습니다"
diff --git a/po/ku.po b/po/ku.po
new file mode 100644
index 0000000..3d2724d
--- /dev/null
+++ b/po/ku.po
@@ -0,0 +1,1420 @@
+# Kurdish translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:56+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: Kurdish <ku@li.org>\n"
+"Language: ku\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Agahiya pakêtan rojane bike"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Pakêtan bilind bike"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pakêtên sazbûyî"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Pêşbîr hate rojanekirin"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pakêtên rakirî"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pakêt hatin rojanekirin"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Pergal hate bilindkirin"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Guhartin bi kêr hat"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Serkeftî"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Hat betalkirin"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Biserneket"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Pel tê sazkirin"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Pakêt tê sazkirin"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Pêşbîr tê rojanekirin"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Pakêt tên rakirin"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Pakêt tên rojanekirin"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Pergal tê bilindkirin"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Guherandin tên bi kar anîn"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Pelê hilbijartî dibe ku ne pelê mifteyan ya GPG be an jî dibe ku xerabe be."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ky.po b/po/ky.po
new file mode 100644
index 0000000..7249698
--- /dev/null
+++ b/po/ky.po
@@ -0,0 +1,1419 @@
+# Kirghiz translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-05-31 05:38+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Kirghiz <ky@li.org>\n"
+"Language: ky\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ln.po b/po/ln.po
new file mode 100644
index 0000000..49e40af
--- /dev/null
+++ b/po/ln.po
@@ -0,0 +1,1419 @@
+# Lingala translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-08-09 14:09+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Lingala <ln@li.org>\n"
+"Language: ln\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..896def4
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,1490 @@
+# Lithuanian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-09-17 20:17+0000\n"
+"Last-Translator: Aurimas Fišeras <Unknown>\n"
+"Language-Team: Lithuanian <lt@li.org>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Parodyti patikimų tiekėjų raktus"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Patikimų raktų sąrašui peržiūrėti turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Pašalinti atsiųsto paketo failus"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Atsiųstų paketų failų išvalymui turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Keisti programinės įrangos konfigūraciją"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Programinės įrangos nuostatų keitimui turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Keisti programinės įrangos saugyklą"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Programinės įrangos saugyklos nuostatų keitimui turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Įdiegti paketo failą"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Šiam paketui įdiegti turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Atnaujinti paketų informaciją"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Programinės įrangos katalogui atnaujinti turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Įdiegti ir pašalinti paketus"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Programinei įrangai įdiegti ar pašalinti turite patvirtinti tapatybę."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Įdiegti programinę įrangą iš aukšto patikimumo saugyklos baltajame sąraše."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Norėdami įdiegti programinę įrangą turite patvirtinti tapatybę."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Pridėti naują saugyklą ir įdiegti paketus iš jos"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Programinei įrangai iš naujos saugyklos įdiegti turite patvirtinti tapatybę."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Pridėti naują nupirktų programų saugyklą ir įdiegti paketus iš jos"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Nupirktai programinei įrangai įdiegti turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Atnaujinti paketus"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Atnaujintai programinei įrangai įdiegti turite patvirtinti tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Nutraukti kito naudotojo užduotį"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Kieno nors kito programinės įrangos pakeitimų atsisakymui turite patvirtinti "
+"tapatybę."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Nustatyti tarpinį serverį programinės įrangos atsiuntimui"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Tarpinio serverio, programinės įrangos atsiuntimui, naudojimui turite "
+"patvirtinti tapatybę."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "KLAIDA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Atsiųsta %s B iš %s B (%s B/s)"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Atsiųsta %s B iš %s B"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "KLAIDA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Jums neleidžiama atlikti šio veiksmo."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Įtraukiama į eilę"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Sprendžiamos priklausomybių sąsajos"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Šis NAUJAS paketas bus įdiegtas (%(count)s):"
+msgstr[1] "Šie NAUJI paketai bus įdiegti (%(count)s):"
+msgstr[2] "Šie NAUJI paketai bus įdiegti (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Šis paketas bus atnaujintas (%(count)s):"
+msgstr[1] "Šie paketai bus atnaujinti (%(count)s):"
+msgstr[2] "Šie paketai bus atnaujinti (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Šis paketas bus PAŠALINTAS (%(count)s):"
+msgstr[1] "Šie paketai bus PAŠALINTI (%(count)s):"
+msgstr[2] "Šie paketai bus PAŠALINTI (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Šis paketas bus PASENDINTAS (%(count)s):"
+msgstr[1] "Šie paketai bus PASENDINTI (%(count)s):"
+msgstr[2] "Šie paketai bus PASENDINTI (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Šis paketas bus įdiegtas iš naujo (%(count)s):"
+msgstr[1] "Šie paketai bus įdiegti iš naujo (%(count)s):"
+msgstr[2] "Šie paketai bus įdiegti iš naujo (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Šis paketas buvo sulaikytas (%(count)s):"
+msgstr[1] "Šie paketai buvo sulaikyti (%(count)s):"
+msgstr[2] "Šie paketai buvo sulaikyti (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Reikia gauti archyvų %sB."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Po šios operacijos bus sunaudota %sB papildomos vietos diske."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Po šios operacijos bus atlaisvinta %sB papildomos vietos diske."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Ar norite tęsti [T/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Norėdami dirbti su daugiau nei vienu paketu rašykite paketų pavadinimus "
+"kabutėse:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Atnaujinti podėlį"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Mėginti išspręsti sugadintas priklausomybes. Tai potencialiai pavojinga "
+"operacija, nes ji gali mėginti pašalinti daug paketų."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Mėginti užbaigti ankstesnį nebaigtą įdiegimą"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Įdiegti nurodytus paketus"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Iš naujo įdiegti nurodytus paketus"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Pašalinti nurodytus paketus"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Pašalinti nurodytus paketus įskaitant konfigūracijos failus"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Pasendinti nurodytus paketus"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Nebenaudotinas: naudokite --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Saugiai atnaujinti sistemą"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Atnaujinti sistemą, galimai įdiegiant ir pašalinant paketus"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Įtraukti tiekėją į patikimų sąrašą"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Pridėti tiekėjo keyid (taip pat reikia --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Naudoti nurodytą raktų serverį raktų paieškai"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Pridėti naują saugyklą iš deb-eilutės"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Nurodyti alternatyvų sources.list.d failą į kurį turėtų būti pridedamos "
+"saugyklos."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Parodyti patikimų tiekėjų raktus"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Pašalinti patikimą raktą iš duoto kontrolinio kodo"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Perkonfigūruoti įdiegtus paketus. Papildomai gali būti nurodytas mažiausias "
+"klausimų prioritetas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Mažiausias rodomų „debconf“ klausimų prioritetas"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Neprisijungti prie „apt“ terminalo"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Leisti paketus iš nepatvirtinto tapatumo saugyklų"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Rodyti papildomą informaciją apie paketus. Kol kas tik versijos numerį"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Laukiama tapatybės patvirtinimo"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Neišjungti tarnybos dėl neaktyvumo"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Neįkelti jokių papildinių"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Rodyti vidinio apdorojimo informaciją"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Baigti ir pakeisti jau paleistą tarnybą"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Klausytis DBus seanso magistralės (Reikalinga tik testavimui"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Vykdyti operacijas nurodytame „chroot“"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Saugoti profilio statistiką nurodytame faile"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Neatlikti jokių sistemos pakeitimų (naudinga tik kūrėjams)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Įdiegtas failas"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Įdiegti paketai"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Iš failo pridėtas raktas"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Podėlis atnaujintas"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Paieška baigta"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Patikimas raktas pašalintas"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pašalinti paketai"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Atnaujinti paketai"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Atnaujinta sistema"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Pritaikyti pakeitimai"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Pataisytas nebaigtas diegimas"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Pataisytos sugadintos priklausomybės"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Pridėta programinės įrangos saugykla"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Įjungtas distribucijos komponentas"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Pašalinti atsiųsti paketų failai"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Perkonfigūruoti įdiegti paketai"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Sėkmingas"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Nutraukta"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Nepavyko"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Diegiamas failas"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Diegiami paketai"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Pridedamas raktas iš failo"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Atnaujinamas podėlis"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Šalinamas patikimas raktas"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Šalinami paketai"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Atnaujinami paketai"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Atnaujinama sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Pritaikomi pakeitimai"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Taisomas nebaigtas diegimas"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Taisoma įdiegta programinė įranga"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Pridedama programinės įrangos saugykla"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Įjungiamas distribucijos komponentas"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Šalinami atsiųsti paketų failai"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Perkonfigūruojami įdiegti paketai"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Ieškoma"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Nepavyko įdiegti paketo failo"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Nepavyko įdiegti programos"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Nepavyko atnaujinti programinės įrangos sąrašo"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Nepavyko pašalinti tiekėjo iš patikimų sąrašo"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Nepavyko pašalinti programinės įrangos"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Nepavyko atnaujinti programinės įrangos"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Nepavyko atnaujinti sistemos"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Nepavyko pritaikyti programinės įrangos pakeitimų"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Nepavyko pataisyti nebaigto diegimo"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Nepavyko pataisyti sugadintų priklausomybių"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Nepavyko pridėti programinės įrangos saugyklos"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Nepavyko įjungti distribucijos komponento"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Nepavyko pašalinti atsiųstų paketų failų"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Paieška nepavyko"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Pridedamas licencijos raktas"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Patikrinkite interneto ryšį."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Patikrinkite ar naudojate trečiųjų šalių saugyklas. Jei taip, jas išjunkite, "
+"nes jos yra dažnas problemų šaltinis.\n"
+"Be to paleiskite šią komandą terminale: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Pasirinktas failas gali būti sugadintas arba ne GPG rakto failas."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Nepavyko pašalinti pasirinkto rakto. Patikrinkite, kad nurodėte teisingą "
+"kontrolinį kodą."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Patikrinkite ar nėra vykdomas kitas programinės įrangos tvarkymo įrankis, "
+"pvz., „Synaptic“ ar „aptitude“. Vienu metu pakeitimus atlikti gali tik "
+"vienas įrankis."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Tai yra rimta problema. Mėginkite vėliau. Jei problema pasikartos, "
+"praneškite apie klaidą kūrėjams."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Patikrinkite paketo vardo rašybą ir kad įjungta tinkama saugykla."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nėra jokio poreikio atnaujinimui."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nėra jokio poreikio diegimui."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nėra jokio poreikio pašalinimui."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Jūs paprašėte pašalinti paketą, kuris yra būtina sistemos dalis."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Ryšys su tarnyba buvo prarastas. Greičiausiai užstrigo foninė tarnyba."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Programinės įrangos paketo diegimas ar pašalinimas nepavyko."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Paprašyta funkcija yra nepalaikoma."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Panašu, kad „aptdaemon“ programoje, kuri leidžia jums įdiegti, pašalinti "
+"programinę įrangą ir atlikti kitus paketų tvarkymo darbus, yra programavimo "
+"klaida."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ši klaida gali būti sukelta papildomų programinės įrangos paketų, kurių "
+"trūksta ar kurie yra neįdiegiami. Be to, gali būti konfliktas tarp "
+"programinės įrangos paketų, kurie negali būti įdiegti tuo pačiu metu."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Tai reikalauja įdiegti paketų iš saugyklų, kurių tapatumas nenustatytas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Diegimas galėjo nepavykti dėl klaidos atitinkamame programinės įrangos "
+"pakete, arba jis buvo netinkamai nutrauktas. Jūs turite tai pataisyti prieš "
+"diegdami ar šalindami kitą programinę įrangą."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Nukopijuokite failą į vietinį kompiuterį ir patikrinkite failo leidimus."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Paketo, kuris pažeidžia kokybės standartus, įdiegimas neleidžiamas. Tai gali "
+"sukelti rimtų problemų jūsų kompiuteryje. Prašome susisiekti su asmeniu ar "
+"organizacija, kuri pateikė šį paketo failą ir įtraukite žemiau pateiktą "
+"informaciją."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Atsiųstas licencijos raktas reikalingas šiai programinei įrangai paleisti "
+"yra neteisingas ar jo nepavyko teisingai įdiegti.\n"
+"Išsamioje informacijoje pamatysite daugiau informacijos."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Visi prieinami atnaujinimai jau yra įdiegti."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Nepavyko atsiųsti licencijos rakto, kuris leidžia jums naudoti šią "
+"programinę įrangą. Patikrinkite tinklo ryšį."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Jums neleidžiama atlikti šio veiksmo."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Nepavyko atsiųsti paketų failų"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Nepavyko atsiųsti saugyklų informacijos"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Nepavyko nustatyti paketų priklausomybių"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Paketų sistema sugadinta"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Raktas nebuvo įdiegtas"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Raktas nebuvo pašalintas"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Nepavyko blokuoti paketų tvarkytuvės"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Nepavyko įkelti paketų sąrašo"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paketas neegzistuoja"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paketas jau atnaujintas"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paketas jau įdiegtas"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paketas nėra įdiegtas"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Nepavyko pašalinti būtino sistemos paketo"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Užduotis negali būti stebima ar valdoma"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Paketo operacija nepavyko"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Reikalauja nepatikimų paketų įdiegimo"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Ankstesnis diegimas nebuvo baigtas"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paketas yra prastos kokybės"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Nepavyko atverti paketo failo"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nepalaikoma funkcija"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Nepavyko atsiųsti licencijos rakto"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Nepavyko įdiegti licencijos rakto"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistema jau atnaujinta"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Įvyko neapdorojama klaida"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Laukiama kol bus paleista tarnyba"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Laukiama"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Laukiama reikalingos laikmenos"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Laukiama kol išsijungs kitos programinės įrangos tvarkytuvės"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Laukiama konfigūracijos failo pranešimo"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Vykdoma užduotis"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Atsiunčiama"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Užklausiamos programinės įrangos saugyklos"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Išvaloma"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Baigta"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Nutraukiama"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Įkeliamas programinės įrangos sąrašas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Diegiamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Konfigūruojamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Šalinamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Visiškai šalinamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Pastebimas %s dingimas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Vykdomas post-installation trigeris %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Atnaujinamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Išpakuojamas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Ruošiamas %s įdiegimas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Ruošiamas %s konfigūravimas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Ruošiamas %s šalinimas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Ruošiamas %s visiškas pašalinimas"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Įdiegta %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Visiškai pašalintas %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Pašalintas %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Baigta"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Nepavyko nustatyti tapatybės"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Atsiunčiama"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Neužimtas"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Tinklas neprieinamas"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Apdorojomas %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Atsiųsta %s B iš %s B (%s B/s)"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Atsiųsta %s B iš %s B"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Išsamiai"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Failas"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Atsiųsta %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Atsiųsta"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Reikalingas „%s“ CD/DVD"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Įdėkite aukščiau nurodytą CD/DVD į įrenginį „%s“ programinės įrangos "
+"paketams iš jo įdiegti."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Tęsti"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Įdiegti"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Įdiegti iš naujo"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Pašalinti"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Išvalyti"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Atnaujinti"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Sendinti"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Praleisti atnaujinimą"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Patikrinkite pakeitimų sąrašą žemiau."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Papildoma programinė įranga turi būti įdiegta"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Papildoma programinė įranga turi būti įdiegta iš naujo"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Papildoma programinė įranga turi būti pašalinta"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Papildoma programinė įranga turi būti išvalyta"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Papildoma programinė įranga turi būti atnaujinta"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Papildoma programinė įranga turi būti pasendinta"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Atnaujinimai bus praleisti"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Reikalingi papildomi pakeitimai"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB bus atsiųsta iš viso."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB vietos diske bus atlaisvinta."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB vietos diske bus sunaudota."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Perrašyti jūsų pakeitimus faile „%s“ naujesne konfigūracijos failo versija?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Jei jūs nežinote kodėl šis failas ten yra, greičiausiai yra saugu jį "
+"perrašyti."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Pakeitimai"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Palikti"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Pa_keisti"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Išsamiau"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Laukiama kol %s baigs darbą"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Atsiunčiamas %(files)s"
+msgstr[1] "Atsiunčiami %(files)s"
+msgstr[2] "Atsiunčiami %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "vietinė saugykla"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Atsiunčiama iš %s"
+msgstr[1] "Atsiunčiama iš %s"
+msgstr[2] "Atsiunčiama iš %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s struktūra"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s aprašas"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s aprašo parašas"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Prieinami paketai iš %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Prieinamos saugyklos iš %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Prieinami vertimai iš %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) vertimai iš %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s vertimai iš %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Vertimai (%s) iš %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paketas %s neprieinamas"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paketas %s neįdiegtas"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versija %s iš %s nėra įdiegta"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paketas %s jau įdiegtas"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versija %s iš %s nėra galima."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Raktų serverio URL yra netinkamas: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Netinkamas serverio protokolas: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Netinkamas rakto id: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nepavyko atsiųsti ir įdiegti rakto %s iš %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Rakto failas %s negalėjo būti įdiegtas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Raktas su kontroliniu kodu %s negalėjo būti pašalintas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paketas %s negali būti pašalintas."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versija %s iš %s neįdiegta"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Buvusi versija %s iš %s jau įdiegta"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versija %s iš %s jau įdiegta"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versija %s iš %s nėra galima."
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Turite nurodyti versiją %s pasendinimui į"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Vėlesnė versija %s iš %s jau yra įdiegta"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paketas %s neprieinamas %s laidoje."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paketas %s negali būti pašalintas"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paketas nepateikia teisingo „Installed-Size“ valdymo lauko. Žiūrėkite "
+"„Debian Policy“ 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licencijos raktas tuščias"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licencijos rakte negali būti vykdomojo kodo."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Licencijos rakto kelias %s neteisingas"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licencijos raktas jau egzistuoja: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Licencijos rakto vieta yra nesaugi nes joje yra simbolinių nuorodų. Kelias "
+"%s atvaizduojamas į %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Katalogas rakto įdiegimui dar neegzistuoja: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Nepavyko įrašyti rakto failo į: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Šie paketai turi nepatenkintų priklausomybių:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "bet jis yra virtualus paketas"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "bet jis neįdiegtas"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "bet jis nebus įdiegtas"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "bet %s yra įdiegta"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "bet %s nebus įdiegta"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Nepavyko pridėti rakto į patikimų programinės įrangos tiekėjų sąrašą"
diff --git a/po/lv.po b/po/lv.po
new file mode 100644
index 0000000..3a506d0
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,1489 @@
+# Latvian translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+# Rudolfs <rudolfs.mazurs@gmail.com>, 2011, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-06 23:09+0000\n"
+"Last-Translator: Rūdolfs Mazurs <Unknown>\n"
+"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Uzskaitīt uzticamo piegādātāju atslēgas"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Lai skatītu uzticamo atslēgu sarakstu, jums vajadzēs autentificēties."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Izņemt lejupielādēto pakotņu datnes"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Lai attīrītu lejupielādēto pakotņu datnes, jums vajadzēs autentificēties."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Mainīt programmatūras konfigurāciju"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Lai mainītu programmatūras iestatījumus, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Mainīt programmatūras krātuvi"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Lai mainītu programmatūras krātuves iestatījumus, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalēt pakotņu datni"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Lai instalētu šo pakotni, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Atjaunināt informāciju par pakotnēm"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Lai atjauninātu programmatūras katalogu, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalēt vai noņemt pakotnes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Lai instalētu vai noņemtu programmatūru, jums jāautentificējas."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalēt programmatūru no ļoti uzticamas, baltajā sarakstā esošas krātuves."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Lai instalētu programmatūru, jums jāautentificējas."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Pievienot jaunu krātuvi un instalēt pakotnes no tās"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Lai instalētu programmatūru no jauna avota, jums jāautentificējas."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Pievienot jaunu iegādātās programmatūras krātuvi un instalēt pakotnes no tās"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Lai instalētu nopirktu programmatūru, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Uzlabot pakotnes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Lai instalētu atjauninātu programmatūru, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Atcelt cita lietotāja darbību"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Lai atceltu kāda cita programmatūras izmaiņas, jums jāautentificējas."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Iestatīt starpnieku programmatūras lejupielādei"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Lai izmantotu starpnieka serveri programmatūras lejupielādei, jums "
+"jāautentificējas."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "KĻŪDA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Lejupielādēti %sB no %sB ar ātrumu %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Lejupielādēti %sB no %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "KĻŪDA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Jums nav atļaujas veikt šo darbību."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Ievieto rindā"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Atrisina atkarības"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Sekojošā JAUNĀ pakotne tiks instalēta (%(count)s):"
+msgstr[1] "Sekojošās JAUNĀS pakotnes tiks instalētas (%(count)s):"
+msgstr[2] "Sekojošās JAUNĀS pakotnes tiks instalētas (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Sekojošā pakotne tiks uzlabota (%(count)s):"
+msgstr[1] "Sekojošās pakotnes tiks uzlabotas (%(count)s):"
+msgstr[2] "Sekojošās pakotnes tiks uzlabotas (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Sekojošā pakotne tiks NOŅEMTA (%(count)s):"
+msgstr[1] "Sekojošās pakotnes tiks NOŅEMTAS (%(count)s):"
+msgstr[2] "Sekojošās pakotnes tiks NOŅEMTAS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Sekojošā pakotne tiks PAZEMINĀTA (%(count)s):"
+msgstr[1] "Sekojošās pakotnes tiks PAZEMINĀTAS (%(count)s):"
+msgstr[2] "Sekojošās pakotnes tiks PAZEMINĀTAS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Sekojošā pakotne tiks pārinstalēta (%(count)s):"
+msgstr[1] "Sekojošās pakotnes tiks pārinstalētas (%(count)s):"
+msgstr[2] "Sekojošās pakotnes tiks pārinstalētas (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Sekojošā pakotne tika aizturēta (%(count)s):"
+msgstr[1] "Sekojošās pakotnes tika aizturētas (%(count)s):"
+msgstr[2] "Sekojošās pakotnes tika aizturētas (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Vajag saņemt %sB no arhīviem."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Pēc šīs darbības tiks papildu izmantoti %sB diska vietas."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Pēc šīs darbības tiks papildu atbrīvoti %sB diska vietas."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Vai vēlaties turpināt [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Lai darbotos ar vairāk kā vienu pakotni, ievietojiet pakotņu nosaukumus "
+"pēdiņās:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Atsvaidzināt kešatmiņu"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Mēģināt atrisināt neatrisinātās atkarības. Potenciāli bīstama darbība, jo tā "
+"var mēģināt izņemt daudzas pakotnes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Mēģināt pabeigt iepriekšējo nepabeigto instalēšanu"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalēt dotās pakotnes"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Pārinstalēt dotās pakotnes"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Izņemt dotās pakotnes"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Izņemt dotās pakotnes, tai skaitā konfigurācijas datnes"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Pazemināt dotās pakotnes"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Novecojis — lūdzu, izmantojiet --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Uzlabojiet sistēmu drošā veidā"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Uzlabojiet sistēmu, iespējams, instalējot un noņemot pakotnes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Pievienot piegādātāju pie uzticamajiem"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Pievienot piegādātāju pie keyid (arī nepieciešams --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Izmantot doto atslēgu serveri, lai uzmeklētu atslēgas"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Pievienot jaunu krātuvi no dotā deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Norādiet alternatīvu sources.list.d datni, pie kā vajadzētu pievienot "
+"krātuves."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Uzskaitīt uzticamo piegādātāju atslēgas"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Izņemt dotā nospieduma uzticamās atslēgas"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Pārkonfigurēt instalētās pakotnes. Var norādīt minimālo jautājumu prioritāti."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Minimālā debconf prioritāte jautājumam, ko attēlot"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Nepievienot apt terminālim"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Atļaut pakotnes no neautentificētiem avotiem"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Rādīt papildu informāciju par pakotnēm. Pašlaik tikai versijas numuru"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Gaida autentifikāciju"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Neizslēgt dēmonu aktivitātes trūkuma dēļ"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Neielādēt nekādus spraudņus"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Rādīt informāciju par iekšējiem procesiem"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Iziet un aizvietot jau palaisto dēmonu"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Klausīties DBus sesijas kopni (vajadzīgs tikai testēšanai)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Izpildīt darbības dotajā chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Saglabāt profila statistiku norādītā datnē"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Neizdarīt nekādas izmaiņas sistēmā (paredzēts tikai izstrādātājiem)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Instalēja datni"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Instalēja pakotnes"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Pievienoja atslēgu no datnes"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Atjaunināja kešatmiņu"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Meklēšana pabeigta"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Izņēma uzticamu atslēgu"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Izņēma pakotnes"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Uzlaboja pakotnes"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Uzlaboja sistēmu"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Pielietoja izmaiņas"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Salaboja nepabeigtu instalāciju"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Salaboja neatrisinātas atkarības"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Pievienoja programmatūras avotu"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Aktivēja distribūcijas komponenti"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Izņēma lejupielādētās pakotņu datnes"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Pārkonfigurēja instalētās pakotnes"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Veiksmīgi"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Atcelts"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Neveiksmīgi"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalē datni"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalē pakotnes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Pievieno atslēgu no datnes"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Atjaunina kešatmiņu"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Izņem uzticamu atslēgu"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Izņem pakotnes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Atjaunina pakotnes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Uzlabo sistēmu"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Pielieto izmaiņas"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Labo nepabeigtu instalāciju"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Labo instalēto programmatūru"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Pievieno programmatūras avotu"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Aktivē distribūcijas komponenti"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Izņem lejupielādēto pakotņu datnes"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Pārkonfigurē instalētās pakotnes"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Meklē"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Neizdevās instalēt pakotnes datni"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Neizdevās instalēt programmatūru"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Neizdevās atsvaidzināt programmatūras sarakstu"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Neizdevās izņemt piegādātāju no uzticamo saraksta"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Neizdevās noņemt programmatūru"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Neizdevās atjaunināt programmatūru"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Neizdevās uzlabot sistēmu"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Neizdevās pielietot programmatūras izmaiņas"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Neizdevās salabot nepabeigtu instalāciju"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Neizdevās salabot sabeigtas atkarības"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Neizdevās pievienot programmatūras avotus"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Neizdevās aktivēt distribūcijas komponentes"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Neizdevās izņemt lejupielādēto pakotņu datnes"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Meklēšana neizdevās"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Pievieno licences atslēgu"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Pārbaudiet savu Interneta savienojumu."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Lūdzu, pārbaudiet, vai jūs izmantojat trešās puses krātuves. Ja jā, "
+"deaktivējiet tās, jo tās parasti ir problēmu cēlonis.\n"
+"Pēc tam izpildiet šādu komandu terminālī — apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Izvēlētā datne varētu nebūt GPG atslēga vai arī tā ir bojāta."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Nevarēja izņemt izvēlēto atslēgu. Pārliecinieties, ka norādījāt derīgu "
+"nospiedumu."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Pārliecinieties, ka pašlaik neesat atvēruši kādu citu programmatūras "
+"pārvaldības rīku, piemēram, Synaptic vai aptitude. Vienlaicīgi izmaiņas var "
+"veikt tikai viens rīks."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Šī ir nopietna problēma. Mēģiniet vēlāk vēlreiz. Ja šī problēma parādās "
+"vēlreiz, lūdzu, ziņojiet par šo kļūdu izstrādātājiem."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Pārbaudiet pakotnes pareizrakstības nosaukumu un to, ka ir aktivēta "
+"atbilstošā krātuve."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nav nepieciešamības uzlabot."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nav nepieciešamības instalēt."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nav nepieciešamības izņemt."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Jūs pieprasījāt izņemt pakotni, kas ir svarīga sistēmas sastāvdaļa."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Savienojums ar dēmonu tika zaudēts. Visticamāk, ka fona dēmons avarēja."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Neizdevās instalēt vai izņemt programmatūras pakotni."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Pieprasītā iespēja nav atbalstīta."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Izskatās, ka ir programmēšanas kļūda aptdaemon programmā, kas jums ļauj "
+"instalēt un noņemt programmatūru un veikt citus pakotņu pārvaldības "
+"uzdevumus."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Šo kļūdu varētu izraisīt papildu programmatūras pakotnes, kas trūkst vai nav "
+"instalējamas. Vēl varētu būt konflikts starp programmatūras pakotnēm, kuras "
+"nedrīkst būt uzinstalētas vienlaicīgi."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Tas pieprasa instalēt pakotnes no neautentificētiem avotiem."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Instalēšana varētu būt neizdevusies sakarā ar kļūdu atbilstošajā "
+"programmatūras pakotnē, vai arī tā tika pārtraukta nedraudzīgā veidā. Jums "
+"šī situācija jālabo pirms jūs instalējat vai noņemot jebkuru citu "
+"programmatūru."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Lūdzu, kopējiet datni uz savu datoru un pārbaudiet datnes atļaujas."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Nav atļauts instalēt pakotni, kas pārkāpj kvalitātes standarta prasības. Tas "
+"var radīt nopietnas problēmas jūsu datoram. Lūdzu, sazinieties ar personu "
+"vai organizāciju, kas piegādāja šo pakotnes datni un iekļaujiet zemāk "
+"redzamo informāciju."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Lejupielādētā licences atslēga, kas nepieciešama, lai darbinātu šo "
+"programmatūru, nav derīga vai arī nav veiksmīgi instalēta.\n"
+"Lai uzzinātu vairāk, skatieties sīkāku informāciju."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Visi pieejami uzlabojumi jau ir instalēti."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Nevarēja lejupielādēt licences atslēgu, kas ļauj izmantot šo programmatūru. "
+"Lūdzu, pārbaudiet interneta savienojumu."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Jums nav atļaujas veikt šo darbību."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Neizdevās lejupielādēt pakotņu datnes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Neizdevās lejupielādēt informāciju par krātuvi"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakotnes atkarības neizdodas atrisināt"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakotņu sistēma ir salauzta"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Atslēga nebija uzinstalēta"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Atslēga netika noņemta"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Neizdevās noslēgt pakotņu pārvaldnieku"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Neizdevās ielādēt pakotņu sarakstu"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakotne neeksistē"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Jau instalēta pakotnes jaunākā versija"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakotne jau ir uzinstalēta"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakotne nav uzinstalēta"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Neizdevās noņemt svarīgu sistēmas pakotni"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Uzdevumu neizdodas novērot vai kontrolēt"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Darbība ar pakotni neizdevās"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Pieprasa neuzticamu pakotņu instalēšanu"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Iepriekšējā instalēšana nav pabeigta"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Šī ir sliktas kvalitātes pakotne"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Nevarēja atvērt pakotnes datni"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Iespēja nav atbalstīta"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Neizdevās lejupielādēt licences atslēgu"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Neizdevās instalēt licences atslēgu"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistēma jau ir aktuāla"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Gadījās neapstrādājama kļūda"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Gaida servisa palaišanos"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Gaida"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Gaida pieprasīto datu nesēju"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Gaida, kad citi programmatūras pārvaldnieki tiks aizvērti"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Gaida konfigurācijas datnes uzvedni"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Veic darbību"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Lejupielādē"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Vaicā programmatūras avotus"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Uzkopj"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Pabeigts"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Atceļ"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Ielādē programmatūras sarakstu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalē %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Konfigurē %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Izņem %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Pilnībā izņem %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Piefiksē %s pazušanu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Izpilda pēcinstalēšanas trigeri %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Uzlabo %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Atpako %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Sagatavo %s instalēšanu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Sagatavo %s konfigurāciju"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Sagatavo %s izņemšanu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Sagatavo pilnīgu %s izņemšanu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s ir instalēts"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s ir pilnībā izņemts"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s ir izņemts"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Pabeigts"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Neizdevās autentificēties"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Saņem"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Dīkstāvē"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Tīkls nav pieejams"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Apstrādā %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Lejupielādēti %sB no %sB ar ātrumu %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Lejupielādēti %sB no %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Sīkāka informācija"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Datne"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Lejupielādēti %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Lejupielādēti"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Tiek pieprasīts CD/DVD “%s”"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Lūdzu, ievietojiet augstāk minēto CD/DVD dzinī “%s”, lai no tā uzinstalētu "
+"programmatūras pakotnes."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "T_urpināt"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalēt"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Pārinstalēt"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Izņemt"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Iztīrīt"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Uzlabot"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Pazemināt"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Izlaist uzlabošanu"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Lūdzu, apskatiet zemāk esošo izmaiņu sarakstu."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Papildu programmatūra, kas jāinstalē"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Papildu programmatūra, kas jāpārinstalē"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Papildu programmatūra, kas jāizņem"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Papildu programmatūra, kas jāiztīra"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Papildu programmatūra, kas jāuzlabo"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Papildu programmatūra, kas jāpazemina"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Atjauninājumi tiks izlaisti"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Nepieciešamas papildu izmaiņas"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Kopā tiks lejupielādēti %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Tiks atbrīvoti %sB."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Tiks papildus izmantoti %sB."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Aizvietot savas “%s” izmaiņas ar vēlāku šī konfigurācijas datnes versiju?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ja nezināt, kāpēc dotā datne jau ir tur, tad parasti to var droši aizvietot."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Izmaiņas"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Paturēt"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Aizvietot"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Sīkāka informācija"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Gaida, līdz izies %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Lejupielādē %(files)s"
+msgstr[1] "Lejupielādē %(files)s"
+msgstr[2] "Lejupielādē %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokālā krātuve"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Lejupielādē no %s"
+msgstr[1] "Lejupielādē no %s"
+msgstr[2] "Lejupielādē no %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s struktūra"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s apraksts"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s apraksta paraksts"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s pieejamās pakotnes"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s pieejamie avoti"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s pieejamie tulkojumi"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) tulkojumi no %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s tulkojumi no %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "%s tulkojumi no %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakotne %s nav pieejama"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakotne %s nav uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versija %s programmai %s nav uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakotne %s jau ir uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versija %s programmai %s nav pieejama."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Atslēgu servera URL nav derīgs — %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Nederīgs servera protokols — %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Nederīgs atslēgas id — %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Neizdevās lejupielādēt un uzinstalēt atslēgu %s no %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Nevarēja uzinstalēt atslēgas datni %s — %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Atslēgu ar nospiedumu %s nevarēja izņemt — %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Nevar izņemt pakotni %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versija %s programmai %s nav uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Iepriekšējā versija %s programmai %s jau ir uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versija %s programmai %s jau ir uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versija %s programmai %s nav pieejama"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Jums jānorāda versija, uz kuru pazemināt %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Jaunāka versija %s programmai %s jau ir uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakotne %s nav pieejama laidienā %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Nevar izņemt pakotni %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Pakotne nenorāda derīgu Installed-Size kontroles lauku. Skatiet Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licences atslēga ir tukša"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licences atslēgai nav atļauts saturēt izpildāmu kodu"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Licences atslēgas ceļš %s ir nederīgs"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Tāda licence jau pastāv — %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Licences atslēgas atrašanās vieta ir nedroša, jo tā satur simboliskās "
+"saites. Ceļš %s atbilst %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Mape, kurā instalēt atslēgu, vēl neeksistē — %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Neizdevās saglabāt atslēgas datni — %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Sekojošajām pakotnēm ir neapmierinātas atkarības:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "bet tā ir virtuāla pakotne"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "bet tā nav uzinstalēta"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "bet tā netiks uzinstalēta"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "bet %s ir uzinstalēta"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "bet %s tiks instalēta"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Neizdevās pievienot atslēgu uzticamo programmatūras piegādātāju sarakstam"
diff --git a/po/mi.po b/po/mi.po
new file mode 100644
index 0000000..3199351
--- /dev/null
+++ b/po/mi.po
@@ -0,0 +1,1419 @@
+# Maori translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-07-24 03:21+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Maori <mi@li.org>\n"
+"Language: mi\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "I rahua"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Kua oti"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Taipitopito"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Kōnae"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Tāuta"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Tāuta anō"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Tango"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Pupuritia"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Whakakapia"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ml.po b/po/ml.po
new file mode 100644
index 0000000..58c6103
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,1430 @@
+# Malayalam translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-11-21 11:21+0000\n"
+"Last-Translator: Amal Bose <axatrikx@gmail.com>\n"
+"Language-Team: Malayalam <ml@li.org>\n"
+"Language: ml\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "വിശ്വസ്തമായ വസ്തു ഉടമകളുടെ കീ പട്ടിക"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "ഡൗണ്‍ലോഡ് ചെയ്ത ഭണ്ഡാരങ്ങള്‍ നീക്കം ചെയ്യുക"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "ഡൌണ്‍ലോഡ് ചെയ്ത പാക്കേജ് ഫയലുകള്‍ നീക്കം ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "സോഫ്റ്റ്‌വെയര്‍ കോണ്‍ഫിഗറേഷന്‍ മാറ്റുക"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "സോഫ്റ്റ്‌വെയര്‍ ക്രമീകരണത്തില്‍ വ്യത്യാസം വരുത്താന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "സോഫ്റ്റ്‌വെയര്‍ ഭണ്ഡാരം മാറ്റുക"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"സോഫ്റ്റ്‌വെയര്‍ ഭണ്ടാര ക്രമീകരണത്തില്‍ വ്യത്യാസം വരുത്താന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "ഇന്‍സ്റ്റോള്‍ പാക്കേജ് ഫയല്‍"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "ഈ ഭണ്ഡാരം ഇന്‍സ്റ്റോള്‍ ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "സോഫ്റ്റ്‌വെയര്‍ കാറ്റലോഗ് പരിഷ്കരിക്കാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "ഭണ്ഡാരം ഇന്‍സ്റ്റോള്‍ ചെയ്യുകയോ നീക്കം ചെയ്യുകയോ ചെയ്യുക"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "ഡൌണ്‍ലോഡ് ഇന്‍സ്റ്റോള്‍ ചെയ്യണോ നീക്കം ചെയ്യണോ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+"ഒരു പുതിയ ഭണ്ഡാരം കൂട്ടിച്ചേര്‍ക്കുകയും അതില്‍ നിന്നും പുതിയ പാക്കേജ് ഇന്‍സ്റ്റോള്‍ ചെയ്യുകയും ചെയ്യുക"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"മറ്റൊരു ഉറവിടത്തില്‍ നിന്നുള്ള സോഫ്റ്റ്‌വെയര്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത "
+"തെളിയിക്കുക"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"വിലയ്ക്ക് വാങ്ങിയ സോഫ്റ്റ്‌വെയര്‍ ഉള്ള ഒരു പുതിയ ഭണ്ഡാരം കൂട്ടിച്ചേര്‍ക്കുകയും അതില്‍ നിന്നും പുതിയ "
+"പാക്കേജ് ഇന്‍സ്റ്റോള്‍ ചെയ്യുകയും ചെയ്യുക"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "വിലയ്ക്ക് വാങ്ങിയ സോഫ്റ്റ്‌വെയര്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "പരിഷ്കരിച്ച സോഫ്റ്റ്‌വെയര്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "മറ്റു ഉഭയോക്താവിന്റെ കാര്യങ്ങള്‍ നിര്‍ത്തുക"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "മറ്റുള്ളവരുടെ സോഫ്റ്റ്‌വെയര്‍ മാറ്റങ്ങള്‍ റദ്ദാക്കാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"പ്രോക്സി സെര്‍വരിലൂടെ സോഫ്റ്റ്‌വെയര്‍ ഡൌണ്‍ലോഡ് ചെയ്യാന്‍ താങ്കളുടെ വിശ്വാസ്യയോഗ്യത തെളിയിക്കുക"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "ഡിപെന്‍ഡന്‍സികള്‍ റീസോള്‍വു ചെയ്യുന്നു"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "രേഘപെടുത്തിയ ഫയലില്‍ പ്രൊഫൈല്‍ സ്റ്റ്സ് സൂക്ഷിക്കുക"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "ഇന്‍സ്റ്റോള്‍ ചെയ്ത ഫയല്‍"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "ഇന്‍സ്റ്റോള്‍ ചെയ്തിടുള്ള പാക്കേജുകള്‍"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "നീക്കം ചെയ്ത പാക്കേജുകള്‍"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "വിജയകരമായി"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "റദ്ദാക്കപ്പെട്ടു"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "പരാജയപ്പെട്ടു"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ഫയല്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്യുന്നു"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "പാക്കേജുകള്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്യുന്നു"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "cache അപ്ഡേറ്റ് ചെയ്യുന്നു"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "പാക്കേജുകള്‍ നീക്കം ചെയ്യുന്നു"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "പാക്കേജുകള്‍ പരിഷ്കരിക്കുന്നു"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "സിസ്റ്റം നവീകരിക്കുന്നു"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "നിങ്ങളുടെ ഇന്റര്‍നെറ്റ്‌ ബന്ധം പരിശോധിക്കുക."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "പരിഷ്കരിക്കേണ്ട ആവശ്യമില്ല."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "ഇന്‍സ്റ്റോള്‍ ചെയ്യേണ്ട ആവശ്യമില്ല"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "നീകം ചെയ്യേണ്ട ആവശ്യമില്ല"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"നിങ്ങളുടെ സിസ്റ്റത്തിന്റെ വളരെ പ്രധാനപെട്ട ഒരു ഭാഗമാണ് നിങ്ങള്‍ നീക്കം ചെയ്യാന്‍ "
+"ആവശ്യപ്പെട്ടിരിക്കുന്നത്."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+"ഒരു സോഫ്റ്റ്‌വെയര്‍ പാക്കേജിന്റെ ഇന്‍സ്റ്റോള്‍ അല്ലെങ്കില്‍ നീക്കം ചെയ്യല്‍ പ്രക്രിയ "
+"പരാജയപ്പെട്ടിരിക്കുന്നു."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "പാക്കേജ് ഫയലുകള്‍ ഡൌണ്‍ലോഡ് ചെയ്യുന്നതില്‍ പരാജയപെട്ടു"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "പാക്കേജ് നിലവില്‍ ഇല്ല"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "പാക്കേജ് ഇന്‍സ്റ്റോള്‍ ചെയ്യപ്പെട്ടിട്ടുണ്ട്"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "പാക്കേജ് ഇന്‍സ്റ്റോള്‍ ചെയ്തിട്ടില്ല"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "പാക്കേജു പ്രയോഗം പരാജയപ്പെട്ടു"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "സര്‍വീസ് തുടങ്ങാന്‍ കാത്തിരിക്കുന്നു"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "നടന്നുകൊണ്ടിരിക്കുന്ന ജോലി"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "ഡൌണ്‍ ലോഡ് ചെയ്യുന്നു"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "വെടിപ്പാക്കുന്നു"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "അവസാനിച്ചു"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "റദ്ദാക്കുന്നു"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s ഇന്‍സ്റ്റോള്‍ ചെയ്യുന്നു"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s നീക്കം ചെയ്യുന്നു"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "%s ഇന്‍സ്റ്റോള്‍ ചെയ്തതിനു ശേഷമുള്ള മറ്റു ചില കാര്യങ്ങള്‍ ചെയ്യുന്നു"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "വിശദാംശങ്ങള്‍"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "'%s' എന്ന CD/DVD ആവശ്യമുണ്ട്"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_സൂക്ഷിക്കുക"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_മാറ്റിസ്ഥാപിക്കുക"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_വിശദാംശങ്ങള്‍"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..c743c67
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,1493 @@
+# Malay translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-02 10:23+0000\n"
+"Last-Translator: abuyop <Unknown>\n"
+"Language-Team: Malay <ms@li.org>\n"
+"Language: ms\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Senarai kekunci vendor yang dipercayai"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Untuk paparkan senarai kekunci dipercayai, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Buang fail pakej yang dimuat turunkan"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Untuk membersihkan fail pakej yang dimuat turun, anda perlu dapatkan "
+"pengesahihan."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ubah konfigurasi perisian"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Untuk mengubah tetapan perisian, anda perlu dapatkan pengesahihan."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Ubah repositori perisian"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Untuk mengubah tetapan repositori perisian, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Pasang fail pakej"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Untuk memasang pakej ini, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Kemaskini informasi pakej"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Untuk mengemakini katalog perisian, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Pasang atau buang pakej"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Untuk memasang atau membuang perisian, anda perlukan pengsahihan."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Pasang perisian dari repositori tersenarai putih yang sangat-dipercayai."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Untuk memasang perisian, anda perlu sahihkan."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Tambah repositori baru dan pasang pakej darinya"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Untuk memasang dari sumber baru, anda perlukan pengsahihan."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Tambah repositori baru bagi perisian yang dibeli dan pasang pakej darinya"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Untuk memasang perisian, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Tingkatkan pakej-pakej"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Untuk memasang kemaskini perisian, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Batalkan tugas pengguna lain"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Untuk membatalkan perubahan perisian orang lain, anda perlukan pengsahihan."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Tetapkan proksi untuk memuat turun perisian"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Untuk gunakan pelayan proksi bagi tujuan memuat turun perisian, anda "
+"perlukan pengsahihan."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "RALAT"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Telah memuat-turun %sB dari %sB pada %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Telah memuat-turun %sB daripada %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "RALAT:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Anda tidak dibenarkan melakukan tindakan ini."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Membaris Gilir"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Menghuraikan keperluan"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Pakej BARU berikut akan dipasangkan (%(count)s):"
+msgstr[1] "Pakej BARU berikut akan dipasangkan (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Pakej berikut akan ditatarkan (%(count)s):"
+msgstr[1] "Pakej berikut akan ditatarkan (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Pakej berikut akan DIBUANG (%(count)s):"
+msgstr[1] "Pakej berikut akan DIBUANG (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Pakej berikut akan DITURUN TARAF (%(count)s):"
+msgstr[1] "Pakej berikut akan DITURUN TARAF (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Pakej berikut akan dipasang semula (%(count)s):"
+msgstr[1] "Pakej berikut akan dipasang semula (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Pakej berikut akan dikekalkan (%(count)s):"
+msgstr[1] "Pakej berikut akan dikekalkan (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Perlu dapatkan %sB arkib."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Selepas operasi ini, %sbait ruang cakera akan digunakan."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Selepas operasi ini, %sbait ruang cakera akan dibebaskan."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Adakah anda ingin meneruskannya [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Untuk mengoperasi lebih daripada satu pakej, letakkan nama pakej didalam "
+"tanda petikan:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Segar semula cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Cuba baiki dependensi yang rosak? Merupakan operasi yang berkemungkinan "
+"merbahaya kerana ia boleh menyebabkan pembuangan banyak pakej."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Cuba selesaikan pemasangan tidak lengkap yang terdahulu"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Pasang pakej yang diberikan"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Pasang semula pakej yang diberikan"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Buang pakej yang diberikan"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Buang pakej yang diberikan termasuklah fail konfigurasi"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Turun taraf pakej yang diberikan"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Usang: Sila gunakan --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Tatar sistem melalui kaedah yang selamat"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Tatarkan sistem, kemungkinan melibatkan pemasangan dan pembuangan pakej"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Tambah vendor kepada yang dipercayai"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Tambah id kekunci vendor (juga perlukan --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Guna keyserver yang diberikan untuk mencari kekunci"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Tambah repositori baru dari deb-line yang diberikan"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Tentukan fail sources.list.d alternatif yang mana repositori seharusnya "
+"ditambahkan."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Senarai kekunci vendor yang dipercayai"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Buang kekunci yang dipercayai berdasarkan fingerprint yang diberikan"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Konfigur semula pakej yang dipasang. Keutamaan soalan diminimumkan boleh "
+"ditentukan secara pilihan"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Keutamaan soalan debconf diminimumkan untuk dipaparkan"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Jangan lampirkan ke terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Benarkan pakej dari sumber yang tidak disahihkan"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Papar maklumat tambahan mengenai pakej. Buat masa ini hanya nombor versi"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Menunggu pengsahihan"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Jangan menutup daemon disebabkan ketiadaaan aktviti"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Jangan muat apa-apa pemalam"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Tunjukkan informasi pemprosesan dalam"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Tutup dan gantikan sebuah daemon yang sedang berjalan"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Dengar bus sesi DBUS (Hanya diperlukan untuk pengujian"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Lakukan operasi didalam chroot yang diberikan"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Simpan stat profil dalam fail yang ditentukan"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Jangan membuat apa-apa perubahan kepada sistem (Hanya berguna kepada "
+"pembangun)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fail dipasang"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pakej dipasang"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Telah menambah kunci daripada fail"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Telah kemaskini cache"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Gelintar selesai"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Telah membuang kunci dipercayai"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pakej-pakej yang telah dibuang"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pakej-pakej yang telah dikemaskini"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistem yang telah ditingkatkan"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Perubahan yang telah digunakan"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Pemasangan tidak lengkap telah dibaiki"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Keperluan rosak telah dibaiki"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Sumber perisian tambahan"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Membenarkan komponen distribusi"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Buang fail pakej yang dimuat turun"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Konfigur semula pakej yang dipasang"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Berjaya"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Dibatalkan"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Gagal"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Memasang fail"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Memasang pakej-pakej"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Menambah kunci daripada fail"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Mengemaskini cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Membuang kunci dipercayai"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Membuang pakej-pakej"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Mengemaskini pakej-pakej"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Meningkatkan sistem"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Menerapkan perubahan"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Membaiki pemasangan tidak lengkap"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Membaiki perisian terpasang"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Menambah sumber perisian"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Membenarkan komponen distribusi"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Membuang fail pakej yang dimuat turun"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Menkonfigurasi semula pakej yang dipasang"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Menggelintar"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Pemasangan fail pakej telah gagal"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Pemasangan perisian telah gagal"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Menambah kunci ke senarai pembekal perisian yang dipercayai mengalami "
+"kegagalan"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Menyegarkan senarai perisian telah gagal"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Membuang penjaja daripada senarai penjaja dipercaya telah gagal"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Membuang perisian telah gagal"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Mengemaskini perisian telah gagal"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Meningkatkan sistem telah gagal"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Menerapkan perubahan perisian telah gagal"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Membaiki pemasangan tidak lengkap telah gagal"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Membaiki keperluan rosak telah gagal"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Penambahan sumber perisian gagal"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Penambajan komponen distribusi gagal"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Pembuangan fail pakej yang dimuat turun gagal"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Gelintar gagal"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Menambah kunci lesen"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Periksa sambungan Internet anda."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Periksa jika anda sedang mengguna repositori parti ketiga. Jika ya "
+"nyahbolehkan mereka, kerana mereka adalah penyebab masalah biasa.\n"
+"Apalagi jalankan arahan berikut didalam satu Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Fail yang dipilih mungkin bukan fail kekunci GPG atau fail mungkin buruk."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"kekunci pilihan tidak dapat dibuangkan. Semak sama ada anda telah masukkan "
+"fingerprint yang sah."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Semak sama ada anda sedang jalankan alat pengurusan perisian yang lain, cth. "
+"Sypnatic atau aptitude. Hanya satu alat dibenarkan untuk membuat perubahan."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ini adalah masalah penting. Cuba lagi kemudian. Jika masalah ini muncul "
+"semula, sila laporkan ralat kepada pembangun."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Semak ejaan nama pakej, dan repositori tersebut dibenarkan."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Tiada keperluan untuk kemaskini."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Tiada keperluan untuk pemasangan"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Tiada keperluan untuk membuang."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Anda meminta untuk membuang sebuah pakej yang penting kepada sistem anda."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Sambungan kepada daemon telah hilang. Kemungkinan besar daemon latarbelakang "
+"telah mati."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Pemasangan atau pembuangan sebuah pakej perisian telah gagal."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Fitur dipinta tidak disokong."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Terdapat ralat pengaturcaraan didalam aptdaemon, perisian yang membenarkan "
+"anda memasang/membuang perisian dan lakukan tugas berkaitan dengan "
+"pengurusan pakej."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ralat ini mungkin disebabkan keperluan pakej perisian tambahan yang hilang "
+"atau tidak dipasang. Tambahan pula mungkin terdapat konflik antara pakej "
+"perisian yang tidak membenarkannya dipasang pada masa yang sama."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Ia perlukan pemasangan pakej dari sumber tidak disahihkan."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Pemasangan mungkin telah gagal disebabkan ralat didalam pakej perisian "
+"selaras dengannya atau ia dibatalkan didalam cara yang dipaksa. Anda perlu "
+"membaiki ini sebelum anda boleh memasang atau membuang perisian lagi."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Sila salin fail ke komputer setempat anda dan semak kebenaran fail."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Pemasangan pakej yang mana melanggari piawaian kualiti yang dibenarkan. Ini "
+"akan menyebabkan masalah pada komputer anda. Sila hubungi individu atai "
+"organisasi yang menyediakan fail pakej ini termasuklah perincian dibawah."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Kunci lesen dimuat turun yang diperlukan untuk jalankan perisian ini tidak "
+"sah atau tidak dapat dipasang dengan betul.\n"
+"Rujuk perincian untuk maklumat lanjut."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Semua penataran yang ada telah dipasang."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Kunci lesen yang membenarkan anda gunakan perisian ini tidak dapat dimuat "
+"turun. Sila semak sambungan rangkaian anda."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+"Anda tidak memiliki kelayakan yang diperlukan untuk membuat tindakan ini."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Anda sama ada beri kata laluan yang salah atau batalkak keizinan.\n"
+"Tambahan pula juga terdapat sebab teknikal berlakunya ralat ini jika anda "
+"tidak dapat lihat dialog kata laluan: persekitaran dekstop anda tidak "
+"menyediakan ejen sesi Kit Polisi."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Gagal untuk memuat-turun fail-fail pakej"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Gagal untuk memuat-turun informasi repositori"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Keperluan pakej tidak dapat diselesaikan"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Sistem pakej adalah rosak"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Kunci tidak dipasang"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Kunci tidak dibuang"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Gagal untuk mengunci pengurus pakej"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Gagal untuk memuat senarai pakej"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakej tidak wujud"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakej sudah dikemaskini"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakej sudah dipasang"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakej tidak dipasang"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Gagal untuk membuang pakej sistem yang diperlukan"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tugas tidak dapat diperhatikan atau dikawal"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operasi pakej telah gagal"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Memerlukan pemasangan pakej-pakej yang tidak dipercayai"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Pemasangan yang dahulu belum diselesaikan lagi"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Pakej berkualiti rendah"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Fail pakej tidak boleh dibuka"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Fitur tidak disokong"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Gagal memuat turun kunci lesen"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Gagal memasang kunci lesen"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistem sudah dikemakini"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Anda tidak diizinkan"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Anda tidak dibenarkan membuat tindakan ini"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ralat yang tidak boleh dikendalikan berlaku"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Menunggu untuk servis bermula"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Menunggu"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Menunggu untuk medium yang diperlukan"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Menunggu untuk pengurus perisian lain untuk tutup"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Menunggu untuk prompt fail konfigurasi"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Menjalankan tugas"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Sedang dimuat-turun"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Menanya sumber perisian"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Sedang membersihkan"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Selesai"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Sedang membatalkan"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Memuat senarai perisian"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Sedang memasang %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Mengubahsuai %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Membuang %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "membuang sepenuhnya %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Khidmat kehilangan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Menjalankan pemetik sebelum-pemasangan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Meningkatkan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Membuka %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Menyediakan pemasangan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Menyediakan konfigurasi %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Menyediakan pembuangan %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Menyediakan pembuangan lengkap %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Pasang %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Buang sepenuhnya %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Buang %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Selesai"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Penyahihan gagal"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Memperoleh"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Melahu"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Rangkaian tiada"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Memproses %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Telah memuat-turun %sB dari %sB pada %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Telah memuat-turun %sB daripada %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Butiran"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fail"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Memuat Turun %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Dimuat turun"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' diperlukan"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Sila masukkan CD/DVD kedalam pemacu '%s' untuk memasang pakej perisian "
+"didalamnya."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "T_eruskan"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Pasang"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Pasang Semula"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Buang"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Singkirkan"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Tatar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Turun Taraf"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Langkau tatar"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Sila lihat senarai perubahan dibawah."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Perisian tambahan yang perlu dipasangkan"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Perisian tambahan yang perlu dipasang semula"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Perisian tambahan yang perlu dibuang"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Perisian tambahan yang perlu disingkirkan"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Perisian tambahan yang perlu ditatarkan"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Perisian tambahan yang perlu diturun taraf"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Kemaskini akan dilangkau"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Perubahan tambahan diperlukan"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB akan dimuat turun secara keseluruhan."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB ruang cakera akan dibebaskan."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB ruang cakera akan digunakan."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Gantikkan pertukaran yang anda buat didalam '%s' dengan versi kemudian fail "
+"konfigurasi tersebut?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Jika anda tidak mengetahui kenapa fail tersebut sudah berada disitu, ia "
+"biasanya sudah selamat untuk menggantikannya."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Pertukaran"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Simpan"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Gantikan"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Butiran"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Menunggu %s untuk keluar"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Memuat turun %(files)s"
+msgstr[1] "Memuat turun %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositori setempat"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Memuat turun dari %s"
+msgstr[1] "Memuat turun dari %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktur bagi %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Keterangan %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Tandatangan keterangan %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pakej tersedia dari %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Sumber tersedia dari %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Terjemahan tersedia dari %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Terjemahan untuk %s (%s) dari %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Terjemahan untuk %s dari %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Terjemahan (%s) dari %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakej %s tiada"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakej %s tidak dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versi %s dari %s tidak dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakej %s sudah dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versi %s dari %s tiada."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL pelayan kunci tidak sah: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protokol pelayan tidak sah: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Id kekunci tidak sah: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Gagal memuat turun dan pasang kekunci %s dari %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Fail kekunci %s tidak dapat dipasang: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Kekunci dengan cap jari %s tidak dapat dibuang: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakej %s tidak dapat dibuang."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versi %s dari %s tidak dapat dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Versi lama %s dari %s sudah pun dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versi %s dari %s sudah pun dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versi %s dari %s tiada"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Anda perlu tentukan versi untuk turun taraf %s ke"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Versi %s lama dari %s sudah pun dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakej %s tiada didalam keluaran %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakej %s tidak dapat dibuang"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Pakej tidak menyediakan medan kawalan Saiz-Terpasang yang sah. Rujuk Polisi "
+"Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Kunci lesen kosong"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "kunci lesen tidak dibenarkan mengandungi kod boleh laku."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Laluan kunci lesen %s tidak sah"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Kunci lesen sudah wujud: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Lokasi kunci lesen tidak selamat semenjak ia mengandungi pautan simbolik. "
+"Laluan %s dipetakan ke %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Direktori untuk memasang kunci tidak wujud lagi: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Gagal menulis fail kunci ke: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Pakej berikut mempunyai dependensi yang tidak menepati syarat:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "tetapi ianya pakej maya"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "tetapi ianya tidak dipasang"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "tetapi ianya tidak akan dipasang"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "tetapi %s yang terpasang."
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "tetapi %s yang akan dipasang"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Menambah kunci kepada senarai penjaja perisian yang dipercayai telah gagal"
diff --git a/po/my.po b/po/my.po
new file mode 100644
index 0000000..793ed07
--- /dev/null
+++ b/po/my.po
@@ -0,0 +1,1420 @@
+# Burmese translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-07-15 06:59+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Burmese <my@li.org>\n"
+"Language: my\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "ယုံကြည်ရသောကီးများကိုကြည့်ရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "downloaded package ဖိုင်များရှင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "software settings ပြောင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "software repository settings ပြောင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "package file သွင်းမည်"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "ဒီ package ကိုသွင်းရန် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "ဆော့ဝဲလ်များ သွင်းရန်ဖြုတ်ရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "ဆော့ဝဲလ်သွင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "ရင်းမြစ်အသစ်မှဆော့ဝဲလ်များသွင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "ဆော့ဝဲလ်ဝယ်ပြီးသွင်းရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "ဆော့ဝဲလ်များအသစ်ထွက်ရှိမှု့သွင်းရန်အတွက်ခွင့်ပြုချက်လိုအပ်သည်။"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "တခြားအသုံးပြုသူ၏လုပ်ငန်းများကိုပယ်ဖျက်မည်"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "တခြားသူ၏ဆော့ဝဲလ်ပြောင်းလဲမှု့များကိုပယ်ဖျက်ရန်အတွက် ခွင့်ပြုချက်လိုအပ်သည်"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ချို့ယွင်းချက်"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ချို့ယွင်းချက် -"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "ဒီလုပ်ဆောင်ချက်လုပ်ဆောင်ရန်သင့်ကိုခွင့်မပြုပါ"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "တန်းစီခြင်း"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "သင်ဆက်လက်လုပ်ဆောင်ချင်ပါသလား။ [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "ပေးထားသော package များကိုသွင်းမည်"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "ပေးထားသော package များ ကိုပြန်သွင်းမည်"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "ပေးထားသော package များ ဖြုတ်မည်"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "ခွင့်ပြုခက်ရရန်စောင့်ဆိုင်းနေပါသည်"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "ယုံကြည်ရသော key ကိုဖြုတ်မည်"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "ဆော့ဝဲလ်အရင်းအမြစ်ထည့်မည်"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "အောင်မြင်ပါသည်"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "ပယ်ဖျက်မည်။"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "မအောင်မြင်"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ဖိုင်ကိုသွင်းနေပါသည်"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Package များကိုသွင်းနေသည်"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "ဆော့ဖ်ဝဲလ်ဖိုင်ထုပ်များ ဖယ်ရှားနေပါသည်"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "စက်စနစ်တစ်ခုလုံးကိုအဆင့်မြင်နေပါသည်"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "ပြောင်းလဲမှု့များကိုသွင်းနေပါသည်"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "ဆော့ဝဲလ်အရင်းအမြစ်ထည့်နေပါသည်"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "ရှာဖွေနေပါသည်"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "ရှာဖွေခြင်းမအောင်မြင်ပါ"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "သင်၏အင်တာနက်ကွန်နက်ရှင်ကိုစစ်ဆေးကြည့်ပါ"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "ဒီလုပ်ဆောင်ချက်လုပ်ဆောင်ရန်သင့်ကိုခွင့်မပြုပါ"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Package မတည်ရှိပါ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Package သည်နောက်ဆုံးပေါ်ဖြစ်သည်"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Package သည်သွင်းပြီးထားပါ"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Package မသွင်းရသေးပါ"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..b64f6e1
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,1468 @@
+# Norwegian Bokmal translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-02-26 20:26+0000\n"
+"Last-Translator: Mathias Bynke <Unknown>\n"
+"Language-Team: Norwegian Bokmal <nb@li.org>\n"
+"Language: nb\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Vis godkjente utgivere"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Du må autentisere deg for å vise godkjente nøkler."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Fjern nedlastede pakkefiler"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Du må autentisere deg for å rydde opp i nedlastede pakkefiler."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Endre programvareoppsett"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Du må autentisere deg for å endre programvareinnstillinger."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Endre programvarearkiv"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Du må autentisere deg for å endre innstillinger for programvarearkiver."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installer pakkefil"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "For å installere denne pakken må du autentisere deg."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Oppdater pakkeinformasjon"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Du må autentisere deg for å oppdatere programvarekatalogen."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installer eller fjern pakker"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "For å installere eller fjerne programvare må du autentisere deg."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Legg til et nytt pakkearkiv og installer pakker fra det"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Du må autentisere deg for å installere fra en ny kilde."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Legg til et nytt pakkearkiv for kjøpt programvare og installer pakker fra det"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Du må autentisere deg for å installere kjøpt programvare."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Oppgrader pakker"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Du må autentisere deg for å installere den oppdaterte programvaren"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Avbryte en annen brukers oppgaver"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Du må autentisere deg for å avbryte andres programvareendringer."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Velg en proxy-tjener til programvarenedlastinger"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"For å bruke en proxytjener til å laste ned programvare må du autentisere deg."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FEIL"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Lastet ned %sB av %sB fra %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Lastet ned %sB av %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FEIL:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Du har ikke tilgang til å utføre denne handlingen."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Legger i kø"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Løser avhengigheter"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Følgende NY pakke vil installeres (%(count)s):"
+msgstr[1] "Følgende NYE pakker vil installeres (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Følgende pakke vil oppgraderes (%(count)s):"
+msgstr[1] "Følgende pakker vil oppgraderes (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Følgende pakke vil FJERNES (%(count)s):"
+msgstr[1] "Følgende pakker vil FJERNES (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Følgende pakke vil NEDGRADERES (%(count)s):"
+msgstr[1] "Følgende pakker vil NEDGRADERES (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Følgende pakke vil bli installert på nytt (%(count)s):"
+msgstr[1] "Følgende pakker vil bli installert på nytt (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Følgende pakke holdes tilbake (%(count)s):"
+msgstr[1] "Følgende pakker holdes tilbake (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Må hente %sB arkiver."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Etter denne operasjonen vil %sB ekstra diskplass brukes."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Etter denne operasjonen vil %sB ekstra diskplass bli frigjort."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Ønsker du å fortsette [J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Sett pakkenavn i anførselstegn for å betjene mer enn én pakke:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Oppdater bufferen"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Forsøk å løse problemer med ødelagte avhengigheter. Dette er en potensielt "
+"skadelig operasjon da den kan forsøke å fjerne mange pakker."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Forsøker å fullføre en tidligere ufullstendig installasjon"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installer de angitte pakkene"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Installer de angitte pakkene på nytt"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Fjern angitte pakker"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Fjern angitte pakker og tilhørende oppsettsfiler"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Nedgrader angitte pakker"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Utgått: vennlist bruk --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Oppgrader systemet på en trygg måte"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Oppgrader systemet, installasjon og fjerning av pakker vil sannsynligvis "
+"forekomme"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Legg leverandøren til godkjente"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Legg til leverandørens nøkkel-id (behøver også --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Bruk gitt nøkkeltjener til å lete opp nøkler"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Legg til ny pakkearkiv fra den gitt deb-linjen"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Angi en alternativ sources.list.d-fil hvor pakkearkeivene skal legges til."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Vise godkjente utgivernøkler"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Fjern fingeravtrykkets godkjente nøkkel"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Sett opp installerte pakker på nytt. Alternativt kan et minimum av spørsmål "
+"angis"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ikke inkluder apt-terminalen"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Tillat pakker fra uautentiserte kilder"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Vis detaljert informasjon om pakkene. For øyeblikket kun versjonsnummer"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Venter på autentisering"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ikke avslutt daemon ved inaktivitet"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ikke last noen programtillegg"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Vis informasjon om interne prosesser"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Avslutt og erstatt en kjørende daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Utfør operasjoner i angitt chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Lagre profilstatistikk i angitt fil"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ikke gjør noen endringer på systemet (til bruk for utviklere)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installert fil"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installerte pakker"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "La til nøkkel fra fil"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Mellomlager oppdatert"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Søket er utført"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Fjernet sikker nøkkel"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Fjernede pakker"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Oppdaterte pakker"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Oppgradert system"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Endringer utført"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Reparer ufullstendige installasjoner"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Reparer ødelagte avhengigheter"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "La til programvarekilde"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Aktivert distribusjonskomponent"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Fjernet nedlastede pakkefiler"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Satt opp installerte pakker på nytt"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Vellykket"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Avbrutt"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Mislyktes"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installerer fil"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installerer pakker"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Legger til nøkkel fra fil"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Oppdaterer mellomlager"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Fjerner sikker nøkkel"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Fjerner pakker"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Oppdaterer pakker"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Oppgraderer system"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Utfører endringer"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparerer ufullstendig installasjon"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparerer installert programvare"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Legge til programvarekilde"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Aktiverer distribusjonskomponent"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Fjerner nedlastede pakkefiler"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Setter opp installerte pakker på nytt"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Søker"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installasjon av pakkefil mislyktes"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installasjon av programvare mislyktes"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Mislyktes oppdatering av programvarelisten"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Mislyktes fjerning av klarert leverandør fra listen"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Fjerning av programvare mislyktes"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Oppdatering av programvare mislyktes"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Oppgradering av systemet mislyktes"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Bruk av programvareendringer mislyktes"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Mislyktes reparerering av ufullstendig installasjon"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Mislyktes reparerering av manglende avhengigheter"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Mislyktes å legge til programvarekilde"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Mislyktes å aktivere distribusjonskomponent"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Fjerning av nedlastede pakkefiler mislyktes"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Søk feilet"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Legger til lisensnøkkel"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Undersøk internettforbindelsen din."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Undersøk om du benytter noen tredjeparts pakkearkiver. Disse er ofte en "
+"kilde til problemer - og du må kanskje deaktivere dem.\n"
+"I tillegg bør du kjøre følgende kommando i terminalen: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Den valgte filen er ikke en GPG-fil, eller er skadet."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Den valgte nøkkelen kan ikke fjernes. Kontroller at du oppgir et gyldig "
+"fingeravtrykk."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kontroller om du kjører et annet programvareverktøy, som Synaptic eller "
+"aptitude. Kun ett verktøy kan gjøre endringer om gangen."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Dette er et alvorlig problem. Prøv igjen senere. Om problemet vedvarer, "
+"vennligst send feilmelding til utviklerene."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Kontroller staving av pakkenavnet og at det riktige programvarearkivet er "
+"aktivert."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Det behøves ingen oppdatering."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Det behøves ingen installasjon"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Ingen fjerning behøves."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Du har bedt om fjerning av en pakke som er viktig for systemet."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Mistet forbindelsen til daemon. Sannsynligvis kræsjet bakgrunns-daemonen."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Installasjon/fjerning av programvarepakke mislyktes."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Den etterspurte funksjonen er ikke støttet."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Denne feilen kan skyldes tilleggsprogramvare som mangler eller ikke kan "
+"installeres. Den kan også være en konflikt mellom programvarepakker som ikke "
+"kan være installert samtidig."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Installasjonen kan ha mislyktes på grunn av en feil i den tilsvarende "
+"programvarepakken, eller at den ble avbrutt på en brutal måte. Du må fikse "
+"dette før du kan installere eller fjerne flere programmer."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Vennligst kopier filen til datamaskinen og kontroller filrettighetene."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Det er ikke tillatt å installere en pakke som bryter med "
+"kvalitetsstandardene. Dette kan føre til alvorlige problemer på "
+"datamaskinen. Vennligst ta kontakt med de som har gitt ut denne pakkefilen, "
+"og legg ved detaljene under."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Alle tilgjengelige oppgraderinger har allerede blitt installert."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Klarte ikke laste ned lisensnøkkelen som lar deg bruke dette programmet. "
+"Kontroller nettverkstilkoblingen din."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Du har ikke tilgang til å utføre denne handlingen."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Nedlasting av pakkefiler mislyktes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Nedlasting av pakkearkiv-informasjon mislyktes"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakkeavhengigheter kunne ikke løses"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakkesystemet er ødelagt"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Nøkkel ble ikke installert"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Nøkkel ble ikke fjernet"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Låsing av pakkebehandleren mislyktes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Lasting av pakkelisten mislyktes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakken eksisterer ikke"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakken er allerede oppdatert."
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakken er allerede installert"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakken er ikke installert"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Fjerning av betydningsfull systempakke mislyktes"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Oppgaven kan ikke overvåkes eller kontrolleres"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakkeoperasjon mislyktes"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Krever installasjon av usikre pakker"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Tidligere installasjon har ikke blitt fullført"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Pakken er i dårlig forfatning"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pakkefilen kunne ikke åpnes"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Klarte ikke laste ned lisensnøkkelen"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Klarte ikke installere lisensnøkkelen"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Systemet er allerede oppdatert"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "En uhåndterbar feil oppsto"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Venter på at tjeneste skal starte"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Venter"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Venter på påkrevd medie"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Venter på at annen programvarebehandler skal avsluttes"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Venter på dialog for oppsettsfil"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Kjører oppgave"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Laster ned"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Spør programvarekilder"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Rydder opp"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Fullført"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Avbryter"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Laster pakkeliste"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installerer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Setter opp %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Fjerner %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Fjerner %s fullstendig"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Legger merke til at %s forsvinner"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Kjører etter-installasjonsutløser %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Oppgraderer %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Pakker ut %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Forbereder installasjonen av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Forbereder konfigureringen av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Forbereder fjerning av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s har blitt installert"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s er fullstendig fjernet"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Fjernet %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Fullført"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentisering mislyktes"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Henter"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Klar"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Nettverk ikke tilgjengelig"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Behandler %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Lastet ned %sB av %sB fra %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Lastet ned %sB av %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detaljer"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fil"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Lastet ned %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Lastet ned"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Behøver CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Vennligst sett inn angitt CD/DVD i '%s' for å installere programvare fra den."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "F_ortsett"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installer"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Installer på nytt"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Fjern"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Slett"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Oppgrader"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Nedgrader"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Hopp over oppgradering"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Vennligst se over listen over endringer nedenfor."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Andre programvarer må installeres i tillegg"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Tilleggsprogramvare må installeres på nytt"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Tilleggsprogramvare må fjernes"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Tilleggsprogramvare må fjernes"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Tilleggsprogramvare må oppgraderes"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Tilleggsprogramvare må nedgraderes"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Hopper over oppdateringer"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Det må gjøres andre endringer i tillegg"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB vil lastes ned totalt."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB diskplass vil bli frigjort."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB mer diskplass vil brukes."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Erstatt endringene i '%s' med en senere versjon av konfigurasjonsfilen?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Det går vanligvis fint å erstatte den hvis du ikke helt vet hvorfor filen i "
+"utgangspunktet er der."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Endringer"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Behold"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Erstatt"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detaljer"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Venter på at %s avslutter"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Laster ned %(files)s"
+msgstr[1] "Laster ned %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Laster ned fra %s"
+msgstr[1] "Laster ned fra %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Beskrivelse av %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Tilgjengelige pakker fra %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Tilgjengelige kilder fra %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Tilgjengelige oversettelser fra %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Oversettelser på %s (%s) fra %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Oversettelser på %s fra %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Oversettelser (%s) fra %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakke %s er ikke tilgjengelig"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakke %s er ikke installert"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versjon %s av %s er ikke installert"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakke %s er allerede installert"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versjon %s av %s er ikke tilgjengelig."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Mislyktes nedlasting og installasjon av nøkkel %s fra %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Nøkkelfil %s kunne ikke installeres: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Nøkkel med fingeravtrykk %s kunne ikke fjernes: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakken %s kan ikke fjernes."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versjon %s av %s er ikke installert"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Tidligere versjon %s av %s er allerede installert"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versjon %s av %s er allerede installert"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versjon %s av %s er ikke tilgjengelig"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Du må angi en versjon som %s skal nedgraderes til"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Den nyere versjonen %s av %s er allerede installert"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakken %s er ikke tilgjengelig i %s-utgivelsen."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakke %s kan ikke fjernes"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Lisensnøkkelen er tom"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Lisenskoden kan ikke inneholde kjørbar kode."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Lisensnøkkelens sti %s er ugyldig"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Lisensnøkkelen eksisterer allerede: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Følgende pakker har krav som ikke er oppfylt:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "men er en virtuell pakke"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "men er ikke installert"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "men vil ikke bli installert"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "men %s er installert"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "men %s skal installeres"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Klarte ikke å legge til nøkkelen i listen over betrodde "
+#~ "programvareutgivere"
diff --git a/po/nds.po b/po/nds.po
new file mode 100644
index 0000000..d4f9d40
--- /dev/null
+++ b/po/nds.po
@@ -0,0 +1,1419 @@
+# German, Low translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:58+0000\n"
+"Last-Translator: Michael Vogt <michaelvogt@imap.cc>\n"
+"Language-Team: German, Low <nds@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Paketdatei installeren"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Paketinformatschoonen opfrischen."
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Paketverschoonen opfrischen"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Eene Opgav vun e'em annern Bruker löschen."
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Sluten Se de Dämon nich wenn he leddig schient"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Binnen Verarbeidensinformatschonen opwiesen"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Sluten un wesseln Se en al lopen Dämon ut"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "De Profilstatistik in de angeven Datei spiekern"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installerte Datei"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installertes Paket"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/ne.po b/po/ne.po
new file mode 100644
index 0000000..2cf8e03
--- /dev/null
+++ b/po/ne.po
@@ -0,0 +1,1419 @@
+# Nepali translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-01-16 11:58+0000\n"
+"Last-Translator: Rabi Poudyal <ubuntu@rabipoudel.com.np>\n"
+"Language-Team: Nepali <ne@li.org>\n"
+"Language: ne\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "प्याकेज फाइल प्रतिस्थापन गर्नुहोस्"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "प्याकेज जानकारी ताजा गर्नुहोस्"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "प्याकेजहरू स्तरोन्नत गर्नुहोस्"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "अर्को प्रयोगकर्ताको कार्य रद्द गर्नुहोस्"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "आन्तरिक प्रक्रियारत जानकारी देखाउनुहोस्"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "पार्श्वरुप विवरण तोकिएको फाइलमा राख्नुहोस्"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "प्रतिस्थापित फाइल"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "प्रतिस्थापित प्याकेजहरू"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "फाइलबाट थपिएको कुञ्जी"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "हटाइएको विश्वस्त कुञ्जी"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "हटाइएका प्याकेजहरू"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "अद्यावधिक प्याकेजहरू"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "स्तरोन्नत गरिएको प्रणाली"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "लागू गरिएका परिवर्तनहरू"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "सफलतापूर्वक"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "रद्द गरियो"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "असफल भयो"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "फाइल प्रतिस्थापित हुँदै"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "प्याकेजहरू प्रतिस्थापित हुँदै"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "फाइलबाट कुञ्जी थपिँदै"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "क्यास अद्यावधिक गरिँदै"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "विश्वस्त कुञ्जी हटाइदै"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "प्याकेजहरू हटाइदै"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "प्याकेजहरू अद्यावधिक गरिदै"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "प्रणाली स्तरोन्नत गरिदै"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "परिवर्तनहरू लागू गरिदै"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "तपाईको इन्टरनेट सम्बन्ध जाँच गर्नुहोस्।"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..d597aa8
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,1522 @@
+# Dutch translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-02 08:13+0000\n"
+"Last-Translator: Hannie Dumoleyn <Unknown>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"Language: nl\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Toon sleutels van vertrouwde leveranciers"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Uw authenticatie is vereist als u de lijst met vertrouwde sleutels wilt "
+"inzien."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Gedownloade pakketbestanden verwijderen"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Om gedowloade pakketbestanden te verwijderen dient u te zich aan te melden."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Softwareconfiguratie wijzigen"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Om softwareinstellingen te kunnen wijzigen dient u te zich aan te melden."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Verander softwarebron"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Uw authenticatie is vereist als u softwarebronnen wilt aanpassen."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Een pakketbestand installeren"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Uw authenticatie is vereist als u dit pakket wilt installeren."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Pakketinformatie bijwerken"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Uw authenticatie is vereist om de software-catalogus te vernieuwen."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Pakketten installeren of verwijderen"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Uw authenticatie is vereist als u software wilt verwijderen of installeren."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Installeer programmatuur vanuit een zeer vertrouwde en uitdrukkelijk "
+"goedgekeurde pakketbron."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Om programmatuur te installeren, dient u zich te authenticeren."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Een nieuwe softwarebron toevoegen en daaruit pakketten installeren"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Authenticatie is vereist om software van een nieuwe bron te installeren."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Een nieuwe softwarebron voor gekochte software toevoegen en daaruit "
+"pakketten installeren"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Authenticatie is vereist om gekochte software te installeren."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Pakketten upgraden"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Uw authenticatie is vereist als u updates wilt installeren."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "De taak van een andere gebruiker beëindigen"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Uw authenticatie is vereist als u de wijzigingen van een andere gebruiker "
+"ongedaan wilt maken."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Een proxy instellen voor softwaredownloads"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Uw authenticatie is vereist als u een proxy-server wilt gebruiken voor het "
+"downloaden van software."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FOUT"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB van %sB gedownload met %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB van %sB gedownload"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FOUT:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "U mag deze bewerking niet uitvoeren."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "In wachtrij"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Afhankelijkheden oplossen"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Het volgende NIEUWE pakket zal geïnstalleerd worden (%(count)s):"
+msgstr[1] ""
+"De volgende NIEUWE pakketten zullen geïnstalleerd worden (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Het volgende pakket zal worden bijgewerkt (%(count)s):"
+msgstr[1] "De volgende pakketten zullen worden bijgewerkt (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Het volgende pakket zal worden verwijderd (%(count)s):"
+msgstr[1] "De volgende pakketten zullen worden verwijderd (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+"Van het volgende pakket zal de VORIGE VERSIE worden gebruikt (%(count)s):"
+msgstr[1] ""
+"Van de volgende pakketten zullen de VORIGE VERSIES worden gebruikt "
+"(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Het volgende pakket zal opnieuw worden geïnstalleerd (%(count)s):"
+msgstr[1] ""
+"De volgende pakketten zullen opnieuw worden geïnstalleerd (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Het volgende pakket is achtergehouden (%(count)s):"
+msgstr[1] "De volgende pakketten zijn achtergehouden (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Moet %sB aan archieven ophalen."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Na deze operatie zal %sB extra schijfruimte gebruikt worden."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Na deze operatie zal %sB schijfruimte vrijkomen."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Wilt u doorgaan[J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Om een operatie op meer dan een pakket uit te voeren plaatst u de "
+"pakketnamen tussen aanhalingstekens:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Vernieuw de cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Probeer gebroken afhankelijkheden op te lossen. Dit kan gevaarlijk zijn, "
+"aangezien deze actie mogelijk veel pakketten zal proberen te verwijderen."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Probeer een eerder niet-voltooide installatie af te ronden"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installeer de opgegeven pakketten"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Herinstalleer de opgegeven pakketten"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Verwijder de opgegeven pakketten"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Verwijder de opgegeven pakketten, inclusief configuratiebestanden"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Van gegeven pakketten vorige versie gebruiken"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Verouderd: Gebruik --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Upgrade het systeem op een veilige manier"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Upgrade het systeem, waarbij mogelijk pakketten geïnstalleerd of verwijderd "
+"worden"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Voeg de leverancier aan de lijst met vertrouwde toe"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Voeg de keyid van de leverancier toe (heeft ook --keyserver nodig)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Gebruik de opgegeven keyserver om sleutels op te zoeken"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Voeg softwarebron uit de opgegeven deb-line toe"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Geef een alternatief sources.list.d-bestand op waaraan de softwarebronnen "
+"toegevoegd moeten worden."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Toon sleutels van vertrouwde leveranciers"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Verwijder de vertrouwde sleutel met de opgegeven sleutel-id"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Geïnstalleerde pakketten herconfigureren. Optioneel kan de minimale "
+"prioriteit van vragen worden opgegeven"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "De minimale vragenprioriteit van debconf die moet worden weergegeven"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Verbind niet met de apt-terminal"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Sta pakketten uit niet-geauthenticeerde bronnen toe"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Aanvullende informatie over de pakketten tonen. Momenteel alleen het "
+"versienummer"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Wachten op authenticatie"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "De daemon niet afsluiten wegens inactiviteit"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Geen plug-ins laden"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Interne verwerkingsinformatie weergeven"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Afsluiten en een reeds draaiende daemon vervangen"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Luisteren op de DBus-sessiebus (Alleen vereist voor testen)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Acties uitvoeren in de gegeven chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Profielstatistieken opslaan in het opgegeven bestand"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Geen wijzigingen in het systeem aanbrengen (Alleen bruikbaar voor "
+"ontwikkelaars)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Geïnstalleerd bestand"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Geïnstalleerde pakketten"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Sleutel uit bestand toegevoegd"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache bijgewerkt"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Doorzoeken voltooid"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Vertrouwde sleutel verwijderd"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pakketten verwijderd"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pakketten bijgewerkt"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Systeem opgewaardeerd"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Toegepaste wijzigingen"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Incomplete installatie gerepareerd"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Gebroken afhankelijkheden hersteld"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Toegevoegde softwarebron"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Ingeschakeld onderdeel van de distributie"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Gedownloade pakketbestanden die zijn verwijderd"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Geïnstalleerde pakketten die zijn geherconfigureerd"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Geslaagd"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Geannuleerd"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Mislukt"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Bestand installeren"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Pakketten installeren"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Sleutel uit bestand toevoegen"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Cache bijwerken"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Vertrouwde sleutel verwijderen"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Pakketten verwijderen"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Pakketten bijwerken"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Systeem upgraden"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Wijzigingen worden doorgevoerd"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Incomplete installatie herstellen"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Geïnstalleerde software wordt gerepareerd"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Softwarebron wordt toegevoegd"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Inschakelen van een onderdeel van de distributie"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Gedownloade pakketbestanden verwijderen"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Geïnstalleerde pakketten herconfigureren"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Bezig met zoeken"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installatie van het pakket-bestand is mislukt"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installatie van de software is mislukt"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Het toevoegen van de sleutel aan de lijst met vertrouwde "
+"softwareleveranciers is mislukt"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Het vernieuwen van de softwarelijst is mislukt"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Het verwijderen van de software-leverancier van de vertrouwde lijst is "
+"mislukt"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Het verwijderen van de software is mislukt"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Het bijwerken van de software is mislukt"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Het upgraden van het systeem is mislukt"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Het aanpassen van de software is mislukt"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Herstellen van incomplete installatie mislukt"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Herstellen van gebroken afhankelijkheden mislukt"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Het toevoegen van de softwarebron is mislukt"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Inschakelen van het onderdeel van de distributie is mislukt"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Het verwijderen van gedownloade pakketgestanden is mislukt"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Zoeken mislukt"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Licentiesleutel wordt toegevoegd"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Controleer uw internetverbinding."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Controleer of u softwarebronnen van een derde partij gebruikt. Als dat zo "
+"is, schakel ze dan uit, omdat ze een veelvoorkomende bron van problemen "
+"zijn.\n"
+"Voer ook de volgende opdracht uit in een Terminalvenster: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Het geselecteerde bestand is misschien geen GPG-sleutel, of het kan "
+"beschadigd zijn."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"De geselecteerde sleutel kon niet verwijderd worden. Controleer of u een "
+"geldige sleutel-id hebt opgegeven."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Controleer of er momenteel andere pakketbeheersystemen actief zijn, zoals "
+"Synaptic of aptitude. Er kan slechts een pakketbeheerder tegelijk "
+"aanpassingen doen."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Dit is een ernstig probleem. Probeer het later opnieuw. Als dit probleem "
+"nogmaals optreedt, meld dan een fout aan de ontwikkelaars."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Controleer of de pakketnaam juist gespeld is en of de juiste softwarebronnen "
+"geactiveerd zijn."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Bijwerken is niet nodig."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Het is niet nodig om te installeren"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Het is niet nodig om te verwijderen."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"U wilt een pakket verwijderen dat een essentieel onderdeel is van uw systeem."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"De verbinding met de daemon is verloren. Waarschijnlijk is de achtergrond-"
+"daemon vastgelopen."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "De installatie of verwijdering van een softwarepakket is mislukt."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "De gevraagde functie wordt niet ondersteund."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Het lijkt er op dat er een fout in het programma aptdaemon aanwezig is, het "
+"programma waarmee u software kunt installeren/verwijderen en andere pakket-"
+"gerelateerde taken kunt uitvoeren."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Mogelijk zijn vereiste, extra softwarepakketten niet beschikbaar of niet "
+"installeerbaar. Verder kan er een conflict zijn opgetreden tussen "
+"softwarepakketten die niet tegelijkertijd geïnstalleerd kunnen zijn."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Dit vereist het installeren van pakketten uit niet-geauthenticeerde bronnen."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"De installatie kan mislukt zijn door een fout in het betreffende "
+"softwarepakket, of doordat het installatieproces op een onjuiste wijze werd "
+"afgebroken. Deze fout dient hersteld te worden alvorens u andere software "
+"kunt installeren of verwijderen."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Kopieer het bastand naar uw lokale computer en controleer de "
+"bestandstoegangsrechten"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Het installeren van een pakket dat de kwaliteitsnormen geweld aandoet is "
+"niet toegestaan. Dit zou ernstige problemen op uw computer kunnen "
+"veroorzaken. Neem contact op met de persoon of organisatie die dit "
+"pakketbestand geleverd heeft en sluit onderstaande details in."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"De gedownloade licentiesleutel die vereist is om deze software te draaien is "
+"ongeldig of kon niet juist worden geïnstalleerd.\n"
+"Zie de details voor meer informatie."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Alle beschikbare upgrades zijn reeds geïnstalleerd."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"De licentiesleutel waarmee u deze software kunt gebruiken kon niet worden "
+"gedownload. Controleer uw netwerkverbinding."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "U heeft niet de vereiste bevoegdheden om deze actie uit te voeren."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"U heeft of een verkeerd wachtwoord opgegeven, of de autorisatie "
+"geannuleerd.\n"
+"Verder zou er ook een technische reden kunnen zijn voor deze fout als u geen "
+"wachtwoorddialoogvenster heeft gezien: uw bureaubladomgeving heeft geen "
+"PolicyKit-sessieagent."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Pakketbestanden downloaden is mislukt"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Softwarebron-informatie downloaden is mislukt"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Pakketafhankelijkheden kunnen niet opgelost worden"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Het pakketsysteem is gebroken"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Sleutel is niet geïnstalleerd"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Sleutel is niet verwijderd"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Kon de pakketbeheerder niet vergrendelen"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Kon de pakkettenlijst niet vergrendelen"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakket bestaat niet"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pakket is al bijgewerkt"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakket is al geïnstalleerd"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakket is niet geïnstalleerd"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Kon essentieel systeempakket niet verwijderen"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Taak kan niet bijgehouden of bestuurd worden."
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Pakkethandeling is mislukt"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Vereist installatie van onvertrouwde pakketten"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Vorige installatie is niet voltooid"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Het pakket is van slechte kwaliteit"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pakketbestand kon niet worden geopend"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Niet-ondersteunde functie"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Het downloaden van de licentiesleutel is mislukt"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Het installeren van de licentiesleutel is mislukt"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Het systeem is al bijgewerkt"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "U kon niet worden geautoriseerd"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "U mag deze actie niet uitvoeren"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Er is een onhandelbare fout opgetreden"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Wachten op het starten van de dienst"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Wachten"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Wachten op vereist medium"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Wachten totdat andere softwarebeheerders zijn afgesloten"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Wachten op het venster van het configuratiebestand"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Actieve taak"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Downloaden"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Softwarebronnen doorzoeken"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Opruimen"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Gereed"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Annuleren"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Softwarelijst laden"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s installeren"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s configureren"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s verwijderen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s wordt volledig verwijderd"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "De verdwijning van %s wordt genoteerd"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Post-installatiehandeling %s uitvoeren"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s upgraden"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s wordt uitgepakt"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Installatie van %s wordt voorbereid"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Configuratie van %s wordt voorbereid"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Verwijdering van %s wordt voorbereid"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Het volledig verwijderen van %s wordt voorbereid"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s is geïnstalleerd"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s is volledig verwijderd"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s is verwijderd"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Gereed"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Authenticatie mislukt"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Ophalen"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactief"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Er is geen netwerkverbinding"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Bezig met het verwerken van %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB van %sB gedownload met %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB van %sB gedownload"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Details"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Bestand"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB gedownload"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Gedownload"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Cd/dvd '%s' is nodig"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Plaats de bovenstaand cd/dvd in drive '%s\" om hiervan softwarepakketten te "
+"installeren."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "D_oorgaan"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installeren"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Herinstalleren"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Verwijderen"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Volledig verwijderen"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Upgraden"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Vorige versie gebruiken"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Upgraden overslaan"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Bekijk de onderstaande lijst van wijzigingen."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Er dient extra software geïnstalleerd te worden"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Er dient extra software opnieuw geïnstalleerd te worden"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Er dient extra software verwijderd te worden"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Er dient extra software volledig verwijderd te worden"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Er dient extra software opgewaardeerd te worden"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Er dient de vorige versie van extra software gebruikt te worden"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Updates zullen worden overgeslagen"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Er moeten extra wijzigingen worden aangebracht"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Er zal in totaal %sB gedownload worden."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Er zal %sB aan schijfruimte vrijkomen."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Er zal %sB extra schijfruimte gebruikt worden."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Uw aanpassingen in '%s' met een latere versie van het configuratiebestand "
+"overschrijven?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Als u niet weet waarom het bestand al bestaat is het meestal veilig om het "
+"te vervangen."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Veranderingen"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Behouden"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Ve_rvangen"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Details"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Wacht tot %s wordt afgesloten"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s wordt gedownload"
+msgstr[1] "%(files)s worden gedownload"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokale softwarebron"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Bezig met het downloaden van %s"
+msgstr[1] "Bezig met het downloaden van %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Structuur van %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Beschrijving van %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Beschrijving handtekening van %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Beschikbare pakketten van %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Beschikbare bronnen van %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Beschikbare vertalingen van %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Vertalingen voor %s (%s) van %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Vertalingen voor %s van %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Vertalingen (%s) van %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakket %s is niet beschikbaar"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakket %s is niet geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versie %s van %s is niet geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakket %s is al geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "De versie %s van %s is niet beschikbaar."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Het webadres van de sleutelserver is ongeldig: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Ongeldig protocol van de server: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Ongeldige identificatie van sleutel: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Het downloaden en installeren van de sleutel %s van %s is mislukt:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Sleutelbestand %s kon niet worden geïnstalleerd: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Sleutel met vingerafdruk %s kon niet worden verwijderd: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Pakket %s kan niet worden verwijderd."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versie %s van %s is niet geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "De vorige versie %s van %s is al geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versie %s van %s is al geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "De versie %s van %s is niet beschikbaar"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "U dient op te geven naar welke versie %s moet worden teruggebracht"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "De latere versie %s van %s is al geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Het pakket %s is niet beschikbaar in de uitgave %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakket %s kan niet worden verwijderd"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Bij dit pakket bevat geen geldig ‘Installed-Size control field’. Zie Debian "
+"Policy, artikel 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "De licentiesleutel is leeg"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "De licentiesleutel mag geen uitvoerbare code bevatten."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Het licentiesleutelpad %s is ongeldig"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "De licentiesleutel bestaat reeds: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"De locatie van de licentiesleutel is onbeveiligd omdat het symbolische "
+"verwijzingen bevat. Pad %s wijst naar %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "De map waar de sleutel geïnstalleerd moet worden bestaat nog niet: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Schrijven van sleutelbestand naar %s mislukt"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+"De afhankelijkheden van de volgende pakketten konden niet geïnstalleerd "
+"worden:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "maar het is een virtueel pakket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "maar het is niet geïnstalleerd"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "maar het zal niet worden geïnstalleerd"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "maar %s is geïnstalleerd"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "maar %s zal worden geïnstalleerd"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Het toevoegen van een sleutel aan de lijst van vertrouwde software-"
+#~ "leveranciers is mislukt"
diff --git a/po/nn.po b/po/nn.po
new file mode 100644
index 0000000..01c7ed0
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,1438 @@
+# Norwegian Nynorsk translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-10-29 20:36+0000\n"
+"Last-Translator: Andreas N. <Unknown>\n"
+"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
+"Language: nn\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Vis nøklane til godkjende utgjevarar"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Du må autentisera deg for å visa godkjende nøklar."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Fjern nedlasta pakkefiler"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Du må autentisera deg for å rydda opp i nedlasta pakkefiler."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Endra programvareinnstillingane"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Du må autentisera deg for å endra programvareinnstillingar."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Endra programvarearkiv"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Du må autentisera deg for å endra innstillingar for programvarearkiv."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installer pakkefil"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Du må autentisera deg for å installera denne pakken."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Oppdater pakkeinformasjon"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Du må autentisera deg for å oppdatera programkatalogen."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installer eller fjern pakkar"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Du må autentisera deg for å installera eller fjerna programvare."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Legg til eit nytt pakkearkiv og installer pakkar frå det"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Du må autentisera deg for å installera programvare frå ei ny kjelde."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Legg til eit nytt pakkearkiv for kjøpt programvare og installer pakkar frå "
+"det"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Du må autentisera deg for å installera kjøpt programvare."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Oppgrader pakkar"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Du må autentisera deg for å installera den oppdaterte programvara."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Avbryt ei oppgåve frå ein annan brukar"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Du må autentisera deg for å avbryta andre sine programvareendringar."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Vel ein mellomtenar for programnedlastingar"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Du må autentisera deg for å bruka ein mellomtenar til programnedlastingar."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FEIL"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Lasta ned %sB av %sB frå %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Lasta ned %sB av %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FEIL:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Du har ikkje løyve til å utføra denne handlinga."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Legg i kø"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Ordnar opp i bindingar"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Denne NYE pakken vil installerast (%(count)s):"
+msgstr[1] "Desse NYE pakkane vil installerast (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Denne pakken vil oppgraderast (%(count)s):"
+msgstr[1] "Desse pakkane vil oppgraderast (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Denne pakken vil FJERNAST (%(count)s):"
+msgstr[1] "Desse pakkane vil FJERNAST (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Denne pakken vil nedgraderast (%(count)s):"
+msgstr[1] "Desse pakkane vil nedgraderast (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Denne pakken vil installerast på nytt (%(count)s):"
+msgstr[1] "Desse pakkane vil installerast på nytt (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Denne pakken vil haldast att (%(count)s):"
+msgstr[1] "Desse pakkane vil haldast att (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Må henta %sB med arkiv."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Etter denne operasjonen vil %sB ekstra diskplass verta brukt."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Etter denne operasjonen vil %sB frigjerast."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ikkje avslutt daemon om han er inaktiv"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Vis informasjon om interne prosessar"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Avslutt og erstatt ein allereie køyrande daemon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Lagra profilstatistikk i valt fil"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ikkje gjer endringar på systemet (berre til bruk for utviklarar)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installert fil"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installerte pakkar"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "La til nøkkel frå fil"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Oppdaterte hurtiglageret"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Fjerna tiltrudd nøkkel"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Fjerna pakkar"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Oppdaterte pakkar"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Oppgraderte systemet"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Iverksette endringar"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Reparerte ein ufullstendig installasjon"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Vellukka"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Avbrote"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Mislukka"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installerer fil"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installerer pakkar"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Legg til nøkkel frå fil"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Oppdaterar mellomlageret"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Fjernar tiltrudd nøkkel"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Fjernar pakkar"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Oppdaterar pakkar"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Oppgraderar systemet"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Utfører endringar"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparerar ufullstendig installasjon"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Klarte ikkje å installera pakkefil"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Klarte ikkje å installera programvara"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Klarte ikkje å oppdatera programvarelista"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Klarte ikkje å fjerna programvareutgjevaren frå lista"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Klarte ikkje å fjerna programvara"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Klarte ikkje å oppdatera programvara"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Klarte ikkje å oppgradera systemet"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Klarte ikkje å uføra programvareendringar"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Klarte ikkje å reparera den ufullstendige installasjonen"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Undersøk Internettkoplinga di"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Undersøk om du brukar pakkearkiv frå ein tredjepart. Sidan slike pakkearkiv "
+"er ei vanleg feilkjelde, bør du vurdera å fjerna desse.\n"
+"I tillegg bør du køyra følgjande kommando i terminalen: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Den valte fila er truleg anten øydelagt eller ikkje ei GPG-fil."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Det her er eit alvorleg problem. Prøv om att seinare, og dersom møter same "
+"problemet er det fint om du rapporterar det til utviklarane av programvaren."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Oppdatering trengs ikkje."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Installasjon trengs ikkje."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Fjerning trengs ikkje."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Du har bede om å få fjerna ein pakke som er grunnleggande for systemet."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Klarte ikkje å installera eller fjerna ein programvarepakke."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Du har ikkje løyve til å utføra denne handlinga."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Klarte ikkje å laste ned pakkefiler"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Klarte ikkje å laste ned informasjon om pakkearkiva"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Pakkesystemet er øydelagt"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Nøkkelen vart ikkje installert"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Nøkkelen vart ikkje fjerna"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Klarte ikkje å låsa pakkehandsamaren"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Klarte ikkje å lasta pakkelista"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakken fins ikkje"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakken er allereie installert"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakken er ikkje installert"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Klarte ikkje å fjerna ein grunnleggande systempakke"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Denne oppgåva kan verken overvakast eller kontrollerast"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Klarte ikkje å gjennomføra pakkeoperasjonen"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Krev installasjon av utiltrudde pakkar"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Den førre installasjonen er ikkje fullført"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Ventar på at tenesta skal starte"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Ventar"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Ventar på at ein annan programvarehandsamar skal avslutte"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Køyrer oppgåve"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Lastar ned"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Ryddar opp"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Fullført"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Avbryt"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Lastar programvareliste"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installerar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Set opp %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Fjernar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Oppgraderar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Lasta ned %sB av %sB frå %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Lasta ned %sB av %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detaljar"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Treng CD- eller DVD-plata '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Vil du bytta ut endringane dine i '%s' med ein seinare versjon av "
+"konfigurasjonsfila?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Det vil vanlegvis vere greitt å erstatte fila om du ikkje veit kvifor ho "
+"allereie er der."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Klarte ikkje å legga nøkkelen inn i lista over tiltrudde "
+#~ "programvareutgjevarar"
diff --git a/po/oc.po b/po/oc.po
new file mode 100644
index 0000000..c8b07a0
--- /dev/null
+++ b/po/oc.po
@@ -0,0 +1,1512 @@
+# Occitan (post 1500) translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-28 20:19+0000\n"
+"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
+"Language-Team: Occitan (post 1500) <oc@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Far la lista de las claus dels provesidors de fisança"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Per afichar la lista de las claus de fisança, vos cal vos autentificar."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Suprimir los paquets telecargats"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Vos cal vos autentificar per suprimir los paquets telecargats."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Modificar la configuracion del logicial"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Vos cal vos autentificar per modificar la configuracion del logicial."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Modificar lo depaus logicial"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Per modificar la configuracion dels depauses logicials, vos cal vos "
+"autentificar."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installar un paquet"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Vos cal vos autentificar per installar aquel paquet."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Metre a jorn las informacions suls paquets"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Vos cal vos autentificar per metre a jorn la lista dels logicials "
+"disponibles."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installar o suprimir de paquets"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Vos cal vos autentificar per installar o suprimir de logicials."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Installar lo logicial a partir d'un depaus marcat coma fòrça fisable."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Vos cal vos autentificar per installar de logicials."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Apondre un depaus novèl e installar de paquets d'aquel"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Vos cal vos autentificar per installar lo logicial dempuèi una font novèla."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Apondre un novèl depaus de logicials crompats e installar de paquets "
+"d'aqueste"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Vos cal vos autentificar per installar lo logicial crompat."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Metre a jorn los paquets"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Vos cal vos autentificar per metre a jorn de logicials."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Anullar lo prètfach d'un autre utilizaire"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Vos cal vos autentificar per anullar las modificacions suls logicials d'un "
+"autre utilizaire."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Definir un servidor mandatari pel telecargament dels logicials"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Vos cal vos autentificar per utilizar un servidor mandatari per telecargar "
+"de logicials."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%s octets sus %s octets telecargats a %s octets/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%s octets sus %s octets telecargats"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR :"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Sètz pas autorizat a realizar aquela accion."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Mesa en fila d'espèra"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolucion de las dependéncias"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Lo NOVÈL paquet seguent serà installat :"
+msgstr[1] "Los %(count)s) NOVÈLS paquets seguents seràn installats :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Lo paquet seguent serà mes a jorn :"
+msgstr[1] "Los %(count)s paquets seguents seràn meses a jorn :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Lo paquet seguent serà SUPRIMIT :"
+msgstr[1] "Los %(count)s paquets seguents seràn SUPRIMITS :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Lo paquet seguent serà remplaçat per una version ANTERIORA :"
+msgstr[1] ""
+"Los %(count)s paquets seguents seràn remplaçats per una version ANTERIORA :"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Lo paquet seguent serà reïnstallat :"
+msgstr[1] "Los %(count)s paquets seguents seràn reïnstallats :"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Lo paquet seguent es estat conservat :"
+msgstr[1] "Los %(count)s paquets seguents son estats conservats :"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%s octets an d'èsser telecargats."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Aprèp aquesta operacion, %s octets d'espaci de disc seràn utilizats."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Aprèp aquesta operacion, %s octets d'espaci de disc seràn liberats."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Volètz contunhar [O/N] ?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Per tractar mantun paquet a l'encòp, plaçatz lors noms entre verguetas :\n"
+"aptdcon --install \"truc machin\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Refrescar l'escondedor"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Ensajatz de reparar las dependéncias copadas. Aquesta operacion es "
+"potencialament dangierosa, perque pòt menar a la supression de fòrça paquets."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Ensaja d'acabar una installacion precedenta incompleta"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installa los paquets especificats"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reïnstalla los paquets especificats"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Suprimís los paquets especificats"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+"Suprimís completament los paquets especificats, incluses los fichièrs de "
+"configuracion"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Tornar a la version precedenta dels paquets especificats"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Desconselhat : utilizatz --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Met a jorn lo sistèma d'un biais securizat"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Met a jorn lo sistèma amb possibilitat d'apondon e de supression de paquets"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Apond als provesidors fisables"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Apond la clau del provesidor (necessita tanben --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utiliza lo servidor de claus especificat per la recèrca de claus"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Apond un depaus novèl a partir de la linha deb especificada"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especificar un fichièr sources.list.d alternatiu al qual los depauses devon "
+"èsser aponduts"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Fa la lista de las claus dels provesidors de fisança"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Suprimís la clau de fisança qu'an l'emprencha especificada"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigura los paquets installats. Es possible de reglar la prioritat de "
+"las questions."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Prioritat debconf minimala de la question d'afichar"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Estacar pas al terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Autorizar los paquets que provenon de fonts pas autentificadas"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Aficha d'informacions suplementàrias suls paquets. Actualament unicament lo "
+"numèro de version"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "En espèra d'autentificacion"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Quitar pas lo demon s'es inactiu"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Cargar pas cap d'extension"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Afichar las informacions intèrnas de tractament"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Quitar e reaviar un demon en cors d'execucion"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "En escota sul bus de sesilha DBus (requesit unicament per de tèsts"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Efectua las operacions dins l’environament chroot especificat"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Enregistrar las estatisticas del perfil dins lo fichièr especificat"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Far pas cap de modificacion sul sistèma (Util solament pels desvolopaires)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Fichièr installat"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paquets installats"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Clau aponduda dempuèi un fichièr"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Escondedor mes a jorn"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Recèrca acabada"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Clau de fisança suprimida"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paquets suprimits"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paquets meses a jorn"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistèma mes a nivèl"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Cambiaments aplicats"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Installacion incompleta reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependéncias copadas reparadas"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Font de logicials aponduda"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Component de la distribucion activat"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Paquets telecargats suprimits"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Paquets installats reconfigurats"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Amb succès"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Anullat"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Fracàs"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installacion del fichièr"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installacion dels paquets"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Apondon de la clau dempuèi un fichièr"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Mesa a jorn de l'escondedor"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Supression de la clau de fisança"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Supression dels paquets"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Mesa a jorn dels paquets"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Mesa a nivèl del sistèma"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplicacion dels cambiaments"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparacion d'una installacion incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparacion dels logicials installats"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Apondon d'una font de logicials"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Activacion d'un component de la distribucion"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Supression dels paquets telecargats"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfiguracion dels paquets installats"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Recèrca en cors"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "L'installacion del paquet logicial a fracassat"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "L'installacion dels logicials a fracassat"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"L'apondon de la clau a la lista dels editors de logicials de fisança a "
+"fracassat."
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "L'actualizacion de la lista dels logicials a fracassat"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"La supression del provesidor de logicials de la lista dels provesidors "
+"fisables a fracassat."
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "La supression dels logicials a fracassat"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "La mesa a jorn dels logicials a fracassat"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "La mesa a jorn del sistèma a fracassat"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Las modificacions logicialas an fracassat."
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Fracàs de la reparacion d'una installacion incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Fracàs de la reparacion de las dependéncias copadas"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "L'apondon de la font de logicials a fracassat"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "L'activacion del component de la distribucion a fracassat"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "La supression dels paquets telecargats a fracassat"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "La recèrca a fracassat"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Apondon de la clau de licéncia"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Verificatz vòstra connexion a Internet"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Verificatz s'utilizatz de depauses de partidas tèrças. S'es lo cas, "
+"desactivatz-los perque de còps son font de problèmas.\n"
+"A mai d'aquò, executatz la comanda seguenta dins un terminal : sudo apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Benlèu lo fichièr seleccionat es pas una clau GPG o es possible que siá "
+"corrumput."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Impossible de suprimir la clau seleccionada. Verificatz que l'emprencha "
+"especificada es valida."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Verificatz s'executatz pas un autre gestionari de paquets, per exemple "
+"Synaptic o Aptitude. Una sola aisina es autorizada a aportar de cambiaments "
+"a l'encòp."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Aquò's un problèma seriós. Tornatz ensajar mai tard. Se lo problèma "
+"persistís, senhalatz-lo als desvolopaires."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Verificatz que lo nom del paquet es escrich corrèctament e que lo depaus "
+"apropriat es actiu."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Cap de mesa a jorn es pas necessària."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Cap d'installacion es pas necessària."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Cap de supression es pas necessària."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Avètz demandat a suprimir un paquet essencial al foncionament del sistèma."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"La connexion al demòni es estada perduda. Es probablament perque lo demòni a "
+"quitat inopinèament."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "L'installacion o la supression d'un paquet logicial a fracassat."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "La foncionalitat demandada es pas presa en carga."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Sembla qu'i a una error logiciala dins aptdaemon, lo programa que vos permet "
+"d'installar e suprimir de logicials e tout autre prètzfach ligat a la "
+"gestion dels paquets."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Aquesta error pòt èsser provocada per de paquets suplementaris requesits, "
+"mas absents ou pas installables. En otra, i poiriá aver un conflicte entre "
+"d'unes paquets que pòdon pas èsser installats a l'encòp."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Aquò necessita l'installacion de paquets dempuèi de fonts pas autentificadas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Benlèu que l'installacion a fracassat a causa d'una error dins lo paquet o "
+"perque es estada interrompuda brutalament. Vos cal corregir aquò abans de "
+"poder installar o suprimir d'autres logicials."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Copiatz lo fichièr sus vòstre ordenador e verificatz-ne las permissions."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"L'installacion d'un paquet que respècta pas los estandards de qualitat es "
+"pas autorizada. Aquò poiriá engendrar de problèmas dels grèus sus vòstre "
+"ordenador. Contactatz la persona o l'organizacion qu'a provesit aquel paquet "
+"en incluissent las entresenhas çaijós."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"La clau de licéncia telecargada qu'es necessària per aviar aqueste logicial "
+"es pas valabla o a pas pogut èsser installada corrèctament.\n"
+"Vejatz los detalhs per mai d'informacions."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Totas las mesas a jorn disponiblas son ja estadas installadas."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"La clau de licéncia que vos permet d'utilizar aqueste logicial a pas pogut "
+"èsser telecargada. Verificatz vòstra connexion ret."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+"Avètz pas obtengut los privilègis requesits per executar aquesta accion."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Avètz ja dintrat un marrit senhal o tampat l'instància d'autorizacion.\n"
+"Tanben, es possible qu'i aja una rason tecnica a aquesta error s'avètz pas "
+"vist cap de dialòg de demanda de senhal : vòstre environament de burèu "
+"provesís pas un agent de sesilha PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Fracàs del telecargament dels paquets"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Fracàs del telecargament de las informacions del depaus"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Impossible de resòlvre las dependéncias del paquet"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Lo sistèma de paquets es copat"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "La clau es pas estada installada"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "La clau es pas estada suprimida"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Impossible de varrolhar lo gestionari de paquets"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Impossible de cargar la lista dels paquets"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Lo paquet existís pas"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Lo paquet es ja a jorn"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Lo paquet es ja installat"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Lo paquet es pas installat"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Impossible de suprimir un paquet essencial del sistèma"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Lo prètzfach pòt pas èsser seguit ni contrarotlat"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Fracàs de tractament del paquet"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Necessita l'installacion de paquets pas verificats"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "L'installacion precedenta èra incompleta"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Lo paquet es de marrida qualitat"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Impossible de dobrir lo paquet"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Foncionalitat pas presa en carga"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Fracàs del telecargament de la clau de licéncia"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Fracàs al moment de l'installacion de la clau de licéncia"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Lo sistèma es ja a jorn"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Avètz pas pogut èsser autorizat"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Sètz pas autorizat a executar aquesta accion"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Una error impossibla de tractar s'es producha"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "En espèra d'aviada del servici"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "En espèra"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "En espèra del mèdia requesit"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "En espèra de fin d'execucion d'un autre gestionari de paquets"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "En espèra d'una demanda de configuracion"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Execucion del prètzfach"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Telecargament"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Interrogacion de las Fonts de Logicials"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Netejatge"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Acabat"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Anullacion"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Cargament de la lista dels logicials"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installacion de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configuracion de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Supression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Supression completa de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Desaparicion de %s constatada"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Execucion de las accions diferidas (« trigger ») de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Mesa a jorn de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Descompression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Installacion de %s en preparacion"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparacion de la configuracion de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparacion de la supression de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparacion de la supression completa de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s es estat installat"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s es estat suprimit completament."
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s es estat suprimit"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Acabat"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "L'autentificacion a fracassat"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Recepcion"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Al repaus"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "La ret es pas disponibla"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Tractament de %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%s octets sus %s octets telecargats a %s octets/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%s octets sus %s octets telecargats"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalhs"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fichièr"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%s octets telecargats"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Telecargat"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Lo CD/DVD « %s » es requeqit"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Installatz lo CD çaisús dins lo lector « %s » per installar los paquet que "
+"s'i tròban."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontunhar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reïnstallar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Suprimir"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Purgar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Metre a jorn"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Tornar a una version anteriora"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Ignorar la mesa a nivèl"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Consultatz la lista dels cambiaments çaijós."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "De logicials suplementaris devon èsser installats."
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "De logicials suplementaris devon èsser reïnstallats."
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "De logicials suplementaris devon èsser desinstallats."
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "De logicials suplementaris devon èsser suprimits completament."
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "De logicials suplementaris devon èsser meses a jorn."
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+"De logicials suplementaris an d'èsser reînstallats en version mai anciana."
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Las mesas a jorn seràn ignoradas."
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "De cambiaments suplementaris son requesits."
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%s octets seràn telecargats al total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%s octets d'espaci de disc seràn liberats."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%s octets d'espaci de disc suplementari serà utilizat."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Remplaçar las modificacions qu'aviatz efectuadas dins '%s' per una version "
+"ulteriora del fichièr de configuracion ?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Se sabètz pas perqué lo fichièr es ja aicí, es generalament sens dangièr de "
+"lo remplaçar."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Modificacions"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Conservar"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Remplaçar"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalhs"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "En espèra de tampadura de %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Telecargament de %(files)s"
+msgstr[1] "Telecargament de %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "depaus local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Telecargament dempuèi %s"
+msgstr[1] "Telecargament dempuèi %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Composicion de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descripcion de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Descripcion de la signatura de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paquets disponibles dins lo depaus %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Fonts disponiblas dempuèi %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduccions disponiblas dempuèi %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduccions pel %s (%s) dins lo depaus %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduccions pel %s dins lo depaus %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduccions (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Lo paquet %s es pas disponible"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Lo paquet %s es pas installat"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "La version %s de %s es pas installada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Lo paquet %s es ja installat"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "La version %s de %s es pas disponibla"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "L'URL del servidor de claus es invalida : %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocòl del servidor invalid : %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Identificant de clau invalid : %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Fracàs del telecargament e de l'installacion de la clau %s a partir de %s :\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Impossible d'installar la clau %s : %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Impossible de suprimir la clau qu'an l'emprencha %s : %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Impossible de suprimir lo paquet %s"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "La version %s de %s es pas installada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Una version anteriora (%s) de %s es ja installada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "La version %s de %s es ja installada"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "La version %s de %s es pas disponibla"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Vos cal especificar la version cap a la quala volètz tornar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "La darrièra version (%s) de %s es ja installada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Lo paquet %s es pas disponible dins la distribucion %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Impossible de suprimir lo paquet %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Lo paquet provesís pas un camp de contraròtle de talha valida. Cf. politica "
+"Debian 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "La clau de licéncia es voida"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "La clau de licéncia pòt pas conténer de còde executable."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Lo camin de la clau de licéncia %s es pas valide"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "La clau de licéncia existís ja : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"L'emplaçament de la clau de licéncia es pas securizat perque conten de "
+"ligams simbolics. Lo camin %s renvia a %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Lo dorsièr ont installar la clau existís pas pel moment : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Fracàs al moment de l'escritura del fichièr clau dins : %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Los paquets seguents contenon de dependéncias pas satisfachas :"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mas es un paquet virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mas es pas installat"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mas serà pas installat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mas %s es installat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mas %s deu èsser installat"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "L'apondon de la clau a la lista dels provesidors de logicials de fisables "
+#~ "a fracassat."
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..de4b356
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,1503 @@
+# Polish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-19 15:50+0000\n"
+"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+"X-Poedit-Country: Poland\n"
+"X-Poedit-Language: Polish\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista kluczy zaufanych dostawców"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Aby wyświetlić listę zaufanych kluczy, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Usunięcie pobranych pakietów"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Aby usunąć pobrane pakiety plików, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Zmiana konfiguracji oprogramowania"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Aby dokonać zmian, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Zmiana repozytorium oprogramowania"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Aby zmienić ustawienia repozytoriów oprogramowania, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalacja pliku pakietu"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Aby zainstalować ten pakiet, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Uaktualnianie informacji o pakietach"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Aby uaktualnić katalog oprogramowania, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalacja lub usuwanie pakietów"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Aby zainstalować lub usunąć oprogramowanie, należy się uwierzytelnić."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalacja oprogramowania z wysoce zaufanych repozytoriów białej listy."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Aby zainstalować oprogramowanie, należy się uwierzytelnić."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Dodaj nowe repozytorium i instaluj z niego pakiety"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Aby zainstalować oprogramowanie z nowego zasobu, należy się uwierzytelnić."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Dodaj nowe repozytorium zakupionego oprogramowania i instaluj z niego pakiety"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Aby zainstalować zakupione oprogramowanie, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Aktualizacja pakietów"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Aby zainstalować zaktualizowane oprogramowanie, należy się uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Anuluj zadanie innego użytkownika"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Aby anulować zmiany oprogramowania innego użytkownika, należy się "
+"uwierzytelnić."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Ustawienie pośrednika sieciowego do pobierania oprogramowania"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Aby użyć pośrednika sieciowego do pobierania oprogramowania, należy się "
+"uwierzytelnić."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "BŁĄD"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Pobrano %sB z %sB z prędkością %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Pobrano %sB z %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "BŁĄD:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Użytkownikowi nie wolno wykonać tego działania."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Kolejkowanie"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Rozwiązywanie zależności"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Następujący nowy pakiet zostanie zainstalowany (%(count)s):"
+msgstr[1] "Następujące (%(count)s) nowe pakiety zostaną zainstalowane:"
+msgstr[2] "(%(count)s) następujących nowych pakietów zostanie zainstalowanych:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Następujacy (%(count)s) pakiet zostanie zaktualizowany:"
+msgstr[1] "Następujace (%(count)s) pakiety zostaną zaktualizowane:"
+msgstr[2] "Następujacych (%(count)s) pakietów zostanie zaktualizowanych:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Następujacy (%(count)s) pakiet zostanie usunięty:"
+msgstr[1] "Następujace (%(count)s) pakiety zostaną usunięte:"
+msgstr[2] "Następujacych (%(count)s) pakietów zostanie usuniętych:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Następujacy (%(count)s) pakiet zostanie zdezaktualizowany:"
+msgstr[1] "Następujace (%(count)s) pakiety zostaną zdezaktualizowane:"
+msgstr[2] "Następujacych (%(count)s) pakietów zostanie zdezaktualizowanych:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Następujacy (%(count)s) pakiet zostanie przeinstalowany:"
+msgstr[1] "Następujace (%(count)s) pakiety zostaną przeinstalowane:"
+msgstr[2] "Następujacych (%(count)s) pakietów zostanie przeinstalowanych:"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Następujacy (%(count)s) pakiet został przywrócony:"
+msgstr[1] "Następujace (%(count)s) pakiety zostały przywrócone:"
+msgstr[2] "Następujacych (%(count)s) pakietów zostało przywróconych:"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Należy pobrać %sB archiwów."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Po tej operacji użyte zostanie %sB dodatkowego miejsca."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Po tej operacji zwolnione zostanie %sB dodatkowego miejsca."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Kontynuować [T/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Aby działać na więcej niż jednym pakiecie należy umieścić nazwy pakietów w "
+"cudzysłowach:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Odśwież bufor"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Spróbuj rozwiązać uszkodzone zależności. Potencjalnie niebezpieczne "
+"działanie, ponieważ może usunąć wiele pakietów."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Próbuje ukończyć poprzednią nieukończoną instalację"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instaluje podane pakiety"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Instaluje ponownie podane pakiety"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Usuwa podane pakiety"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Usuwa podane pakiety wraz z plikami konfiguracji"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Powrót do wcześniejszych wersji pakietów"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Przestarzałe: proszę użyć --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Aktualizuje system w bezpieczny sposób"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Aktualizuje system, usuwając i instalując pakiety"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Dodaje dostawcę do zaufanych"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Dodaje identyfikator klucza dostawcy (wymaga także --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Używa podanego serwera kluczy do wyszukiwania kluczy"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Dodaje nowe repozytorium z podanego wiersza deb"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Określa alternatywny plik sources.list.d, do których mają zostać dodane "
+"repozytoria."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Wyświetla listę kluczy zaufanych dostawców"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Usuwa zaufany klucz podanego odcisku palca"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Rekonfiguracja zainstalowanych pakietów. Opcjonalnie można sprecyzować "
+"priorytety zapytań systemowych."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Zostanie wyświetlona minimalna ilość zapytań debconf"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Bez załączania terminalu apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Zezwala na pakiety z nieuwierzytelnionych źródeł"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Wyświetlanie dodatkowych informacji o pakietach. Na tym etapie tylko numery "
+"wersji"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Oczekiwanie na uwierzytelnienie"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Nie wyłączaj usługi z powodu bezczynności"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Nie wczytuj żadnych wtyczek"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Wyświetlaj wewnętrzne informacje przetwarzania"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Zakończ i zamień już uruchomioną usługę"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Nasłuchiwanie na magistrali sesji DBus (wymagane tylko do testowania"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Przeprowadzenie oparacji na podanym chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Zachowa statystyki profilu w określonym pliku"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Nie dokonuj żadnych zmian w systemie (Tylko do użytku programistów)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Zainstalowano plik"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Zainstalowano pakiety"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Dodano klucz z pliku"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Zaktualizowano bufor"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Wyszukiwanie zakończone"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Usunięto zaufany klucz"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Usunięto pakiety"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Zaktualizowano pakiety"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Zaktualizowano system"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Zastosowano zmiany"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Naprawiono niekompletną instalację"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Naprawiono uszkodzone zależności"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Dodano żródło oprogramowania"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Składnik dystrybucji włączony"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Usunięte pobrane pliki pakietów"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Zrekonfigurowane zainstalowane pakiety"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Udane"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Anulowane"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Nieudane"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalowanie pliku"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalowanie pakietu"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Dodawanie klucza z pliku"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Aktualizowanie bufora"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Usuwanie zaufanego klucza"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Usuwanie pakietów"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Aktualizowanie pakietów"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Aktualizowanie systemu"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Zastosowywanie zmian"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Naprawianie niekompletnej instalacji"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Naprawa zainstalowanego oprogramowania"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Dodawanie żródła oprogramowania"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Włączanie składnika dystrybucji"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Usuwanie pobranych plików pakietów"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Rekonfigurowanie zainstalowanych pakietów"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Wyszukiwanie"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalacja pliku pakietu się nie powiodła"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalacja programu się nie powiodła"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Dodanie klucza do listy zaufanych dostawców oprogramowania nie powiodło się"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Odświeżenie listy oprogramowania się nie powiodło"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Usunięcie z listy zaufanych dostawców się nie powiodło"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Usunięcie programu się nie powiodło"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Aktualizacja programu się nie powiodła"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Aktualizacja systemu się nie powiodła"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Zastosowanie zmian w programie się nie powiodło"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Naprawa niekompletnej instalacji się nie powiodła"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Naprawa uszkodzonych zależności się nie powiodła"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Dodawanie żródła oprogramowania się nie powiodło"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Włączenie składnika dystrybucji się nie powiodło"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Usuwanie pobranych plików pakietów, zakończone niepowodzeniem"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Wyszukiwanie nie powiodło się"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Dodawanie klucza licencji"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Proszę sprawdzić połączenie internetowe."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Proszę sprawdzić, czy używane są repozytoria osób trzecich. Jeśli tak, to "
+"proszę je wyłączyć, ponieważ są częstym źródłem problemów.\n"
+"Następnie proszę uruchomić następujące polecenie w terminalu: apt-get "
+"install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Wybrany plik nie jest kluczem GPG lub jest uszkodzony."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Wybrany klucz nie mógł zostać usunięty. Proszę sprawdzić, czy podany odcisk "
+"palca jest prawidłowy."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Proszę sprawdzić, czy nie jest uruchomiony inny program do obsługi "
+"oprogramowania, np. Synaptic lub aptitude. Tylko jedno narzędzie w jednym "
+"czasie może wprowadzać zmiany."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"To poważny problem. Proszę spróbować później. Jeśli problem pojawi się "
+"ponownie, to proszę zgłosić błąd programistom."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Proszę sprawdzić pisownię nazwy pakiety i czy odpowiednie repozytorium "
+"zostało dodane."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nie ma potrzeby aktualizacji."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nie ma potrzeby instalacji"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nie ma potrzeby usunięcia."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Zażądano usunięcia pakietu, który jest niezbędnym elementem systemu."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Połączenie z usługą utracono. Najprawdopodobniej usługa w tle uległa awarii."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Instalacja lub usunięcie oprogramowania się nie powiodło."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Żądana opcja nie jest obsługiwana."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Zdaje się, że aptdaemon zawiera błąd programisty. Program ten pozwala na "
+"instalację i usuwanie oprogramowania oraz zarządzanie pakietami."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ten błąd mógł być spowodowany wymogiem dodatkowych pakietów oprogramowania, "
+"których brak lub nie można ich zainstalować. Może także istnieć konflikt "
+"pomiędzy pakietami oprogramowania, które nie mogą być zainstalowane w jednym "
+"czasie."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"Ta czynność wymaga zainstalowania pakietów pochodzących z "
+"nieuwierzytelnionych zasobów."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Instalacja mogła się nie powieść z powodu błędu w pakiecie oprogramowania "
+"lub została anulowana w nieodpowiedni sposób. Należy to naprawić przed "
+"instalowaniem lub usuwaniem dalszego oprogramowania."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Skopiuj plik na dysk komputera i sprawdź jego uprawnienia dostępu"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Instalacja tego pakietu, narusza standardy jakościowe i nie jest dozwolona. "
+"To działanie mogłoby wywołać poważne problemy z działaniem komputera. "
+"Skontaktuj się z dostawcą pliku pakietu, dołączając poniższe szczegóły."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Pobrany klucz licencyjny, wymagany do uruchomienia tego elementu, jest "
+"nieważny lub nie może zostać zainstalowany.\n"
+"Zobacz szczegóły aby uzyskać więcej informacji."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Wszystkie dostępne aktualizacje zostały już zainstalowane."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Klucz licencyjny, umożliwiający korzystanie z tego programu nie może zostać "
+"pobrany. Proszę sprawdzić połączenie sieciowe."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Brak wymaganych uprawnień do wykonania tej operacji."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Wprowadzono niepoprawne hasło lub anulowano autoryzację.\n"
+"Błąd mógł również wystąpić wskutek problemu technicznego, gdy pole "
+"wprowadzania hasła nie było widoczne: środowisko graficzne nie udostępnia "
+"klienta sesji PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Nieudane pobranie plików pakietów"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Nieudane pobranie informacji z repozytoriów"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Zależności pakietu nie mogą zostać rozwiązane"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "System pakietów jest uszkodzony"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Klucz nie został zainstalowany"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Klucz nie została usunięty"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Nieudane zablokowanie menedżera pakietów"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Nieudane wczytanie listy pakietów"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pakiet nie istnieje"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "To jest już najnowsza wersja tego pakietu"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pakiet jest już zainstalowany"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pakiet nie jest zainstalowany"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Nieudane usunięcie niezbędnego pakietu systemu"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Zadanie nie może być monitorowane ani kontrolowane"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Nieudane działanie pakietu"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Wymaga instalacji niezaufanych pakietów"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Poprzednia instalacja nie została ukończona"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Ten pakiet ma złą jakość"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Plik pakietu nie mógł zostać otwarty"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Opcja niedostępna"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Nie udało się pobrać klucza licencyjnego"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Nie udało się zainstalować klucza licencyjnego"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "System jest już w pełni zaktualizowany"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Autoryzacja nieudana"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Niestety nie wolno Tobie wykonać tej operacji."
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Wystąpił nieobsługiwany błąd"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Oczekiwanie na uruchomienie usługi"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Oczekiwanie"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Oczekiwanie na żądany nośnik"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Oczekiwanie na zakończenie pracy innych menedżerów oprogramowania"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Oczekiwanie na zapytanie pliku konfiguracji"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Przetwarzanie zadania"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Pobieranie"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Wysylanie zapytań do źródeł oprogramowania"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Sprzątanie"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Ukończono"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Anulowanie"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Wczytywanie listy oprogramowania"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalowanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Konfigurowanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Usuwanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Całkowite usuwanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Odnotowano zniknięcie pakietu %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Przetwarzanie wyzwalacza %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Aktualizowanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Rozpakowywanie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Przygotowanie do instalacji %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Przygotowanie do konfiguracji %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Przygotowanie do usunięcia %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Przygotowanie do całkowitego usunięcia %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Zainstalowano %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Całkowicie usunięto %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Usunięto %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Ukończono"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Uwierzytelnienie się nie powiodło"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Pobieranie"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Bezczynny"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Sieć jest niedostępna"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Przetwarzanie %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Pobrano %sB z %sB z prędkością %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Pobrano %sB z %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Szczegóły"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Plik"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Pobrano %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Pobrano"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Wymagany nośnik CD/DVD \"%s\""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Proszę wsunąć powyższą płytę CD/DVD do napędu \"%s\", aby zainstalować z "
+"niej pakiety oprogramowania."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Kontynuuj"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Zaintaluj"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Zainstaluj ponownie"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Usuń"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Usuń z konfiguracją"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Zaktualizuj"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Przywróć poprzednią wersję"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Pomiń aktualizację"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Proszę obejrzeć na listę zmian poniżej."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Należy zainstalować dodatkowe oprogramowanie"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Należy zainstalować ponownie dodatkowe oprogramowanie"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Należy usunąć dodatkowe oprogramowanie"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Należy usunąć wraz z konfiguracją dodatkowe oprogramowanie"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Należy zaktualizować dodatkowe oprogramowanie"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Należy przywrócić poprzednią wersję dodatkowego oprogramowania"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Aktualizacje zostaną pominięte"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Wymagane są dodatkowe zmiany"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB do pobranie ogółem."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB miejsca na dysku zostanie zwolnione."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB więcej miejsca na dysku zostanie użyte."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "Czy zastąpić zmiany w '%s' późniejszymi plikami konfiguracji?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Jeżeli nie wiesz dlaczego plik już istnieje, najbezpieczniej będzie go "
+"zastąpić."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Zmiany"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "Za_chowaj"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Zamień"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Szczegóły"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Oczekiwanie na zamknięcie programu %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Pobieranie %(files)s"
+msgstr[1] "Pobieranie %(files)s"
+msgstr[2] "Pobieranie %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repozytorium lokalne"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Pobieranie z %s"
+msgstr[1] "Pobieranie z %s"
+msgstr[2] "Pobieranie z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktura %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Opis %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Opis sygnatury %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Dostępne pakiety z %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Dostępne źródła z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Dostępne tłumaczenia z %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Tłumaczenia dla języka %s (%s), z %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Tłumaczenia w języku %s z %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Tłumaczenia(%s) z %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pakiet %s jest niedostępny"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pakiet %s nie jest zainstalowany"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Wersja %s pakietu %s nie jest zainstalowana"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pakiet %s jest już zainstalowany"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Wersja %s pakietu %s jest niedostępna."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Adres URL serwera kluczy jest nieprawidłowy: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Nieprawidłowy protokół serwera: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Nieprawidłowy identyfikator klucza: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nie udało się pobrać i zainstalować klucza %s z %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Plik klucza %s nie mógł być zainstalowany: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Klucz z odciskiem palca %s nie mógł być usunięty: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Usunięcie pakietu %s nie jest możliwe."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Wersja %s pakietu %s nie jest zainstalowana"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Poprzednia wersja %s pakietu %s jest już zainstalowana"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Wersja %s pakietu %s jest już zainstalowana"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Wersja %s pakietu %s jest niedostępna"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Należy sprecyzować do której wersji zdezaktualizować %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Nowsza wersja %s pakietu %s jest już zainstalowana"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pakiet %s jest niedostępny w tym wydaniu %s ."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Pakiet %s nie może zostać usunięty"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Ten pakiet nie dostarcza aktualnej informacji o rozmiarze instalacji. "
+"Szczegóły w Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Klucz licencji jest pusty"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Klucz licencyjny nie może zawierać kodu wykonawczego."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Ścieżka %s klucza licencyjnego jest nieprawidłowa"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Klucz licencyjny już istnieje: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Lokalizacja klucza licencyjnego jest niezabezpieczona, ponieważ zawiera "
+"dowiązania symboliczne. Ścieżka %s prowadzi do %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+"Katalog, w którym ma być zainstalowany klucz, jeszcze nie istnieje: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Nie można zapisać pliku klucza do: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Zależności dla następujących pakietów, nie zostały spełnione:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "to jest pakiet wirtualny"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ale został zainstalowany"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ale nie zostanie zainstalowany"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ale %s jest zainstalowany"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ale %s zostanie zainstalowany"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Dodanie klucza do listy zaufanych dostawców się nie powiodło"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..e40c01b
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,1500 @@
+# Portuguese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-23 11:22+0000\n"
+"Last-Translator: Dark_Webster <pedro_flores_16@hotmail.com>\n"
+"Language-Team: Portuguese <pt@li.org>\n"
+"Language: pt\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Listar chaves de fornecedores de confiança"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Para ver a lista de chaves de confiança, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Remover ficheiros de pacotes transferidos"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Para apagar os pacotes transferidos, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Modificar configuração dos programas"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Para alterar as definições dos programas, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Alterar repositório de programas"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Para alterar as definições do repositório de aplicações, é necessária a sua "
+"autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalar ficheiro do pacote"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Para instalar este pacote, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualizar a informação do pacote"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Para actualizar o catálogo de programas, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalar ou remover pacotes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Para instalar ou remover programas, é necessária a sua autenticação."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Instalar software a partir de um repositório de alta confiança."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Para instalar software, precisa de autenticar-se."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Adicionar um novo repositório e instalar pacotes a partir dele"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Para instalar a partir de uma nova fonte, é necessária a sua autenticação."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Adicionar um novo repositório de programas pagos e instalar pacotes a partir "
+"dele"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Para instalar programas comprados, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Actualizar pacotes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Para instalar programas actualizados, é necessária a sua autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancelar a tarefa de outro utilizador"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Para cancelar as alterações feitas aos programas, é necessária a sua "
+"autenticação."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Estabelecer proxy para as transferências"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Para utilizar um proxy nas transferências, é necessária a sua autenticação."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERRO"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Transferidos %sB de %sB a %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Transferidos %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERRO:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Não tem permissão para realizar esta acção."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "A colocar na fila"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "A resolver dependências"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "O seguinte NOVO pacote será instalado (%(count)s):"
+msgstr[1] "Os seguintes NOVOS pacotes serão instalados (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "O seguinte pacote será actualizado (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão actualizados (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "O seguinte pacote será REMOVIDO (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão REMOVIDOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "O seguinte pacote será DESACTUALIZADO (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão DESACTUALIZADOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "O seguinte pacote será reinstalado (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão reinstalados (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "O seguinte pacote foi deixado para trás (%(count)s):"
+msgstr[1] "Os seguintes pacotes foram deixados para trás (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "É necessária a obtenção de %sB em arquivos."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Após esta operação, será utilizado %sB de espaço no disco."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Após esta operação, %sB de espaço no disco será libertada."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Deseja continuar [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Para utilizar mais do que um pacote coloque o nome do pacote entre aspas:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Actualizar a cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Tentar resolver dependências danificadas. A operação é potencialmente "
+"perigosa uma vez que pode tentar remover muitos pacotes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Tente terminar uma instalação anterior incompleta"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalar os pacotes indicados"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalar os pacotes indicados"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Remover os pacotes indicados"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remover os pacotes e ficheiros de configuração indicados"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Desactualizar os pacotes indicados"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsoleto: Por favor, utilize --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Actualizar o sistema de modo seguro"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Actualizar o sistema, provavelmente instalando e removendo pacotes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Adicionar o fornecedor aos de confiança"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Adicionar a chave de identificação do fornecedor (também necessita de --"
+"keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Utilizar o seguinte servidor de chaves para procurar chaves"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Adicionar o novo repositório da linha deb indicada"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especificar um ficheiro sources.list.d alternativo, no qual os repositórios "
+"devem ser adicionados."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Listar chaves de fornecedores confiáveis"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remover a chave confiável dos identificadores indicados"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurar pacotes instalados. Opcionalmente, pode ser especificada a "
+"prioridade mínima para perguntas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+"A prioridade mínima do debconf para eventuais perguntas a serem apresentadas"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Não adicionar ao terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permitir pacotes de fontes não autenticadas"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Exibir informação adicional sobre os pacotes. Actualmente só mostra o número "
+"da versão"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "À espera da autenticação"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Não encerrar o serviço devido a inactividade"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Não carregar quaisquer plugins"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostrar informações de processamento interno"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Sair e substituir o serviço em execução"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Receber informações Dbus (apenas para testes)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Executar operações do chroot indicado"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Armazenar as estatísticas do perfil no ficheiro especificado"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Não efectuar qualquer alteração ao sistema (apenas útil para programadores)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Ficheiro instalado"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pacotes instalados"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Chave do ficheiro adicionada"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache actualizada"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Pesquisa concluída"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Chave de confiança removida"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pacotes removidos"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pacotes actualizados"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema actualizado"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Alterações aplicadas"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instalação incompleta reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependências quebradas reparadas"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Adicionada fonte de aplicações"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Activado componente da distribuição"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Ficheiros de pacotes transferidos que foram removidos"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Pacotes instalados que foram reconfigurados"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Com sucesso"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelado"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Falhou"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "A instalar o ficheiro"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "A instalar pacotes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "A adicionar chave a partir do ficheiro"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "A actualizar a cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "A remover a chave de confiança"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "A remover pacotes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "A actualizar pacotes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "A actualizar o sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "A aplicar as alterações"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "A reparar instalação incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "A reparar software instalado"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "A adicionar fonte de aplicações"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "A activar componente da distribuição"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "A remover ficheiros de pacotes transferidos"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "A reconfigurar pacotes instalados"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "A procurar"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Falha ao adicionar o pacote"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Falha ao instalar a aplicação"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"A adição da chave à lista de vendedores de software de confiança falhou"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Falha ao actualizar a lista de aplicações"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Falha ao remover o fornecedor da lista de confiáveis"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Falha ao remover a aplicação"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Falha ao actualizar a aplicação"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Falha ao actualizar o sistema"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Falha ao aplicar as alterações"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Falha ao reparar instalação incompleta"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Falha ao reparar dependências quebradas"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Falha ao adicionar a fonte de aplicações"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Falha ao activar a componente da distribuição"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Falha ao remover os ficheiros de pacotes transferidos"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "A pesquisa falhou"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "A adicionar chave de licença"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Verifique a sua ligação à Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Verifique se está a usar repositórios de terceiros. Se sim desactive-os , "
+"pois são uma fonte comum de problemas.\n"
+"Além disso, execute o seguinte comando numa Consola: apt-get install-f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"O ficheiro seleccionado pode não ser um ficheiro de chave GPG ou pode estar "
+"corrompido."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"A chave seleccionada não pôde ser removida. Verifique se forneceu um "
+"identificador válido."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Verifique se está a utilizar outra ferramenta de gestão (Synaptic ou "
+"aptitude). Só pode utilizar uma aplicação de cada vez."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Este é um problema sério. Tente novamente mais tarde. Se o problema "
+"persistir, reporte o erro aos programadores."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Verifique a ortografia do nome do pacote e se o repositório apropriado está "
+"activo."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Não há qualquer necessidade de actualização."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Não há qualquer necessidade de instalação"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Não há qualquer necessidade de remoção."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Você pediu para remover um pacote que é uma parte essencial do seu sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Foi perdida a ligação com o serviço. O mais provável é o serviço de segundo "
+"plano ter bloqueado."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Falha ao instalar ou remover um pacote."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "A funcionalidade pedida não é suportada."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Parece que existe um problema no aptdaemon, a aplicação que lhe permite "
+"instalar ou remover programas e executar outras tarefas relacionadas com a "
+"gestão de pacotes."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Este erro pode estar relacionado com pacotes necessários que estão em falta "
+"ou não podem ser instalados. Poderá também existir conflito entre pacotes "
+"que não possam ser instalados em simultâneo."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Isto necessita que se instale pacotes de fontes não autenticadas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"A instalação pode ter falhado devido a um erro no correspondente pacote ou "
+"então foi cancelada de forma abrupta. Tem de reparar isto antes de poder "
+"instalar ou remover mais aplicações."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Por favor, copie o ficheiro para o seu computador e verifique as permissões."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Não é permitida a instalação de um pacote que viole os padrões de qualidade. "
+"Isto poderia causar sérios problemas ao seu computador. Por favor, contacte "
+"a pessoa ou organização que lhe forneceu este pacote e inclua os seguintes "
+"detalhes:"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"A chave de licença que é necessária para correr este software não é válida "
+"ou não pode ser instalada correctamente.\n"
+"Veja os detalhes para mais informações."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Todas as actualizações disponíveis já foram instaladas."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"A chave de licença que lhe permite usar este software não pode ser "
+"transferida. Por favor verifique a sua ligação à Internet."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Não tem privilégios suficientes para realizar esta acção."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Você forneceu uma password errada ou cancelou a autorização.\n"
+"No entanto pode também haver uma razão técnica para este erro se você não "
+"viu um diálogo de password: o seu ambiente de trabalho não suporta um agente "
+"de sessão PolicyKit"
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Falha ao transferir os pacotes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Falha ao transferir as informações do repositório"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "As dependências do pacote não podem ser resolvidas"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "O sistema de pacotes está danificado"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "A chave não foi instalada"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "A chave não foi removida"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Falha ao bloquear o gestor de pacotes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "falha ao carregar a lista de pacotes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "O pacote não existe"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "O pacote já está em dia."
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "O pacote já está instalado"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "O pacote não está instalado"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Falha ao remover pacotes essenciais do sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "A tarefa não pode ser monitorizada ou controlada"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Falhou a operação com o pacote"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Requer instalação de pacotes não fiáveis"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "A instalação anterior não foi concluída"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Este pacote é de má qualidade"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "O ficheiro do pacote não pôde ser aberto"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Função não suportada"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Falhou ao transferir a chave da licença"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Falhou ao instalar a chave da licença"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "O sistema já está atualizado"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Você não pôde ser autorizado"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Não tem permissão para realizar esta acção"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ocorreu um erro não manipulável"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "À espera do inicio do serviço"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Em espera"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "À espera dos elementos necessários"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "À espera do encerramento dos outros gestores de pacotes"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "À espera do ficheiro de configuração inicial"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Tarefa em execução"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "A transferir"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "A perguntar às fontes de software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "A limpar"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Concluído"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "A cancelar"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "A carregar lista de aplicações"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "A instalar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "A configurar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "A remover %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "A remover completamente %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "A notar o desaparecimento de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "A correr o \"trigger\" de pós-instalação %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "A actualizar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "A desempacotar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "A preparar a instalação de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "A preparar a configuração de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "A preparar a remoção de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "A preparar a remoção completa de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Removido completamente %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s removido"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Concluído"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Falha ao autenticar"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "A obter"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactivo"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "A rede não está disponível"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "A processar %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Transferidos %sB de %sB a %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Transferidos %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalhes"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Ficheiro"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB transferidos"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Transferido"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "É necessário o CD/DVD \"%s\""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Insira na unidade \"%s\" o CD/DVD acima referido, de modo a instalar "
+"pacotes tendo como base o disco."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Remover"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Eliminar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Actualizar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Desactualizar"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Ignorar actualização"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Dê uma vista de olhos na seguinte lista de alterações."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "É necessária a instalação de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "É necessária a reinstalação de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "É necessária a remoção de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "É necessária a eliminação de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "É necessária a actualização de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "É necessária a desactualização de programas adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "As actualizações serão ignoradas"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "São necessárias alterações adicionais"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "No total, serão transferidos %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Serão libertados %sB de espaço no disco."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Serão utilizados %sB de espaço no disco."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Substituir as suas alterações a \"%s\" com uma versão mais recente da "
+"configuração?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Se não souber porque é que o ficheiro já existe, é provável que este possa "
+"ser substituído."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Alterações"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Manter"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Substitui_r"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalhes"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Á espera de %s para sair."
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "A transferir %(files)s"
+msgstr[1] "A transferir %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositório local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "A transferir de %s"
+msgstr[1] "A transferir de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estrutura de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descrição de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Assinatura de descrição de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pacotes disponíveis de %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Fontes disponíveis de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduções disponíveis de %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduções em %s (%s) de %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduções em %s de %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduções (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "O pacote %s não está disponível."
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "O pacote %s não está instalado."
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "A versão %s de %s não está instalada."
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "O pacote %s já está instalado."
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "A versão %s de %s não está disponível."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "O URL do servidor chave é inválido: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocolo inválido do servidor: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "ID de chave inválido: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Falha ao transferir e instalar a chave %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Não foi possível instalar a chave %s : %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Não foi possível remover a chave %s e o seu identificador: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "O pacote %s não pode ser removido."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "A versão %s de %s não está instalada."
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "A antiga versão %s de %s já está instalada."
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "A versão %s de %s já está instalada."
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "A versão %s de %s não está disponível."
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Tem de especificar a versão anterior para desactualizar %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "A nova versão %s de %s já está instalada."
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "O pacote %s não está disponível para a versão %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "O pacote %s não pode ser removido"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"O pacote não fornece um campo válido para controlar o tamanho de instalação. "
+"Consulte a política Debian 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "A chave de licença está vazia"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "A chave de licença não pode conter código executável."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "O caminho da chave de licença %s é inválido"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "A chave de licença já existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"O local da chave de licença é inseguro dado que contém ligações simbólicas. "
+"O caminho %s mapeia para %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "O diretório para onde instalar a chave ainda não existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Falhou ao escrever o ficheiro da chave em: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Os seguintes pacotes têm dependências não resolvidas."
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mas é um pacote virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mas não está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mas não está em vias de instalação"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mas %s está instalado"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mas %s vai ser instalado"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Falha ao adicionar a chave à lista de fornecedores confiáveis"
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..604929a
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,1494 @@
+# Brazilian Portuguese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-30 02:39+0000\n"
+"Last-Translator: Pablo Diego Moço <Unknown>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"Language: pt_BR\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista de fornecedores com chaves confiáveis"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Para ver a lista de chaves confiáveis, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Remover arquivos de pacote baixados"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Para limpar os arquivos do pacote baixado, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Alterar configurações de software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Para alterar as configurações de software, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Alterar repositório de software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Para alterar configurações de repositório de software, você precisa se "
+"autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalar arquivo de pacote"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Para instalar esse pacote, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Atualizar informações do pacote"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Para atualizar o catálogo de softwares, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalar ou remover pacotes"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Para instalar ou remover softwares, você precisa se autenticar."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instale programas a partir do repositório altamente confiável da lista "
+"branca."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Para instalar programas, você precisa se autenticar."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Adicionar um novo repositório e instalar pacotes a partir dele"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Para instalar um software de uma nova fonte, você precisa se autenticar."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Adicionar um novo repositório do software comprado e instalar pacotes a "
+"partir dele"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Para instalar um software comprado, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Atualizar pacotes"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Para instalar um software atualizado, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Cancelar a tarefa de outro usuário"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Para cancelar as alterações de outros softwares, você precisa se autenticar."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Definir um proxy para baixar softwares"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "Para usar um proxy para baixar o software, você precisa se autenticar."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERRO"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Baixados %sB de %sB em %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Baixados %sB de %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERRO:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Você não tem permissão para executar esta ação."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Enfileirando"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Resolvendo dependências"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "O NOVO pacote seguinte será instalado (%(count)s):"
+msgstr[1] "Os NOVOS pacotes seguintes serão instalados (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "O seguinte pacote será atualizado (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão atualizados (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "O seguinte pacote será REMOVIDO (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão REMOVIDOS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "O pacote a seguir será rebaixado (%(count)s):"
+msgstr[1] "Os pacotes a seguir serão desclassificados (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "O seguinte pacote será reinstalado (%(count)s):"
+msgstr[1] "Os seguintes pacotes serão reinstalados (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "O pacote a seguir será mantido (%(count)s):"
+msgstr[1] "Os pacotes a seguir serão mantidos (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Necessita baixar %sB de arquivos."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Depois dessa operação, %sB de espaço adicional do disco será usado."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Depois dessa operação, %sB de espaço de disco serão liberados."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Você quer continuar [S/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Para operar sobre mais do que um pacote, ponha os nomes dos pacote entre "
+"aspas:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Atualizar o cache"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Tenta resolver as dependências quebradas. Operação potencialmente perigosa, "
+"uma vez que poderia tentar remover muitos pacotes."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Tente terminar uma instalação incompleta anterior"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalar os pacotes dados"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalar os pacotes dados"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Removes os pacotes dados"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Remover os pacotes dados incluindo arquivos de configuração"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Desatualizar os pacotes a seguir"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Obsoleto: Por favor use --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Atualizar o sistema num modo seguro"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Atualizar o sistema, possivelmente instalando e removendo pacotes"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Adicionar o servidor aos confiáveis"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Adicionar a keyid do servidor (também precisa de --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Usar a keyserver dada para procurar as chaves."
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Adicionar novo repositório para a dada deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Especificar um sources.list.d alternativo onde os repositórios devem ser "
+"adicionados"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Listar as chaves dos servidores confiáveis"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Remover a chave confiável da referida impressão digital"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurar pacotes instalados. Opcionalmente, a prioridade mínima das "
+"perguntas podem ser especificadas"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "A prioridade mínima da questão do debconf a ser exibida"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Não anexar ao terminal apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permitir pacotes de fontes não autenticadas"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Mostrar informações adicionais sobre os pacotes. Atualmente, apenas o número "
+"da versão"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Aguardando pela autenticação"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Não desligar o daemon por causa de inatividade"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Não carregar quaisquer plug-ins"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Mostrar informações de processamento interno"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Sair e substituir um daemon já em execução"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Escutar no barramento de sessão DBus (Requerido apenas para testes"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realizar operações no chroot dado"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Armazenar estatísticas do perfil no arquivo especificado"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Não realizar nenhuma alteração no sistema (útil para desenvolvedores)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Arquivo instalado"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Pacotes instalados"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Chave adicionada de um arquivo"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Cache atualizado"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Pesquisa concluída"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Chave confiável removida"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Pacotes removidos"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Pacotes atualizados"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistema atualizado"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Alterações aplicadas"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Instação incompleta foi reparada"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Dependências quebradas foram reparadas."
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Fonde de software adicionado"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Componente da distribuição habilitado"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Pacotes baixados removidos"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Reconfigurando pacotes instalados"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Sucesso"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Cancelado"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Falhou"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Instalando arquivo"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Instalando pacotes"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Adicionando chave de um arquivo"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Atualizando cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Removendo chave confiável"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Removendo pacotes"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Atualizando pacotes"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Atualizando sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplicando mudanças"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparando instalação incompleta"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparando o programa instalado"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Adicionando fonte de software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Habilitando componente da distribuição"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Removendo pacotes baixados"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Reconfigurando pacotes instalados"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Pesquisando"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "A instalação do pacote falhou"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "A instalação do software falhou"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Erro ao adicionar a chave à lista de fornecedores de programas confiáveis."
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Falha ao atualizar a lista de softwares"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Falha ao remover o distribuidor da lista de distribuidores confiáveis"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Falha ao remover o software"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "A atualização do software falhou"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "A atualização do sistema falhou"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Falha ao aplicar as alterações do software"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Reparando instalação incompleta que falhou"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Reparando dependência quebrada que quebrou"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Adição de fonte de software falhou"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Habilitação do compoenente da distribuição falhou"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Removendo pacotes baixados com falhas"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "A pesquisa falhou"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Adicionar chave de licença"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Verificar sua conexão com a Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Verifique se você está utilizando repositórios de terceiros. Se estiver, "
+"desabilite-os, já que normalmente são fonte de problemas.\n"
+"Além disso, execute o seguinte comando em um Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"O arquivo selecionado pode não ser um arquivo de chave GPG ou pode estar "
+"corrompido."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"A chave selecionada não pôde ser removida. Confira se você deu uma "
+"identificação válida"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Confira se você está atualmente executando outro software para gerenciamento "
+"de pacotes, como o Synaptic ou o aptitude. Apenas um programa pode fazer "
+"mudanças por vez."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Este é um problema grave. Tente novamente mais tarde. Se o problema "
+"persistir, por favor relate um erro para os desenvolvedores."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Confira a escrita do nome do pacote, e se o repositório apropriado está "
+"ativado."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Não há qualquer necessidade de uma atualização."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Não há qualquer necessidade de uma instalação"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Não há qualquer necessidade de uma remoção."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Você solicitou remover um pacote que é uma parte essencial do seu sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"A conexão com o daemon foi perdida. Provavelmente o daemon de segundo plano "
+"fechou de maneira inesperada."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "A instalação ou remoção de pacote de software falhou."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "O recurso solicitado não é mais suportado"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Parece haver um erro de programação no aptdaemon, o software que permite que "
+"você instale/remova softwares e realize outras tarefas relacionadas ao "
+"gerenciamento de pacotes."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Este erro pode ser causado pacotes adicionais de softwares necessários que "
+"estão perdidos ou não são instaláveis. Além disso pode haver um conflito "
+"entre pacotes de software que não podem ser instalados ao mesmo tempo."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Isso exige a instalação de pacotes de fontes não autenticadas."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"A instalação pode ter falhado por causa de um erro no pacote do software "
+"correspondente ou foi cancelado de forma indesejada. Você deve reparar isso "
+"antes de você poder instalar ou remover qualquer software adicional."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Por favor, copie o arquivo para seu computador local e verificar as "
+"permissões do arquivo"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"A instalação de um pacote que viola as normas de qualidade não é permitido. "
+"Isso pode causar sérios problemas no seu computador. Entre em contato com a "
+"pessoa ou organização que forneceu este arquivo e inclua os detalhes abaixo."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"A chave de licença baixada, necessária para executar este programa, não é "
+"válida ou pode não ter sido instalada corretamente.\n"
+"Veja os detalhes para mais informações."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Todas as atualizações disponíveis já foram instaladas."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"A chave de licença necessária para usar este programa não pôde ser baixada. "
+"Por favor, cheque sua conexão com a rede."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Você não obteve os privilégios necessários para realizar essa ação."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Você forneceu uma senha errada ou cancelou a autorização.\n"
+"Além do mais, pode haver uma razão técnina para esse error se você não viu "
+"um diálogo de senha: seu ambiente de trabalho não fornece um agente se "
+"sessão PolicyKit,"
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Falha ao baixar arquivos dos pacotes"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Falha ao baixar informações do repositório"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Dependências de pacotes não pode ser resolvida"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "O sistema de pacotes está quebrado"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Chave não foi instalada"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Chave não foi removida"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Falha ao travar gerenciador de pacotes"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Falha ao carregar a lista de pacotes"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pacote não existe"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pacote já está atualizado"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pacote já está instalado"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pacote não está instalado"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Falha na remoção de pacote essencial ao sistema"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tarefa não pode ser monitorada ou controlada"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Falha na operação do pacote"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Necessita instalação de pacotes não confiáveis"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Instalações anteriores não foram completadas"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "O pacote é de má qualidade"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "O pacote não pôde ser aberto"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Recurso não suportado"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Falha ao baixar a chave de licença"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Falha ao instalar a chave de licença"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "O sistema já está atualizado"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Você não obteve autorização"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Você não tem autorização para efetuar essa ação"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Um erro que não pode ser tratado ocorreu"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Aguardando o serviço para iniciar"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Aguardando"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Aguardando a mídia requerida"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Aguardando por outros gerenciadores de software para sair"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Aguardando o arquivo de configuração"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Executando tarefa"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Baixando"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Consultando os canais de software"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Limpando"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Concluído"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Cancelando"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Carregando lista de softwares"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Instalando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Configurando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Removendo %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Removendo completamente %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Observando o desaparecimento de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Executando gatilho pós-instalação %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Atualizando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Desempacotando %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Preparando a instalação de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Preparando a configuração de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Preparando a remoção de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Preparando a remoção completa de %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s instalado"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s completamente removido"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s removido"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Concluído"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Falha de autenticação"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Obtendo"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Ocioso"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Rede não está disponível"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Processando %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Baixados %sB de %sB em %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Baixados %sB de %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalhes"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Arquivo"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Baixado %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Baixado"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' é necessário"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Por favor insira o CD/DVD abaixo no drive '%s' para instalar pacotes dele."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuar"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalar"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalar"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Remover"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Eliminar"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Atualizar"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Desatualizar"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Pular atualização"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Por favor verifique a lista de mudanças abaixo."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Software adicional deve ser instalado"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Software adicional deve ser reinstalado"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Software adicional deve ser removido"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Software adicional será removido completamente"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Software adicional será atualizado"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Software adicional será rebaixado"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Atualizações serão evitadas"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Alterações adicionais são necessárias"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB serão baixados no total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB de espaço em disco será liberado."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB em espaço de disco serão liberados."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Deseja substituir as suas modificações em '%s' pela versão mais nova do "
+"arquivo de configuração?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Se você não sabe por que o arquivo já está no local, geralmente é seguro "
+"substituí-lo."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Alterações"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Manter"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Substitui_r"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalhes"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Esperando %s para sair"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Baixando %(files)s"
+msgstr[1] "Baixando %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "repositório local"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Baixando de %s"
+msgstr[1] "Baixando de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Estrutura de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descrição de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Descrição da assinatura de %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pacotes disponíveis em %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Fontes disponíveis de %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduções disponíves de %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduções para %s (%s) de %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduções para %s de %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traduções (%s) de %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "O pacote %s não está disponível"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pacote %s não está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "A versão %s de %s não está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "O pacote %s já está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "A versão %s do %s não está disponível."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "A URL do servidor de chaves é inválida: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protocolo do servidor é inválido: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "ID da chave é inválido: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Falha ao baixar e instalar a chave %s de %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Chave do arquivo %s não pôde ser instalado: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Chaves com impressões digitais %s não puderam ser removidas: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "O pacote %s não pode ser removido"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "A versão %s de %s não está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "A versão do mantenedor %s de %s já está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "A versão %s de %s já está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "A versão %s do %s não está disponível."
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Você precisa especificar uma versão de %s para rebaixar"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "A versão mais atual %s de %s já está instalada"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "O pacote %s não está disponível no lançamento %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "O pacote %s não pode ser removido"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"O pacote não prevê um campo de controle válido para o Tamanho instalado. "
+"Consulte a Política Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "A chave de licença está vazia"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "A chave de licença não é permitida por conter código executável."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "O caminho %s da chave de licença é inválido"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "A chave de licença já existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"O local da chave de licença é insegura se contiver links simbólicos. O "
+"caminho %s redireciona para %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "O diretório onde a chave será instalada ainda não existe: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Falhou ao escrever o arquivo da chave para: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Os seguintes pacotes têm dependências não satisfeitas:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "mas é um pacote virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "mas não está instalado"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "mas não vai ser instalado"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "mas a %s está instalada"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "mas a %s será instalada"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Falha ao adicionar a chave à lista de distribuidores confiáveis"
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..a7a2d41
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,1505 @@
+# Romanian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-05-31 06:08+0000\n"
+"Last-Translator: Ursache Dogariu Daniel <Unknown>\n"
+"Language-Team: Romanian Gnome Team <gnomero-list@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
+"== 0) && (n != 0))) ? 2: 1));\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Listează cheile vânzătorilor de încredere"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Pentru a vedea lista cheilor de încredere, trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Elimină fișierele pachet descărcate"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Pentru a curăța fișierele pachet descărcate trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Schimbă configurația software"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Pentru a schimba setările software trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Schimbă depozitul de software"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Pentru a schimba configurările depozitelor de software, trebuie să vă "
+"autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalează pachetul"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Pentru a instala acest pachet, trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Actualizează informațiile despre pachete"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Pentru a actualiza catalogul de software, trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalează sau elimină pachete"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Pentru a instala sau elimina software, trebuie să vă autentificați."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Adaugă un nou depozit și instalează pachete din el"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Pentru a instala software dintr-o sursă nouă, trebuie să vă autentificați."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Adaugă un nou depozit de software cumpărat și instalează pachete din el"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Pentru a instala software cumpărat, trebuie să vă autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Înnoiește pachetele"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Pentru a instala software actualizat, trebuie să vă autentifcați."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Anulează acțiunile altui utilizator"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Pentru a anula schimbările altora asupra unor software, trebuie să vă "
+"autentificați."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Configurează un proxy pentru descărcări de software"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Pentru a folosi un server proxy pentru descărcarea de software, trebuie să "
+"vă autentificați."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "EROARE"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "S-au descărcat %sB din %sB la %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "S-au descărcat %sB din %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "EROARE:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Nu vă este permis să efectuați această acțiune."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Se așteaptă"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Se rezolvă dependențele"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Următorul pachet NOU va fi instalat (%(count)s):"
+msgstr[1] "Următoarele pachete NOI vor fi instalate (%(count)s):"
+msgstr[2] "Următoarele pachete NOI vor fi instalate (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Următorul pachet va fi înnoit (%(count)s):"
+msgstr[1] "Următoarele pachete vor fi înnoite (%(count)s):"
+msgstr[2] "Următoarele pachete vor fi înnoite (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Următorul pachet va fi eliminat (%(count)s):"
+msgstr[1] "Următoarele pachete vor fi eliminate (%(count)s):"
+msgstr[2] "Următoarele pachete vor fi eliminate (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Următorul pachet va fi adus la o versiune mai veche (%(count)s):"
+msgstr[1] ""
+"Următoarele pachete vor fi aduse la o versiune mai veche (%(count)s):"
+msgstr[2] ""
+"Următoarele pachete vor fi aduse la o versiune mai veche (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Următorul pachet va fi reinstalat (%(count)s):"
+msgstr[1] "Următoarele pachete vor fi reinstalate (%(count)s):"
+msgstr[2] "Următoarele pachete vor fi reinstalate (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "A fost reținut (%(count)s pachet ):"
+msgstr[1] "Au fost reținute următoarele (%(count)s) pachete:"
+msgstr[2] "Au fost reținute următoarele (%(count)s) de pachete:"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Este necesară obținerea a %sO de arhive."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "După acestă operație vor fi folosiți %sO de spațiu adițional pe disc."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+"După această operație vor fi eliberați %sO adiționali de spațiu pe disc."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Doriți să continuați [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Pentru a opera pe mai mult de un pachet puneți numele pachetelor între "
+"ghilimele:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Reîmprospăteză memoria tampon"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Încercați să rezolvați dependențe defecte. Operația este potențial "
+"periculoasă deoarece ar putea încerca să elimine multe pachete."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Încercați să finalizați instalarea anterioară incompletă"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalează pachetele date"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Reinstalează pachetele date"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Elimină pacehtele date"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Elimină pachetele date inclusiv fișierele de configurare"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Adu pachetele la o versiune mai veche"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Învechit: Folosiți --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Actualizează sistemul într-un mod sigur"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Actualizează sistemul, posibil instalând și eliminând pachete"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Adaugă vânzătorul la cei de încredere"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Adaugă keyid-ul vânzătorului (trebuie folosit şi --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Folosește keyserver-ul dat pentru a găsi cheile"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Adaugă un nou depozit din linia-deb dată"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specificați un fișier sources.list.d alternativ la care să fie adăugate "
+"depozitele."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Listează cheile vânzătorilor de încredere"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Elimină cheia de încredere a amprentei date"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Reconfigurați pachetele instalate. Opțional poate fi specificată prioritatea "
+"minimă pentru întrebări"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Prioritatea minimă debconf pentru întrebările afișate"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Nu atașa la terminalul apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Permite pachete de la surse neautentificate"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Arată informații suplimentare despre pachete. Acum numai numărul versiunii"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Se așteaptă autentificarea"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Nu închide serviciul din cauza inactivității"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Nu încărca niciun modul"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Arată informații despre procesare"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Închide și înlocuiește un serviciu care rulează"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Ascultă pe magistrala sesiunii DBus (Necesar numai pentru teste)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Realizează operații în mediul chroot specificat"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Stochează profilul în fișierul specificat"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Nu efectua schimbări în sistem (doar pentru uzul dezvoltatorilor)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "S-a instalat fișierul"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "S-au instalat pachetele"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "S-a adăugat cheia din fișier"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "S-a actualizat cache-ul"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Căutare încheiată"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "S-a eliminat cheie de autentificare"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "S-au eliminat pachetele"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "S-au actualizat pachetele"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "S-a înnoit sistemul"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "S-au aplicat modificările"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "S-a reparat instalarea incompletă"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "S-au reparat dependențele deteriorate"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Sursă software adăugată"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Activează componenta distribuției"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Pachete de fișiere descărcate și șterse"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Pacehete instalate reconfigurate"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Succes"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Anulat"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Eșuat"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Se instalează fișierul"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Se instalează pachetele"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Se adaugă cheia din fișier"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Se actualizează cache-ul"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Se elimină cheia de autentificare"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Se elimină pachetele"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Se actualizează pachetele"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Se înnoiește sistemul"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Se aplică modificările"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Se repară instalarea incompletă"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Se repară programele instalate"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Se adaugă sursa software"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Se activează componenta distribuției"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Se șterg pachetele de fișiere descărcate"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Se reconfigurează pachetele instalate"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Se caută"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalarea pachetului a eșuat"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalarea programului a eșuat"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Actualizarea listei de programe a eșuat"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Ștergerea distribuitorului din lista cu distribuitori siguri a eșuat"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Eliminarea programului a eșuat"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Actualizarea programului a eșuat"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Înnoirea sistemului a eșuat"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Aplicarea modificărilor asupra programelor a eșuat"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Repararea instalării incomplete a eșuat"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Repararea dependențelor deteriorate a eșuat"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Adăugarea sursei software a eșuat"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Activarea componentei distribuției a eșuat"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Ștergerea pachetelor de fișiere descărcate a eșuat"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Căutare eșuată"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Se adaugă cheia de licență"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Verificați conexiunea la Internet."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Verificați dacă utilizați arhive de la terțe părți. Dacă utilizați acest tip "
+"de arhive, dezactivați-le, fiind o sursă comună de probleme.\n"
+"Apoi rulați următoarea comandă în Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Fișierul selectat nu pare a fi o cheie GPG sau ar putea fi corupt."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Cheia selectată nu a putut fi eliminată. Verificați dacă ați furnizat o "
+"amprentă validă."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Verificați daca rulați momentan un alt utilitar de administrare software, "
+"ex. Synaptic sau aptitude. Doar un singur utilitar are permisiunea de a face "
+"modificări la un moment dat."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Aceasta este o problemă gravă. Încercați mai târziu. Dacă problema persistă, "
+"raportați eroarea dezvoltatorilor."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Verificați ortografia numelui pachetului, și dacă depozitul adecvat este "
+"activat."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nu este necesar să actualizați ceva."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nu este necesar să instalați ceva."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nu este necesar să eliminați ceva."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Ați cerut să eliminați un pachet care este o parte esențială a sistemului."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Conexiunea cu serviciul a fost pierdută. Probabil că serviciul din fundal s-"
+"a întrerupt neașteptat."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Instalarea sau eliminarea unui pachet de programe a eșuat."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Funcția solicitată nu există."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Se pare că există o eroare de programare în aptdaemon, software-ul care "
+"permite instalarea/ștergerea de programe și care realizează sarcini legate "
+"de administrarea pachetelor."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Această eroare ar putea fi cauzată de pachete software suplimentare necesare "
+"care lipsesc sau care nu sunt instalabile. În plus, ar putea exista un "
+"conflict între pachete software care nu au voie să fie instalate în același "
+"timp."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Este posibil ca instalarea să fi eșuat din cauza unei erori în pachetul "
+"software corespunzător sau să fi fost anulată într-un mod nesuportat. "
+"Trebuie să remediați această problemă înainte de a putea instala sau "
+"înlătura orice alt software."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Copiați fișierul în calculator și verificați permisiunile acestuia."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Instalarea unui pachet care încalcă standardele de calitate nu este permisă. "
+"Acest lucru poate cauza probleme serioase calculatorului dumneavoastră. "
+"Contactați persoana sau organizația care a furnizat acest pachet și "
+"includeți detaliile de mai jos."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Cheia de licență descărcată, care este necesară pentru rularea acestui "
+"program, nu este validă sau nu poate fi instalată corect.\n"
+"Pentru mai multe informații consultați detaliile."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Toate actualizările disponibile au fost instalate deja."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Cheia de licență care permite utilizarea acestui program nu poate fi "
+"descărcată. Verificați legătura la Internet."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Nu vă este permis să efectuați această acțiune."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Descărcarea pachetelor a eșuat"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Descărcarea informațiilor despre arhive a eșuat"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Dependențele pachetelor nu pot fi satisfăcute"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Sistemul de pachete este corupt"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Cheia de autentificare nu a fost instalată"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Cheia de autentificare nu a fost eliminată"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Blocarea administratorului de pachete a eșuat"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Încărcarea listei de pachete a eșuat"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Pachetul nu există"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Pachetul este actualizat deja"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Pachetul este deja instalat"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Pachetul nu este instalat"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Eliminarea pachetului esențial pentru sistem a eșuat"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Sarcina nu poate fi monitorizată sau controlată"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Acțiunea asupra pachetelor a eșuat"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Necesită instalarea unor pachete din surse neautentificate"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Instalarea anterioară nu a fost finalizată"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Acest pachet este de slabă calitate"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Pachetul nu se poate deschide"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Funcție inexistentă"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Eșec la descărcarea cheii de licență"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Eșec la instalarea cheii de licență"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistemul este actualizat deja"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "O eroare ce nu poate fi tratată a apărut"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Se așteaptă pornirea serviciului"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Se așteaptă"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Se așteaptă mediul de instalare necesar"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Se așteaptă închiderea altui administrator de pachete"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Se așteaptă solicitarea fișierului de configurare"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Se execută sarcina"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Se descarcă"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Se interoghează sursele de programe"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Se curăță"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Terminat"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Se renunță"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Se încarcă lista de programe"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Se instalează %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Se configurează %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Se șterge %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Se șterge complet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Se ia notă de dispariția lui %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Se rulează declanșatorul post-instalare %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Se înnoiește %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Se despachetează %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Se pregătește instalarea pentru %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Se pregătește configurarea pentru %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Se pregătește ștergerea pentru %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Se pregătește ștergerea completă pentru %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Instalat %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Șters complet %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Șters %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Gata"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentificarea a eșuat"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Se descarcă"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Inactiv"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Rețeaua nu este disponibilă"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Se procesează %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "S-au descărcat %sB din %sB la %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "S-au descărcat %sB din %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detalii"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fișier"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "S-au descărcat %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Descărcat"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Este necesar CD/DVD-ul „%s”"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Introduceți CD-ul/DVD-ul de mai sus în unitatea „%s” pentru a instala "
+"pachete software de pe el."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "C_ontinuă"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalează"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Reinstalează"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Elimină"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Elimină inclusiv fișierele de configurare"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Înnoiește"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Adu la o versiune anterioară"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Sari peste această înnoire"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Consultați lista modificărilor de mai jos."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Software suplimentar trebuie să fie instalat"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Software suplimentar trebuie să fie reinstalat"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Software suplimentar trebuie să fie eliminat"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Software suplimentar trebuie să fie eliminat complet"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Software suplimentar trebuie să fie înnoit"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Software suplimentar trebuie să fie adus la o versiune mai veche"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Actualizările vor fi ignorate"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Modificări suplimentare sunt necesare"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sO vor fi descărcați în total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Se vor elibera %sB spațiu de disc."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sO adiționali vor fi utilizați."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Înlocuiți schimbările din „%s” cu o versiune mai veche a fișierului de "
+"configurare?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Dacă nu știți de ce fișierul există deja în această configurare, este, de "
+"regulă, mai sigur să-l înlocuiți."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Modificări"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Păstrează"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "În_locuiește"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detalii"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Se așteaptă închiderea %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Se descarcă %(files)s fișier"
+msgstr[1] "Se descarcă %(files)s fișiere"
+msgstr[2] "Se descarcă %(files)s de fișiere"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "arhiva locală de programe"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Se descarcă de la %s"
+msgstr[1] "Se descarcă de la %s"
+msgstr[2] "Se descarcă de la %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Structură pentru %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Descriere pentru %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Descrierea semnăturii pentru %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Pachete disponibile de la %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Surse disponibile de la %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Traduceri disponibile de la %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Traduceri pentru %s (%s) de la %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Traduceri pentru %s de la %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Traducere (%s) de la %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Pachetul %s nu este disponibil"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Pachetul %s nu este instalat"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Această versiune %s a %s nu este instalată"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Pachetul %s este instalat deja"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versiunea %s a %s nu este disponibilă."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Eșec la descărcarea și instalarea cheii %s de la %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Fișierul cheie %s nu se poate instala: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Nu se poate șterge cheia cu amprenta %s: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Nu se poate șterge pachetul %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versiunea %s a %s nu este instalată"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Versiunea anterioară %s a %s este instalată deja"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versiunea %s a %s este instalată deja"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versiunea %s a %s nu este disponibilă"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+"Trebuie să specificați versiunea la care doriți să reveniți cu pachetul %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Ultima versiune %s a %s este instalată deja"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Pachetul %s nu este disponibil pentru versiunea %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Nu se poate șterge pachetul %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Acest pachet nu conține un câmp de control valid pentru dimensiunea "
+"instalată. Consultați Politicile Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Cheia de licență este goală"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Cheia de licență nu trebuie să conțină cod executabil."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Calea pentru cheia de licență %s nu este validă"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Cheia de licență există deja: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Locul în care se păstrează cheia de licență nu este sigur, deoarece conține "
+"legături simbolice. Calea %s duce către %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Dosarul în care instalați cheia nu există încă: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Eșec la scrierea fișierului cheie: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Următoarele pachete au dependenţe neîndeplinite:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "dar este un pachet virtual"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "dar nu este instalat"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "dar nu este pe cale de a fi instalat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "dar este instalată versiunea %s"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "dar versiunea %s este pe cale de a fi instalată"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Adăugarea cheii la lista distribuitorilor de de programe de încredere a "
+#~ "eșuat"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..6bf5f75
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,1510 @@
+# Russian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-12-30 08:29+0000\n"
+"Last-Translator: Aleksey Kabanov <Unknown>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Список ключей доверенных поставщиков"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Для просмотра списка доверенных ключей требуется аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Удалить файлы загруженных пакетов"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Вам необходимо авторизоваться для очистки файлов загруженных пакетов."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Изменить настройки программного обеспечения"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Вам необходимо авторизоваться для изменения настроек программного "
+"обеспечения."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Изменить репозиторий с программами"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Для изменения настроек репозитория с программами требуется аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Установка файла пакета"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Для установки этого пакета требуется аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Обновление информации о пакетах"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Для обновления каталога программного обеспечения требуется аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Установить или удалить пакеты"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Для установки или удаления программ требуется аутентификация."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Установка приложений с проверенного репозитория."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Для установки программ требуется аутентификация."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Добавить новый репозиторий и установить пакеты с него"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Для установки приложений из нового источника вам необходимо пройти "
+"аутентификацию."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Добавить новый репозиторий платных приложений и установить пакеты с него"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Для установки купленных приложений необходима аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Обновление пакетов"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Для установки обновлений требуется аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Отменить задачу другого пользователя"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Для отмены не своих изменений в программном обеспечении требуется "
+"аутентификация."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Установить прокси-сервер для загрузок приложений"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Для использования прокси сервера для загрузки программного обеспечения "
+"требуется аутентификация."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ОШИБКА"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Загружено %sБ из %sБ на скорости %sБ/с"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Загружено %sБ из %sБ"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ОШИБКА:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Вам не разрешено выполнять эту операцию."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Организация очереди"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Разрешение зависимостей"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Следующий НОВЫЙ пакет будет установлен (%(count)s):"
+msgstr[1] "Следующие НОВЫЕ пакеты будут установлены (%(count)s):"
+msgstr[2] "Следующие НОВЫЕ пакеты будут установлены (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Следующий пакет будет обновлен (%(count)s):"
+msgstr[1] "Следующие пакеты будут обновлены (%(count)s):"
+msgstr[2] "Следующие пакеты будут обновлены (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Следующий пакет будет УДАЛЁН (%(count)s):"
+msgstr[1] "Следующие пакеты будут УДАЛЕНЫ (%(count)s):"
+msgstr[2] "Следующие пакеты будут УДАЛЕНЫ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Для следующего пакета будет произведен ОТКАТ (%(count)s):"
+msgstr[1] "Для следующих пакетов будет произведен ОТКАТ (%(count)s):"
+msgstr[2] "Для следующих пакетов будет произведен ОТКАТ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Следующий пакет будет переустановлен (%(count)s):"
+msgstr[1] "Следующие пакеты будут переустановлены (%(count)s):"
+msgstr[2] "Следующие пакеты будут переустановлены (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Следующий пакет был восстановлен (%(count)s):"
+msgstr[1] "Следующие пакеты были восстановлены (%(count)s):"
+msgstr[2] "Следующие пакеты были восстановлены (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Требуется получить %sБ архивов."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+"После этой операции будет использовано %sБ дополнительного дискового "
+"пространства."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "После этой операции будет освобождено %sБ дискового пространства."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Вы хотите продолжить [Y - Да, N - Нет]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Для произведения операций над несколькими пакетами заключите их имена в "
+"кавычки:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Обновить кэш"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Попытаться восстановить сломанные завсисмости. Эта операция потенциально "
+"опасна, поскольку может привести к удалению многих пакетов."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Попытайтесь закончить предыдущую незавершённую установку"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Установить данные пакеты"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Повторно установить данные пакеты"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Удалить данные пакеты"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Удалить данные пакеты, включая конфигурационные файлы"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Откат выбранных пакетов"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Запрещено: пожалуйста используйте --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Обновить систему безопасным способом"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Обновить систему устанавливая и удаляя пакеты (если возможно)"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Добавить поставщика в доверенные"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Добавить идентификатор ключа поставщика (нужна опция --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Использовать данный сервер для поиска ключей"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Добавить репозиторий из указанной deb-строки"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Указать альтернативный файл sources.list.d, в который следует добавлять "
+"репозитории."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Список доверенных ключей поставщика"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Удалить доверенный ключ для данной цифровой подписи"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Повторная настройка установленных пакетов. Дополнительно может быть указан "
+"минимальный приоритет вопросов"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Минимальный приоритет запроса debconf для отображения"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Не \"присоединяться\" к терминалу apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Разрешать пакеты из недоверенных источников"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Показать дополнительную информацию о пакете. В настоящее время только номер "
+"версии"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Ожидание аутентификации"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Не выключайте демона из-за его неактивности"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Не загружать никакие плагины"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Показывать информацию о внутренней обработке"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Выйти и заменить уже запущенный демон"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Ждать сигнала DBus для общей шины (Только для тестирования"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Проводить операции в данном корневом каталоге"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Хранить статистику профиля в указанном файле"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Не изменять файлы в системе (полезно только разработчикам)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Установленный файл"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Установленные пакеты"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Добавленный ключ из файла"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Обновлённые временные файлы"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Поиск завершён"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Удалённый доверительный ключ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Удалённые пакеты"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Обновлённые пакеты"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Обновлённая система"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Примененные изменения"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Исправленная неоконченная установка"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Исправленные нарушенные зависимости"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Добавленный источник приложений"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Подключенный компонент дистрибутива"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Удалённые файлы загруженных пакетов"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Перенастроенные пакеты"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Успешно"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Отменено"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Ошибка"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Установка файла"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Установка пакетов"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Добавление ключа из файла"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Обновление временных файлов"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Удаление доверенного ключа"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Удаление пакетов"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Обновление пакетов"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Обновление системы"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Применение изменений"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Исправление неоконченной установки"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Восстановление установленного ПО"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Добавление источника приложений"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Подключение компонента дистрибутива"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Удаление файлов загруженных пакетов"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Перенастройка установленных пакетов"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Выполняется поиск"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Не удалось установить файл пакета"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Не удалось установить программное обеспечение"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Не удалось добавить ключ в список доверенных поставщиков программного "
+"обеспечения"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Не удалось обновить список программ"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Не удалось исключить поставщика программ из списка доверенных"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Не удалось удалить программное обеспечение"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Не удалось обновить программное обеспечение"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Не удалось обновить систему"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Не удалось применить изменения в программном обеспечении"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Исправление неоконченной установки не удалось"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Исправление нарушенных зависимостей не удалось"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Не удалось добавить источник приложений"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Не удалось подключить компонент дистрибутива"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "При удалении загруженных файлов произошла ошибка"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Ошибка поиска"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Добавление лицензионного ключа"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Проверьте интернет-соединение."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Если вы используете сторонние источники приложений, отключите их, поскольку "
+"они являются частым\n"
+"источником проблем. После этого выполните в терминале следующую команду: apt-"
+"get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Возможно, выбранный файл не является файлом GPG ключа или поврежден."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Выбранный ключ невозможно удалить. Проверьте, что вы предоставили верную "
+"цифровую подпись."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Проверьте, не запущено ли другое приложение управления программами, например "
+"Synaptic или aptitude. Только одно приложение может вносить изменения в одно "
+"и тоже время."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Это серьёзная проблема. Попробуйте повторить позже. Если проблема возникнет "
+"вновь, пожалуйста, отправьте отчёт об ошибке разработчикам."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Проверьте правильно ли указано название пакета и включён ли соответствующий "
+"репозиторий."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "В обновлении нет необходимости."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "В установке нет необходимости"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "В удалении нет необходимости."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Вы запросили удаление пакета, который является неотъемлемой частью вашей "
+"системы."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Связь с демоном утеряна. Скорее всего, его работа внезапно завершилась."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Установка или удаление пакетов программ не удалось."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Возможность не поддерживается."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Судя по всему, в aptdaemon, программном обеспечении, позволяющем вам "
+"устанавливать/удалять программы и выполнять связанные с пакетами задачи, "
+"присутствует программная ошибка."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Эта ошибка могла возникнуть по причине дополнительных пакетов, которые "
+"невозможно установить или отсутствуют. К тому же может иметь место конфликт "
+"между пакетами, которые не должны быть установлены одновременно."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Необходимо установить пакеты из неавторизированных источников."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Установка могла пройти неудачно из-за ошибки в соответствующем пакете, либо "
+"она была прервана неправильным способом. Вам следует исправить это, прежде "
+"чем вы сможете устанавливать или удалять любые другие программы."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Пожалуйста, скопируйте файл на ваш локальный компьютер и проверьте права на "
+"файл."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Установка пакета, который не соответствует стандартам, не разрешена. Это "
+"может привести к серьёзным ошибкам на вашем компьютере. Пожалуйста, "
+"свяжитесь с теми, кто предоставили данный пакет, указав подробности, "
+"изложенные ниже."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Полученный лицензионный ключ, необходимый для выполнения этого компонента "
+"программы неправильный или не может быть установлен надлежащим образом.\n"
+"Для получения дополнительных сведений откройте подробности."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Все доступные обновления уже установлены."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Лицензионный ключ, который позволит вам использовать этот компонент "
+"программы, не может быть получен. Пожалуйста, убедитесь в работоспособности "
+"сетевого соединения."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Недостаточно прав для выполнения этого действия."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Предоставлен неправильный пароль или авторизация была отменена.\n"
+"Также ошибка могла произойти по техническим причинам, если не появлялось "
+"окно ввода пароля: используемое вами окружение рабочего стола не "
+"предоставило агента сеанса PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Не удалось закачать файлы пакета"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Ошибка при загрузке информации об источниках приложений"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Зависимости пакета не могут быть разрешены"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Система пакетов повреждена"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ключ не установлен"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ключ не удалён"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Невозможно заблокировать менеджер пакетов"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Не удалось загрузить список пакетов"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакет не существует"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Пакет в актуальном состоянии"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакет уже установлен"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакет не установлен"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Ошибка при удалении важного системного пакета"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Задание не может быть проконтролировано"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Ошибка операции над пакетом"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Требуется установка ненадёжных пакетов"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Предыдущая установка не была завершена"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Этот пакет плохого качества"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Не удалось открыть пакет"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Эта возможность не поддерживается"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Ошибка получения лицензионного ключа"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Ошибка установки лицензионного ключа"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Система в актуальном состоянии"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Авторизация пользователя не может быть выполнена"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Недостаточно прав для выполнения этого действия"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Произошла непреодолимая ошибка"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Ожидание запуска службы"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Ожидание"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Ожидание требуемого носителя информации"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Ожидание окончания работы других менеджеров программного обеспечения"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Ожидание запроса конфигурационного файла"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Запуск задачи"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Идёт загрузка"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Запрос источников программ"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Очистка"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Завершено"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Отмена"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Загрузка списка приложений"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Устанавливается %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Настройка %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Удаление %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Выполняется полное удаление %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Уведомление об исчезновении «%s»"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Выполняется послеустановочный триггер %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Обновление %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Извлечение %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Подготовка к установке %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Подготовка конфигурации %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Подготовка к удалению %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Подготовка к полному удалению %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s установлен"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s полностью удалён"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s удалён"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Выполнено"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Аутентификация не удалась"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Получение"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Ожидание"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Сеть недоступна"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Обработка %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Загружено %sБ из %sБ на скорости %sБ/с"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Загружено %sБ из %sБ"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Подробно"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Файл"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Загружено %sБ"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Загружено"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Требуется наличие CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Вставьте указанный выше CD/DVD в привод '%s' для установки пакетов с него."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "П_родолжить"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Установить"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Переустановить"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Удалить"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Очистить"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Обновить"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Понизить версию"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Пропустить обновление"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Пожалуйста, посмотрите на список изменений ниже."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Необходима установка дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Необходима повторная установка дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Необходимо удаление дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Необходима очистка от дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Необходимо обновление дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Необходимо понижение версии дополнительных программ"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Обновления будут пропущены"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Требуются дополнительные изменения"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Всего будет загружено %sБ."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sБ места на жёстком диске будет освобождено."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sБ дискового пространства будет занято."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Заменить файл '%s' с внесенными вами изменениями более поздней версией?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Если вы не знаете, зачем был создан этот файл, то его скорее всего можно "
+"безопасно заменить."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Изменения"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Оставить как есть"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Заменить"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Подробнее"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Ожидание завершения работы %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Загрузка %(files)s"
+msgstr[1] "Загрузка %(files)s"
+msgstr[2] "Загрузка %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "локальный репозиторий"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Загрузка из %s"
+msgstr[1] "Загрузка из %s"
+msgstr[2] "Загрузка из %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Структура «%s»"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Описание %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Подпись описания %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Доступные пакеты из «%s»"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Доступные источники из «%s»"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Доступные переводы из «%s»"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Переводы на %s (%s) из %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Переводы на %s из %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Языковая поддержка (%s) с адреса %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Пакет %s не доступен"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Пакет %s не установлен"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Версия %s пакета %s не установлена"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Пакет %s уже установлен"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Версия %s пакета %s недоступна."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Неправильный адрес сервера ключей: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Неправильный протокол сервера: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Неправильный идентификатор ключа: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Не удалось загрузить и установить значение %s из %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Ключевой файл %s не может быть установлен: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ключ с цифровой подписью %s не может быть удалён: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Пакет %s не может быть удалён."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Версия %s пакета %s не установлена"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Предыдущая версия %s пакета %s уже установлена"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Версия %s пакета %s уже установлена"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Версия %s пакета %s недоступна"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Вам необходимо указать версию, чтобы произвести откат %s к"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Более новая версия %s пакета %s уже установлена"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Пакет %s недоступен в релизе %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Пакет %s не может быть удалён"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"В пакете не указано поле \"занятое место после установки\". См. правила "
+"Debian 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Лицензионный ключ не содержит данных"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Лицензионный ключ не должен содержать исполняемый код."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Недопустимое расположение лицензионного ключа %s"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Лицензионный ключ уже существует: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Местоположение лицензионного ключа не является безопасным, так как содержит "
+"символические ссылки. Адрес %s ссылается на %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+"Папка в которую будет выполняться установка ключа, ещё не существует: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Ошибка записи файла ключа в: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Следующие пакеты имеют неудовлетворённые зависимости:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "но это виртуальный пакет"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "но он не установлен"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "но он не будет установлен"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "но %s уже установлен"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "но %s должен быть установлен"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Не удалось добавить ключ в список доверенных поставщиков программ"
diff --git a/po/se.po b/po/se.po
new file mode 100644
index 0000000..c3a740c
--- /dev/null
+++ b/po/se.po
@@ -0,0 +1,1419 @@
+# Northern Sami translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-08-01 20:24+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Northern Sami <se@li.org>\n"
+"Language: se\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "MEATTÁHUS"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "MEATTÁHUS:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Hálidat go don joatkit [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Lihkostuvai"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Gaskkalduvvon"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Filtii"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Ohcamin"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Vuordimin"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Viežžamat"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Geargan"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Sajáiduhttimin %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Geargan"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentiseren filtii"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Ealjoheapmi"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Bienat"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fiila"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Sajáiduhte"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Ođđasit sajáiduhttit"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Váldde eret"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Sihko"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Ođasmahte"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Vulos"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/shn.po b/po/shn.po
new file mode 100644
index 0000000..e1b11eb
--- /dev/null
+++ b/po/shn.po
@@ -0,0 +1,1419 @@
+# Shan translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-01-18 13:02+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Shan <shn@li.org>\n"
+"Language: shn\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) ? 0 : 1;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/si.po b/po/si.po
new file mode 100644
index 0000000..10ae81f
--- /dev/null
+++ b/po/si.po
@@ -0,0 +1,1420 @@
+# Sinhalese translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-05-06 05:02+0000\n"
+"Last-Translator: පසිඳු කාවින්ද <pkavinda@gmail.com>\n"
+"Language-Team: Sinhalese <si@li.org>\n"
+"Language: \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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "විශ්වාසවන්ත විකිණුම්කරුවන්ගේ යතුරු ලැයිස්තුගත කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "විශ්වසනීය යතුරු ලැයිස්තුව නැරඹීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "බාගත කරන ලද පැකේජ ගොනු ඉවත් කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "බාගත කෙරූ පැකේජ ගොනු පවිත්‍ර කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "මෘදුකාංග හැඩහුරුව වෙනස් කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "මෘදුකාංග සැකසුම් වෙනස් කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "මෘදුකාංග ගබඩාව වෙනස් කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "මෘදුකාංග කෝෂ්ඨාගාර සැකසුම් වෙනස් කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "පැකේජ ගොනුවක් ස්ථාපනය කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "මෙම පැකේජය ස්ථාපනය කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "පැකේජයේ තොරතුරු යාවත්කාලීන කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "මෙම මෘදුකාංග නාමාවලිය යාවත්කාලීන කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "පැකේජ ස්ථාපනය හෝ අස්ථාපනය කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "මෘදුකාංග ස්ථාපනය හෝ ඉවත් කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "අලුත් ගබඩාවක් එකතු කර එමගින් පැකේජ ස්ථාපනය කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "නව මූලාශ්‍රයකින් මෘදුකාංග ස්ථාපනය කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "මිලදී ගත් මෘදුකාංගවල අලුත් ගබඩාවක් එකතු කර එමගින් පැකේජ ස්ථාපනය කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "මිලදීගත් මෘදුකාංග ස්ථාපනය කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "පැකේජයන් උසස් කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "යාවත්කාලීන කෙරූ මෘදුකාංග ස්ථාපනය කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "අනෙත් පරිශීලකගේ කාර්යන් අවලංගු කරන්න"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "වෙනත් අය විසින් සිදු කෙරූ මෘදුකාංග වෙනස්කම් අහෝසි කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "මෘදුකාංග අවපතන සඳහා පෙරකලාසිය සකසන්න"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "මෘදුකාංග බාගතකිරීමට පෙරකලාසි සර්වරයක් භාවිතා කිරීම සඳහා, ඔබට සත්‍යවත් කිරීමට සිදුවේ."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "දෝෂය"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "දෝෂය:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "මෙම ක්‍රියාව සිදු කිරීමට ඔබට ඉඩ ලබා නොදේ."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "ඔබට ඉදිරියට යාමට අවශ්‍යද [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "දී ඇති පැකේජයන් ස්ථාපනය කරන්න"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "දී ඇති පැකේජයන් යලි ස්ථාපනය කරන්න"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "දී ඇති පැකේජයන් අස්ථාපනය කරන්න"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "ස්ථාපිත ගොනුව"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "ස්ථාපිත පැකේජයන්"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "අස්ථාපනය කෙරූ පැකේජයන්"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "යාවත්කාලීන කෙරූ පැකේජයන්"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "උසස් කෙරූ පද්ධතිය"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "සාර්ථක"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "අහෝසි කල"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "අසාර්ථක විය"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ගොනුව ස්ථාපනය කරමින්"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "පැකේජයන් ස්ථාපනය කරමින්"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "පැකේජ ඉවත් කරමින්"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "පද්ධතිය උසස් කරමින්"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "සොයමින්"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "මෙම ක්‍රියාව සිදු කිරීමට ඔබට ඉඩ ලබා නොදේ."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "නමුත් %s ස්ථාපනය කොට ඇත"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "නමුත් %s ස්ථාපනය කිරීමට ඇත"
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..fedb404
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,1501 @@
+# Slovak translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-03 12:58+0000\n"
+"Last-Translator: helix84 <Unknown>\n"
+"Language-Team: Slovak <sk@li.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Vypísať kľúče dôveryhodných dodávateľov"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Ak chcete prehliadať zoznam dôveryhodných kľúčov je potrebné overiť vašu "
+"totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Odobrať stiahnuté balíky súborov"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Na vyčistenie stiahnutých balíkov súborov je potrebné overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Zmeniť softvérovú konfiguráciu"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Na zmenu softvérových nastavení je potrebné overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Zmeniť zdroj softvéru"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Ak chcete zmeniť nastavenie zdroja softvéru je potrebné overiť vašu "
+"totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Nainštalovať balík zo súboru"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Ak chcete nainštalovať tento balík je potrebné overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Aktualizovať informácie o balíkoch"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+"Ak chcete aktualizovať katalóg softvéru je potrebné overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Nainštalovať alebo odstrániť balíky"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Ak chcete nainštalovať alebo odstrániť softvér je potrebné overiť vašu "
+"totožnosť."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Inštalovať softvér zo zdroja pridaného medzi dôveryhodné."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Aby ste mohli inštalovať softvér, je nutné overenie totožnosti."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Pridať nový zdroj softvéru a nainštalovať z neho balíky"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Ak chcete nainštalovať softvér z nového zdroja je potrebné overiť vašu "
+"totožnosť."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Pridať nový zdroj zakúpeného softvéru a nainštalovať z neho balíky"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Ak chcete nainštalovať zakúpený softvér je potrebné overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Aktualizovať balíky"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Ak chcete nainštalovať aktualizovaný softvér je potrebné overiť vašu "
+"totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Zrušiť úlohu iného používateľa"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Ak chcete zrušiť zmeny softvéru, ktoré vykonal niekto iný, je potrebné "
+"overiť vašu totožnosť."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Nastaviť proxy na sťahovanie softvéru"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Ak chcete použiť server proxy na sťahovanie softvéru, je potrebné overiť "
+"vašu totožnosť."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "CHYBA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Stiahnuté %sB z %sB pri %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Stiahnuté %sB z %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "CHYBA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Nemáte oprávnenie vykonať túto operáciu."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Zaraďuje sa do frontu"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Riešia sa závislosti"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Nasledovné NOVÉ balíky budu nainštalované (%(count)s):"
+msgstr[1] "Nasledovný NOVÝ balík bude nainštalovaný (%(count)s):"
+msgstr[2] "Nasledovné NOVÉ balíky budu nainštalované (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Nasledovné balíky budu aktualizované (%(count)s):"
+msgstr[1] "Nasledovný balík bude aktualizovaný (%(count)s):"
+msgstr[2] "Nasledovné balíky budu aktualizované (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Nasledovné balíky budu ODSTRANENÉ (%(count)s):"
+msgstr[1] "Nasledovný balík bude ODSTRÁNENÝ (%(count)s):"
+msgstr[2] "Nasledovné balíky budu ODSTRANENÉ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "VERZIA nasledovných balíkov bude ZNÍŽENÁ (%(count)s):"
+msgstr[1] "VERZIA nasledovného balíka bude ZNÍŽENÁ (%(count)s):"
+msgstr[2] "VERZIA nasledovných balíkov bude ZNÍŽENÁ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Nasledovné balíky budu preinštalované (%(count)s):"
+msgstr[1] "Nasledovný balík bude preinštalovaný (%(count)s):"
+msgstr[2] "Nasledovné balíky budu preinštalované (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Nasledovné balíky budú podržané (%(count)s):"
+msgstr[1] "Nasledovný balík bude podržaný (%(count)s):"
+msgstr[2] "Nasledovné balíky budú podržané (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Je potrebné stiahnuť %sB archívov."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Po tejto operácii bude využitých ďalších %sB miesta na disku."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Po tejto operácii sa uvoľní %sB miesta na disku."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Chcete pokračovať [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Ak chcete pracovať s viac ako jedným balíkom, uveďte názvy balíkov v "
+"úvodzovkách:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Aktualizovať vyrovnávaciu pamäť"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Pokúsiť sa vyriešiť poškodené závislosti. To je potenciálne nebezpečná "
+"operácia, pretože by sa mohla pokúsiť odstrániť veľké množstvo balíkov."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Pokúsiť sa dokončiť predošlú nedokončenú inštaláciu"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Nainštalovať dané balíky"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Znova nainštalovať dané balíky"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Odstrániť dané balíky"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Odstrániť dané balíky vrátane konfiguračných súborov"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Znížiť verziu uvedených balíkov"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Zavrhované: Prosím, použite --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Aktualizovať systém bezpečným spôsobom"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Aktualizovať systém, s možnou inštaláciou a odstránením balíkov"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Pridať dodávateľa do zoznamu dôveryhodných"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Pridať ID kľúča dodávateľa (tiež vyžaduje --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Použiť na vyhľadanie kľúčov uvedený server s kľúčmi"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Pridať nový zdroj softvéru zo zadaného riadka deb"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Zadajte alternatívny súbor v sources.list.d, do ktorého sa majú pridať "
+"zdroje softvéru."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Zoznam dôveryhodných kľúčov dodávateľov"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Odstrániť kľúč s uvedeným odtlačkom spomedzi dôveryhodných"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Znova nakonfigurovať nainštalované balíky. Je možné zadať minimálnu prioritu "
+"otázok."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Minimálna priorita otázok debconf, ktoré sa budú zobrazovať."
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Nepripájať sa k terminálu apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Povoliť inštaláciu balíkov z neoverených zdrojov"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Ďalšie informácie o balíkoch. Momentálne oba číslo verzie."
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Čaká sa na overenie totožnosti"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Nevypínať démona z dôvodu neaktivity"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Nenačítavať žiadne zásuvné moduly"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Zobraziť interné informácie o priebehu"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Ukončiť a nahradiť už bežiaceho démona"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Počúvať na zbernici DBus relácie (potrebné iba na testovanie)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Vykonať operácie v uvedenom chroote"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Ukladať štatistiky profilu v určenom súbore"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Nevykonávať žiadne zmeny v systéme (užitočné iba pre vývojárov)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Nainštalovaný súbor"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Nainštalované balíky"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Pridaný kľúč zo súboru"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Aktualizovaná vyrovnávacia pamäť"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Hľadanie dokončené"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Odstránený dôveryhodný kľúč"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Odstránené balíky"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Aktualizované balíky"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Aktualizovaný systém"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Zmeny boli aplikované"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Opravená neúplná inštalácia"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Opravené poškodené závislosti"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Pridaný zdroj softvéru"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Zapnutý komponent distribúcie"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Odstránené stiahnuté súbory balíkov"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Znovu nakonfigurované nainštalované balíky"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Úspešné"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Zrušené"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Zlyhalo"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Inštaluje sa súbor"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Inštalujú sa balíky"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Pridáva sa kľúč zo súboru"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Aktualizuje sa vyrovnávacia pamäť"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Odstraňuje sa dôveryhodný kľúč"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Odstraňujú sa balíky"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Aktualizujú sa balíky"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Aktualizuje sa systém"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Aplikujú sa zmeny"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Opravuje sa neúplná inštalácia"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Opravuje sa nainštalovaný softvér"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Pridáva sa zdroj softvéru"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Zapína sa komponent distribúcie"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Odstraňujú sa stiahnuté súbory balíkov"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Znovu sa konfigurujú nainštalované balíky"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Hľadá sa"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Inštalácia balíka zlyhala"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Inštalácia softvéru zlyhala"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Aktualizácia zoznamu softvéru zlyhala"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Odstraňovanie dodávateľa zo zoznamu dôveryhodných zlyhalo"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Odstraňovanie softvéru zlyhalo"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Aktualizácia zoznamu softvéru zlyhala"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Aktualizácia softvéru zlyhala"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Použitie zmien softvéru zlyhalo"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Oprava neúplnej inštalácie zlyhala"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Oprava poškodených závislostí zlyhala"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Pridanie zdroje softvéru zlyhalo"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Zapnutie komponentu distribúcie zlyhalo"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Odstránenie stiahnutých balíkov sa nepodarilo"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Hľadanie zlyhalo"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Pridáva sa licenčný kľúč"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Skontrolujte svoje pripojenie k internetu"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Skontrolujte, či nepoužívate zdroje softvéru tretích strán. Ak áno, zakážte "
+"ich, pretože sú častou príčinou problémov.\n"
+"Ďalej spustite v Termináli nasledujúci príkaz: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Vybraný súbor nie je autentifikačným kľúčom GPG alebo je poškodený."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Vybraný kľúč nebolo možné odstrániť. Skontrolujte, či ste poskytli platný "
+"odtlačok kľúča."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Skontrolujte, či práve nebeží iný nástroj na správu softvéru, napr. Synaptic "
+"alebo aptitude. Iba jeden zdroj naraz môže vykonávať zmeny."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Toto je vážny problém. Prosím, skúste to neskôr znova. Ak sa tento problém "
+"znova objaví, prosím nahláste chybu vývojárom."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Skontrolujte, či ste správne napísali názov balíka a či je príslušný zdroj "
+"softvéru zapnutý."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Aktualizácia nie je potrebná."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Inštalácia nie je potrebná."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Odstraňovanie nie je potrebné."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Požiadali ste o odstránenie balíka, ktorý je nevyhnutnou súčasťou vášho "
+"systému."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Spojenie s démonom bolo stratené. Pravdepodobne démon na pozadí havaroval."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Inštalácia alebo odstránenie softvérového balíka zlyhalo"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Požadovaná funkcia nie je podporovaná"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Zdá sa, že sa vyskytla chyba v aptdaemon, softvéri, ktorý vám umožňuje "
+"inštalovať a odstraňovať softvér a vykonávať iné úlohy súvisiace so správou "
+"softvéru."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Túto chybu mohli spôsobiť ďalšie balíky softvéru, ktoré buď chýbajú alebo "
+"ich nebolo možné nainštalovať. Okrem toho mohol nastať konflikt medzi "
+"balíkmi, ktoré nemožno nainštalovať súčasne."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Vyžaduje sa inštalovanie balíkov z nedôveryhodných zdrojov."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Inštalácia mohla zlyhať z dôvodu chyby príslušného balíka softvéru alebo "
+"bola zrušená nezvyčajným spôsobom. Musíte to opraviť predtým, než budete "
+"môcť inštalovať alebo odstraňovať ďalší softvér."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Prosím, skopírujte súbor na svoj lokálny počítač a skontrolujte oprávnenia "
+"súboru."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Inštalácia balíka, ktorý nezodpovedá štandardu kvality nie je povolená. To "
+"by mohlo spôsobiť vážne problémy s vaším počítačom. Prosím, kontaktujte "
+"osobu alebo organizáciu, ktorá poskytla tento balík a poskytnite dolu "
+"uvedené informácie."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Stiahnutý licenčný kód potrebný na beh tohto softvéru je neplatný alebo sa "
+"nedal korektne nainštalovať.\n"
+"Ďalšie informácie nájdete v podrobnostiach."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Všetky dostupné aktualizácie už boli nainštalované."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Licenčný kľúč, ktorý vám umožňuje používať tento softvér, nebolo možné "
+"stiahnuť. Prosím, skontrolujte vaše pripojenie k sieti."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Nemáte oprávnenie vykonať túto operáciu."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Zlyhalo sťahovanie balíkov"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Zlyhalo sťahovanie informácií o zdrojoch softvéru"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Závislosti balíkov sa nedali vyriešiť"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Systém balíkov je poškodený"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Kľúč nebol nainštalovaný"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Kľúč nebol odstránený"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Zlyhalo zamknutie správcu balíkov"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Zlyhalo načítanie zoznamu balíkov"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Balík neexistuje"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Balík je už aktuálny"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Balík už je nainštalovaný"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Balík nie je nainštalovaný"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Nepodarilo sa odstrániť nevyhnutný systémový balík"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Úlohu nemožno sledovať alebo kontrolovať"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Operácia s balíkom zlyhala"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Vyžaduje inštaláciu nedôveryhodných balíkov"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Predošlá inštalácia nebola dokončená"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Tento balík je nekvalitný"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Súbor balíka nebolo možné otvoriť"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Nepodporovaná funkcia"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Nepodarilo sa stiahnuť licenčný kľúč"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Nepodarilo sa nainštalovať licenčný kľúč"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Systém je už aktuálny"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Vyskytla sa neobslúžiteľná chyba"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Čaká sa na spustenie služby"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Čaká sa"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Čaká sa na požadovaný nosič"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Čaká sa na ukončenie iných nástrojov na správu softvéru"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Čaká sa na výzvu konfiguračného súboru"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Prebieha úloha"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Sťahuje sa"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Prebieha požiadavka na zdroje softvéru"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Prebieha čistenie"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Dokončené"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Ruší sa"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Načítava sa zoznam softvéru"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Inštaluje sa %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Nastavuje sa %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Odstraňuje sa %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Úplne sa odstraňuje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Zaznamenali sme zmiznutie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Vykonáva sa spúšťač post-installation %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Aktualizuje sa %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Rozbaľuje sa %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Pripravuje sa inštalácia %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Pripravuje sa konfigurácia %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Pripravuje sa odstránenie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Pripravuje sa úplné odstránenie %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Nainštalovaný balík %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Balík „%s“ je úplne odstránený"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Odstránený balík %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Hotovo"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Overenie totožnosti zlyhalo"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Sťahuje sa"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Nečinný"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Sieť nie je dostupná"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Prebieha spracovanie %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Stiahnuté %sB z %sB pri %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Stiahnuté %sB z %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Súbor"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Stiahnutých %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Stiahnutých"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Vyžaduje sa CD/DVD „%s“"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Prosím, vložte vyššie uvedené CD/DVD do jednotky „%s“ aby ste z neho mohli "
+"nainštalovať softvérové balíky."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "P_okračovať"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Nainštalovať"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Znovu nainštalovať"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Odstrániť"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Odstrániť s konfiguráciou"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Aktualizovať"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Znížiť verziu"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Preskočiť aktualizáciu"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Prosím, skontrolujte zoznam zmien dolu."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Je potrebné nainštalovať ďalší softvér"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Je potrebné znovu nainštalovať ďalší softvér"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Je potrebné odstrániť ďalší softvér"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Je potrebné odstrániť s konfiguráciou ďalší softvér"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Je potrebné aktualizovať ďalší softvér"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Je potrebné znížiť verziu ďalšieho softvéru"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Aktualizácie sa preskočia"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Vyžadujú sa ďalšie zmeny"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Stiahne sa celkom %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Uvoľní sa %sB miesta na disku."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Použije sa ďalších %sB miesta na disku."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "Nahradiť vaše zmeny v „%s“ novšou verziou konfiguračného súboru?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ak neviete, prečo sa tu súbor už nachádza, je zvyčajne bezpečné ho nahradiť."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Zmeny"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Ponechať"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "Nah_radiť"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "Po_drobnosti"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Čaká sa na ukončenie %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Sťahuje sa %(files)s"
+msgstr[1] "Sťahuje sa %(files)s"
+msgstr[2] "Sťahuje sa %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokálny zdroj softvéru"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Sťahuje sa z %s"
+msgstr[1] "Sťahuje sa z %s"
+msgstr[2] "Sťahuje sa z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Štruktúra %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Popis %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Úplne sa odstraňuje %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Dostupné balíky z %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Dostupné zdroje z %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Dostupné preklady z %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Dostupné preklady %s (%s) z %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Dostupné preklady pre %s z %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Preklady (%s) z %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Balík %s nie je dostupný"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Balík %s nie je nainštalovaný"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Verzia %s %s nie je nainštalovaná"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Balík %s je už nainštalovaný"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Verzia %s %s nie je dostupná."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL servera kľúčov je neplatné: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Neplatný protokol servera: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Neplatný identifikátor kľúča: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Nepodarilo sa stiahnuť a nainštalovať kľúč %s z %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Súbor kľúča %s nebolo možné nainštalovať: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Kľúč s odtlačkom %s nebolo možné odstrániť: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Balík %s nie je možné odstrániť."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Verzia %s %s nie je nainštalovaná"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Predošlá verzia %s %s už je nainštalovaná"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Verzia %s %s už je nainštalovaná"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Verzia %s %s nie je dostupná"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Musíte uviesť verziu, na ktorú chcete znížiť balík %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Novšia verzia %s %s je už nainštalovaná"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Balík %s nie je dostupný vo vydaní %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Balík %s nie je možné odstrániť"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Balík neposkytuje platné pole Installed-Size v súbore control. Pozri Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licenčný kľúč je prázdny"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licenčný kľúč nemôže obsahovať spustiteľný kód"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Cesta %s k licenčnému kľúču je neplatná"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licenčný kľúč už existuje: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Umiestnenie licenčného kľúča nie je bezpečné, pretože obsahuje symbolické "
+"odkazy. Cesta %s sa mapuje na %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Adresár, kde sa má nainštalovať kľúč zatiaľ neexistuje: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Nepodarilo sa zapísať kľúč do: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Nasledovné balíky maú nesplnené závislosti:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ale je to virtuálny balík"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ale nie je nainštalovaný"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ale nebude sa inštalovať"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ale %s je nainštalovaný"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ale %s sa bude inštalovať"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Pridanie kľúča do zoznamu dôveryhodných dodávateľov softvéru zlyhalo"
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..e627ef6
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,1504 @@
+# Slovenian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-03-07 10:13+0000\n"
+"Last-Translator: Damir Jerovšek <Unknown>\n"
+"Language-Team: Slovenian <sl@li.org>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Naštej ključe zaupanja vrednih ponudnikov"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Za ogled seznama zaupanih ključev se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Odstrani prejete datoteke paketov"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Za čiščenje prejetih paketnih datotek je zahtevana overitev."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Spremeni nastavitev programov"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Za spremembo programskih nastavitev je zahtevana overitev."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Spremeni skladišče programov"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Za spremembo nastavitev odložišč programov se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Namesti datoteko paketa"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Za namestitev tega paketa se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Posodobi podatke o paketu"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Za posodobitev seznama programske opreme se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Namesti ali odstrani pakete"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Za namestitev ali odstranitev programske opreme se morate overiti."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Namesti programsko opremo iz skladišča, ki je na dovoljenem seznamu in ima "
+"visoko stopnjo zaupanja."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Za namestitev programske opreme se morate overiti."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Dodaj novo skladišče in iz njega namesti pakete"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Za namestitev programske opreme iz novega vira se morate overiti."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Dodaj novo skladišče kupljene programske opreme in iz njega namesti pakete"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Za namestitev kupljene programske opreme se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Nadgradi pakete"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Za posodobitev programske opreme se morate overiti."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Prekliči nalogo drugega uporabnika"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Za preklic sprememb programske opreme nekoga drugega je zahtevana overitev."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Izberite posredniški strežnik za prejeme programov"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Za prejemanje programske opreme z uporabo posredniškega strežnika se morate "
+"overiti."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "NAPAKA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Prejetih %sB od %sB pri %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Prejetih %sB od %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "NAPAKA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Tega dejanja vam ni dovoljeno izvesti."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Dajanje v čakalno vrsto"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Razreševanje odvisnosti"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Naslednji NOVI paketi bodo nameščeni (%(count)s):"
+msgstr[1] "Naslednji NOV paket bo nameščen (%(count)s):"
+msgstr[2] "Naslednja NOVA paketa bosta nameščena (%(count)s):"
+msgstr[3] "Naslednji NOVI paketi bodo nameščeni (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Naslednji paketi bodo nadgrajeni (%(count)s):"
+msgstr[1] "Naslednji paket bo nadgrajen (%(count)s):"
+msgstr[2] "Naslednja paketa bosta nadgrajena (%(count)s):"
+msgstr[3] "Naslednji paketi bodo nadgrajeni (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Naslednji paketi bodo ODSTRANJENI (%(count)s):"
+msgstr[1] "Naslednji paket bo ODSTRANJEN (%(count)s):"
+msgstr[2] "Naslednja paketa bosta ODSTRANJENA (%(count)s):"
+msgstr[3] "Naslednji paketi bodo ODSTRANJENI (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Naslednji paketi bodo PODGRAJENI (%(count)s):"
+msgstr[1] "Naslednji paket bo PODGRAJEN (%(count)s):"
+msgstr[2] "Naslednja paketa bosta PODGRAJENA (%(count)s):"
+msgstr[3] "Naslednji paketi bodo PODGRAJENI (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Naslednji paketi bodo znova nameščeni (%(count)s):"
+msgstr[1] "Naslednji paket bo znova nameščen (%(count)s):"
+msgstr[2] "Naslednja paketa bosta znova nameščena (%(count)s):"
+msgstr[3] "Naslednji paketi bodo znova nameščeni (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Naslednji paketi so bili zadržani (%(count)s):"
+msgstr[1] "Naslednji paket je bil zadržan (%(count)s):"
+msgstr[2] "Naslednja paketa sta bila zadržana (%(count)s):"
+msgstr[3] "Naslednji paketi so bili zadržani (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Treba je dobiti %sB arhivov."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Po tem opravilu bo porabljenih dodatnih %sB prostora na disku."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Po tem opravilu bo sproščenega %sB prostora na disku."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Ali želite nadaljevati [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Za opravilo na več kot enem paketu vstavite ime paketa v navednice:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Osveži predpomnilnik"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Poskusi razrešiti pokvarjene odvisnosti. To dejanje je nevarno, saj lahko "
+"poskusi odstraniti veliko paketov."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Poskusi končati prejšnjo nedokončano namestitev"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Namesti dane pakete"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Znova namesti dane pakete"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Odstrani dane pakete"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Odstrani dane pakete, vključno z nastavitvenimi datotekami"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Podgradi dane pakete"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Zastarelo: uporabite --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Nadgradi sistem na varen način"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Nadgradi sistem, morda namesti in odstrani pakete"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Dodaj ponudnika med zaupanja vredne"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Dodaj id ponudnikovega ključa (potrebuje --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Uporabi dani strežnik s ključi za iskanje ključev"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Dodaj novo skladišče iz dane deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Navedite dodatno datoteko sources.list.d, h kateri naj bodo dodana skladišča."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Izpiši ključe zaupanja vrednih ponudnikov"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Odstrani zaupan ključ danega prstnega odtisa"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Znova nastavi nameščene pakete. Izbirno lahko določite najmanjšo prednost "
+"vprašanj"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Najmanjša debconf prednost vprašanj za prikaz"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Ne pripni terminala apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Dovoli pakete iz neoverjenih virov"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Pokaži dodatne podrobnosti o paketu. Trenutno le številko različice"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Čakanje na overitev"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Ne zapri ozadnjega programa zaradi nedejavnosti"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Ne naloži vstavkov"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Prikaži podrobnosti o notranji obdelavi podatkov"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Zapri in zamenjaj že zagnan ozadnji program"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Poslušaj na vodilu seje DBus (zahtevano le za preizkušanje"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Izvedi opravila za dano okolje chroot"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Shrani statistiko profila v navedeno datoteko"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Ne spreminjaj sistema (uporabno le za razvijalce)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Nameščena datoteka"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Nameščeni paketi"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Dodan je bil ključ iz datoteke"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Osvežen predpomnilnik"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Iskanje je končano"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Odstranjen je bil zaupanja vreden ključ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Odstranjeni paketi"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Posodobljeni paketi"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Nadgrajen sistem"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Uveljavljene spremembe"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Neuspela namestitev je popravljena"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Okvarjene odvisnosti so popravljene"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Vir programske opreme je dodan"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Komponenta distribucije je omogočena"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Prejete paketne datoteke so bile odstranjene"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Znova nastavljeni nameščeni paketi"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Uspešno"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Preklicano"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Ni uspelo"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Nameščanje datoteke"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Nameščanje paketov"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Dodajanje ključa iz datoteke"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Posodabljanje predpomnilnika"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Odstranjevanje zaupanja vrednega ključa"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Odstranjevanje paketov"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Posodabljanje paketov"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Nadgrajevanje sistema"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Uveljavljanje sprememb"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Popravljanje neuspele namestitve"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Popravljanje nameščene programske opreme"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Dodajanje vira programske opreme"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Omogočanje komponente distribucije"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Odstranjevanje prejetih paketnih datotek"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Ponovno nastavljanje nameščenih paketov"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Iskanje"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Namestitev paketne datoteke ni uspela"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Namestitev programa ni uspela"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Dodanje ključa na seznam zaupanja vrednih prodajalcev programske opreme je "
+"spodletelo"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Osveževanje seznama programov ni uspelo"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Odstranjevanje vnosa iz seznama zaupanja vrednih ponudnikov programov ni "
+"uspelo"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Odstranjevanje programa ni uspelo"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Posodabljanje programa ni uspelo"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Nadgrajevanje sistema ni uspelo"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Uveljavljanje programskih sprememb ni uspelo"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Popravljanje nedekončane namestitve ni uspelo"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Popravljanje pokvarjenih odvisnosti ni uspelo"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Dodajanje vira programske opreme ni uspelo"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Omogočanje sestavnega dela distribucije ni uspelo"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Odstranjevanje prejetih paketnih datotek ni uspelo"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Iskanje je spodletelo"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Dodajanje licenčnega ključa"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Preverite svojo internetno povezavo."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Preverite, ali uporabljate tudi neuradna skladišča. Če jih, jih onemogočite, "
+"saj so pogosto vir težav. \n"
+"Nato v terminalu zaženite naslednji ukaz: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Izbrana datoteka ni ključ GPG ali pa je pokvarjena."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Izbranega ključa ni mogoče odstraniti. Preverite, da ste zagotovili veljaven "
+"prstni odtis."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Preverite, da trenutno ne izvajate drugega orodja za upravljanje s programi, "
+"kot sta na primer Synaptic ali aptitude. Hkrati lahko spremembe izvaja le "
+"eno orodje."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"To je resna težava. Poskusite znova kasneje. Če se težava ponovi, javite "
+"napako razvijalcem."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Preverite črkovanje imena paketa in da je primerno skladišče omogočeno."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Ni potrebe po posodobitvi."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Ni potrebe po namestitvi."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Ni potrebe po odstranitvi."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Zahtevali ste odstranitev paketa, ki je ključen del vašega sistema."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Povezava z ozadnjim programom je bila izgubljena. Verjetno se je ozadnji "
+"program v ozadju sesul."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Namestitev ali odstranitev programskega paketa ni uspela."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Zahtevana zmožnost ni podprta."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Prišlo je do programske napake v programu aptdaemon, ki vam omogoča "
+"namestitev/odstranitev programske opreme in izvajanje drugih nalog, "
+"povezanih z upravljanjem paketov."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Do napake je lahko prišlo zaradi zahteve po dodatnih programskih paketih, ki "
+"manjkajo ali jih ni mogoče namestiti. Poleg tega je lahko prišlo do spora "
+"med programskimi paketi, ki ne morejo biti hkrati nameščeni."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "To zahteva namestitev paketov z nepooblaščenih virov."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Namestitev je bila mora neuspešna zaradi napake v ustreznem programskem "
+"paketu ali ker je bila prekinjena na neprijazen način. Pred namestitvijo ali "
+"odstranitvijo drugih programov morate to popraviti."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Kopirajte datoteko v svoj krajevni računalnik in preverite njena dovoljenja."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Namestitev paketa, ki krši kakovost standarda, ni dovoljena. To lahko "
+"povzroči resne težave na vašem računalniku. Stopite v stik z osebo ali "
+"organizacijo, ki ponuja to paketno datoteko in spodaj vključite podrobnosti."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Prenešeni licenčni ključ, ki je zahtevan za zagon te programske opreme, ni "
+"veljaven ali ga ni mogoče namestiti pravilno.\n"
+"Oglejte si podrobnosti."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Vse posodobitve, ki so na voljo, so bile nameščene."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Licenčnega ključa, ki vam dovoljuje uporabo te programske opreme, ni bilo "
+"mogoče prenesti. Preverite svojo omrežno povezavo."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Za izvedbo tega dejanja nimate zahtevanih dovoljenj."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Vnesli ste napačno geslo ali pa ste pooblastitev preklicali.\n"
+"Obstaja lahko tudi tehnični razlog za to napako, če niste videli pogovornega "
+"okna gesla: vaše namizno okolje morda ne podpira posrednika seje PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Prejem paketnih datotek je spodletel"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Prejem podrobnosti o skladišču je spodletel"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Odvisnosti paketov ni mogoče razrešiti"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Sistem paketov je pokvarjen"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ključ ni bil nameščen"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ključ ni bil odstranjen"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Upravljalnika paketov ni bilo mogoče zakleniti"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Seznama paketov ni bilo mogoče naložiti"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paket ne obstaja"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paket je že posodobljen"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paket je že nameščen"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paket ni nameščen"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Ni bilo mogoče odstraniti pomembnega sistemskega paketa"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Opravila ni mogoče nadzirati"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Opravilo s paketi je spodletelo"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Zahteva namestitev nepreverjenih paketov"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Predhodna namestitev ni bila dokončana"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paket je slabe kakovosti"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Paketne datoteke ni mogoče odpreti"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Zmožnost ni podprta"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Prejem licenčnega ključa je spodletel"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Namestitev programskega ključa je spodletela"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistem je že posodobljen"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Ni vas bilo mogoče pooblastiti"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Nimate dovoljenj za izvedbo tega dejanja."
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Prišlo je do neupravljane napake"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Čakanje na začetek postopka"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Čakanje"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Čakanje na zahtevan medij"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Čakanje, da se ostali upravljalniki paketov končajo"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Čakanje na poziv nastavitvene datoteke"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Izvajanje naloge"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Prejemanje"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Poizvedovanje po programskih virih"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Čiščenje"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Končano"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Preklicevanje"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Nalaganje seznama programov"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Nameščanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Nastavljanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Odstranjevanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Popolno odstranjevanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s je izginil"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Izvajanje ponamestitvenega zaporedja ukazov %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Nadgrajevanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Razširjanje %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Priprava namestitve %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Pripravljanje za nastavitev %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Pripravljanje za odstranitev %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Pripravljanje na popolno odstranitev %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Paket %s je nameščen."
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Paket %s je bil popolnoma odstranjen"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Paket %s je bil odstranjen"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Končano"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Overitev ni uspela"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Pridobivanje"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Nedejavno"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Omrežje ni na voljo"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Obdelovanje %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Prejetih %sB od %sB pri %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Prejetih %sB od %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Datoteka"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Prejeto %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Prejeto"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Zahtevan je CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Vstavite zgornji CD/DVD v pogon '%s' za namestitev programskih paketov z "
+"njega."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Nadaljuj"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Namesti"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Znova namesti"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Odstrani"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Počisti"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Nadgradi"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Podgradi paket"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Preskoči nadgradnjo"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Oglejte si spodnji seznam sprememb."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Dodatno programsko opremo je treba namestiti"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Dodatno programsko opremo je treba znova namestiti"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Dodatno programsko opremo je treba odstraniti"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Dodatno programsko opremo je treba počistiti"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Dodatno programsko opremo je treba nadgraditi"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Dodatno programsko opremo je treba podgraditi"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Posodobitve bodo izpuščene"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Zahtevane so dodatne spremembe"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Skupaj bo prejetih %sB."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "Na disku bo sproščenega %s B prostora."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Porabljenega bo %sB več prostora na disku."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Ali želite zamenjati svoje spremembe v '%s' z novejšo različico v "
+"nastavitveni datoteki?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Če ne veste, zakaj datoteka na tem mestu obstaja, jo je običajno varno "
+"zamenjati."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Spremembe"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Ohrani"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Zamenjaj"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Podrobnosti"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Čakanje na končanje %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Prejemanje %(files)s"
+msgstr[1] "Prejemanje %(files)s"
+msgstr[2] "Prejemanje %(files)s"
+msgstr[3] "Prejemanje %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "Krajevno skladišče."
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Prejemanje od %s"
+msgstr[1] "Prejemanje od %s"
+msgstr[2] "Prejemanje od %s"
+msgstr[3] "Prejemanje od %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Zgradba %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Opis %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Podpis opisa %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paketi, na voljo iz %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Viri, na voljo iz %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Prevodi, na voljo iz %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Prevodi za %s (%s) iz %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Prevodi za %s iz %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Prevodi (%s) iz %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paket %s ni na voljo"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paket %s ni nameščen"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Različica %s %s ni nameščena"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paket %s je že nameščen"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Različica %s programa %s ni na voljo."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL strežnika s ključi je neveljaven: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Neveljaven strežniški protokol: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Neveljaven ID ključa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Napaka med prejemom in nameščanjem ključa %s iz %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Datoteke ključa %s ni mogoče namestiti: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ključa s prstnim odtisom %s ni mogoče odstraniti: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paketa %s ni mogoče odstraniti."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Različica %s %s ni nameščena"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Prejšnja različica %s %s je že nameščena"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Različica %s %s je že nameščena"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Različica %s programa %s ni na voljo"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Navedite različico, na katero naj bo %s podgrajen"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Novejša različica %s %s je že nameščena"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paket %s ni na voljo v izdaji %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paketa %s ni mogoče odstraniti"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paket ne zagotavlja veljavnega nadzornega polja Nameščena velikost. Oglejte "
+"si Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licenčni ključ je prazen"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licenčni ključ ne sme vsebovati izvedljive kode."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Pot licenčnega ključa %s ni veljavna"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licenčni ključ že obstaja: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Mesto licenčnega ključa ni varno, saj vsebuje simbolne povezave. Pot %s kaže "
+"na %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Mapa za nemestitev ključa še ne obstaja: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Pisanje datoteke ključa v mapo %s je spodletelo"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Naslednji paketi imajo nerazrešene odvisnosti:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ", vendar je navidezen paket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ", vendar ni nameščen"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ", vendar ne bo nameščen"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ", vendar je nameščen paket %s"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ", vendar bo nameščen paket %s"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Dodajanje ključa na seznam zaupanja vrednih ponudnikov programov ni uspelo"
diff --git a/po/sq.po b/po/sq.po
new file mode 100644
index 0000000..f634c8d
--- /dev/null
+++ b/po/sq.po
@@ -0,0 +1,1499 @@
+# Albanian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-03-07 14:25+0000\n"
+"Last-Translator: Vilson Gjeci <vilsongjeci@gmail.com>\n"
+"Language-Team: Albanian <sq@li.org>\n"
+"Language: sq\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Listo çelësat e shitësave të besuar"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Për të shfaqur listën e çelësave të besuar, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Hiq skedarët e paketave të shkarkuara"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Për të pastruar skedarët e paketave të shkarkuara, ju duhet t identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ndrysho konfigurimin e programeve"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Për të ndryshuar parametrat e programeve, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Ndrysho magazinën e programeve"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Për të ndryshuar parametrat e magazinës, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Instalo skedarin e paketës"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Për të instaluar këtë paketë, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Përditëso informacionin e paketave"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Për të përditësuar katalogun e programeve, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Instalo ose hiq paketat"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Për të instaluar apo hequr programe, ju duhet të identifikoheni."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Instalo programe nga një magazinë shumë e besuar dhe në listën e bardhë."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Për të instaluar programe, ju duhet të identifikoheni."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Shto një magazinë të re dhe shto paketat prej saj"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Për të instaluar programe nga një burim i ri, ju duhet të identifikoheni."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Shto një magazinë të re të programeve të blera dhe instalo paketat prej saj"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Për të instaluar programet e blera, ju duhet të identiifkoheni."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Përditëso paketat"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Për të instaluar programet e përditësuara, ju duhet të identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Anullo detyrën e një përdoruesi tjetër"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Për të fshirë ndryshimet e programeve të dikujt tjetër, ju duhet të "
+"identifikoheni."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Vendos proksi për shkarkimet e programeve"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "Për të përdorur një server proksi, ju duhet të identifikoheni."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "GABIM"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "U Shkarkuan %sB të %sB në %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "U Shkarkua %sB e %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "GABIM:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Nuk ju lejohet të kryeni këtë veprim."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Duke kërkuar"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Duke zgjidhur vartësitë"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Paketa E RE që vijon do të instalohet (%(count)s):"
+msgstr[1] "Paketat E REJA që vijojnë do të instalohen (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Paketa që vijon do të përditësohet (%(count)s):"
+msgstr[1] "Paketat që vijojnë do të përditësohen (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Paketa që vijon do të HIQET (%(count)s):"
+msgstr[1] "Paketat që vijojnë do të HIQEN (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Paketa që vijon do të ULET NË NIVEL (%(count)s):"
+msgstr[1] "Paketat që vijojnë do të ULEN NË NIVEL (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Paketa që vijon do të riinstalohet (%(count)s):"
+msgstr[1] "Paketat që vijojnë do të riinstalohen (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Paketa që vijon është mbajtur (%(count)s):"
+msgstr[1] "Paketat që vijojnë janë mbajtur (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Kam nevojë të marr %sB nga arkivat."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Pas këtij veprimi, %sB hapësirë shtesë në disk do të përdoret."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Pas këtij veprimi, %sB hapësirë shtesë në disk do të lirohet."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Dëshironi të vazhdoni [P/j]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Për të vepruar me më tepër se një paketë vendosini emrat e paketave me "
+"thonjëza:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Rifresko magazinën"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Përpiquni të zgjidhni vartësitë e dëmtuara. Veprim potencialisht i "
+"rrezikshëm, sepse do të përpiqet të heqë shumë paketa."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Përpiqu të përfundosh një instalim të mëparshëm të pa kompletuar"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Instalo paketat e dhëna"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Riinstalo paketat e dhëna"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Hiqi paketat e dhëna"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Hiqi paketat e dhëna duke përfshirë edhe skedarët e konfigurimit"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Uli një shkallë paketat e dhëna"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "I Papërdorshëm: Ju lutemi të përdorni --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Përditësoje sistemin në një mënyrë të sigurtë"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Përditësoni sistemin, mundësisht duke instaluar dhe hequr paketat"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Shtojeni shitësin e burimet e besueshme"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Shto keyid të shitësit (gjithashtu ka nevojë për --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Përdor serverin e dhënë të çelësave për të parë çelësat"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Shto një magazinë të re nga deb-line e dhënë"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Specifikoni një skedar alternativ sources.list.d tek i cili mund të shtohen "
+"magazinat."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Listo çelësat e besueshëm të shitësve"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Hiqeni çelësin e besuar të gjurmës së gishtërinjve të dhënë"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Rikonfiguro të gjitha paketat e instaluara. Në mënyrë opsionale përparësia "
+"minimale e pyetjeve mund të specifikohet"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Prioriteti minimal i pyetjes debconf mund të shfaqet"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Mos e bashkangjitni terminalin apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Lejo paketat nga bruime të paidentifikuara"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Shfaq informacion shtesë rreth paketave. Për momentin vetëm numri i versionit"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Duke pritur për identifikim"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Mos e mbyll daemon për shkak të mungesës së veprimtarisë"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Mos ngarko asnjë plugin"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Shfaq informacionin për proçeset e brendshme"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Dil dhe zëvendësoje një daemon që është tashmë në gjendje pune"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Dëgjoni në bus të seksionit DBus (Kërkohet vetëm për testim)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Kryeni verpimin në chroot të dhënë"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Ruaj gjendjet e profilit në skedarin e përcaktuar"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Mos bëni asnjë ndryshim në sistem (Vetëm për tu përdorur nga zhvilluesit)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Skedari i instaluar"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Paketat e instaluara"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Çelës i shtuar nga skedari"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Magazinë e përditësuar"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Kërkimi u krye"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Çelës i besueshëm i hequr"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Paketa të hequra"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Paketa të përditësuara"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Sistem i përditësuar"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Ndryshimet e kryera"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "U riparua instalimi i pa kompletuar"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "U riparuan vartësitë e dëmtuara"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "U shtua burimi i programit"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Aktivizo përbërësin e versionit"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Hiqi skedarët e shkarkuar të paketave"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Paketat e instaluara të konfiguruara sërisht"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Me Sukses"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Anulluar"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Dështoi"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Duke instaluar skedarin"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Duke instaluar paketat"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Duke shtuar çelësin nga skedari"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Duke përditësuar magazinën"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Duke hequr çelësin e besuar"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Duke hequr paketat"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Duke përditësuar paketat"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Duke përditësuar sistemin"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Duke aplikuar ndryshimet"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Duke riparuar instalimin e pa kompletuar"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Duke riparuar programet e instaluara"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Duke shtuar burim programesh"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Duke aktivizuar përbërësin e versionit"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Duke hequr paketat e shkarkuara të skedarëve"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Duke rikonfiguruar paketat e instaluara"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Duke kërkuar"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Instalimi i skedarit të paketës dështoi"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Instalimi i programit dështoi"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+"Shtimi i çelësit tek lista e shitësve të besueshëm të programeve dështoi"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Rifreskimi i listës së programeve dështoi"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Heqja e shitësit nga lista e të besueshmeve dështoi"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Heqja e programit dështoi"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Përditësimi i programit dështoi"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Përditësimi i sistemit dështoi"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Dështoi aplikimi i ndryshimit të programeve"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Riparimi i instalimit të pakompletuar dështoi"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Riparimi i vartësive të dëmtuara dështoi"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Shtimi i burimit të skedarëve dështoi"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Aktivizimi i përbërësit të distribucionit dështoi"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Heqja e paketave të shkarkuara dështoi"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Kërkimi dështoi"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Duke shtuar çelësin e liçensës"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kontrollo lidhjen tënde me internetin."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontrollo nëse je duke përdorur magazina të palëve të treta. nëse po, "
+"çaktivizoji ato, sepse ato janë një burim i zakonshëm i problemeve.\n"
+"Veç kësaj nis komandën që vijon në një Terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"E dhëna e zgjedhur sipas të gjitha gjasave nuk është GPG-çelës ose është e "
+"dëmtuar."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Çelësi i përzgjedhur nuk mund të hiqej. Kontolloni nëse keni dhënë një "
+"gjurmë gishtërinjsh të vlefshme."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kontrolloni nëse keni hapur një mjet tjetër për menaxhimin e programeve, "
+"psh. Synaptic apo aptitude. Vetëm një mjet lejohet të bëjë ndryshime në një "
+"kohë të caktuar."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ky është një problem serioz. Provo përsëri më vonë. Nëse problemi shfaqet "
+"përsëri, ju lutemi t'i raportoni një gabim zhvilluesve."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Kontrolloni shqiptimin e emrit të paketës dhe shikoni që magazina e duhur të "
+"aktivizohet."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Nuk ka nevojë për një përditësim."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Nuk ka nevojë për një instalim"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Nuk ka nevojë për të hequr gjë."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Ju kërkuat të hiqni një paketë e cila është pjesë thelbësore e sistemit tuaj."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Lidhja me daemon humbi. Ka shumë mundësi që daemon i sfondit të ketë pasur "
+"një defekt."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Instalimi apo heqja e një pakete programesh dështoi."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Mjeti i kërkuar nuk suportohet."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Duket se ka një gabim programimi në aptdaemon, programi që ju lejon të "
+"instaloni/hiqni programt dhe për të performuar detyra të tjera të lidhura me "
+"menaxhimin e paketave."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ky gabim mund të jetë shkaktuar nga paketat shtesë të programeve të kërkuara "
+"që mungojnë apo nuk janë të instalueshme. Për më tepër mund të ketë një "
+"konflikt midis paketave të programeve të cilat nuk lejohet të instalohen në "
+"të njëjtën kohë."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Kjo kërkon instalimin e paketave nga burime të paidentifikuara."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Instalimi mund të ketë dështuar për shkak të një gabimi në paketën "
+"korresponduese të programit ose është anulluar në një mënyrë jo miqësore. "
+"Juve ju duhet të riparoni këtë para se të instaloni apo hiqni çdo program të "
+"mëvonshëm."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Ju lutemi ta kopjoni skedarin në kompjuterin tuaj lokal dhe të kontrolloni "
+"për lejet e skedarit."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Instalimi i një pakete e cila dhunon standartet e cilësisë nuk lejohet. Kjo "
+"mund të shkaktojë probleme serioze në kompjuterin tuaj. Ju lutemi të "
+"kontaktoni personin apo organizatën që bëri të disponueshme këtë paketë dhe "
+"të përfshini detajet më poshtë."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Çelësi i shkarkuar i liçensës që kërkohet për të nisur këtë program nuk "
+"është i vlefshëm ose nuk mund të instalohet siç duhet.\n"
+"Shikoni detajet për më tepër informacion."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Të gjitha përditësimet e disponueshme janë instaluar tashmë."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Çelësi i liçensës që ju mundëson ta nisni këtë program nuk mund të "
+"shkarkohet. Ju lutemi të kontrolloni lidhjen tuaj me rrjetin."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Ju nuk keni privilegjet e kërkuara për të kryer këtë veprim."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Juve ose keni dhënë një fjalëkalim të gabuar ose anulluat autorizimin.\n"
+"Për më tepër mund të ketë edhe një arsye teknike për këtë gabim nëse nuk "
+"keni parë një dialog për fjalëkalimin: ambienti juaj i desktopit nuk jep një "
+"agjent të seksionit për PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Dështuam në shkarkimin e skedarëve të paketave"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Dështuam në shkarkimin e informacionit të magazinave"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Vartësitë e paketave nuk mund të zgjidhen"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Sistemi i paketave është i dëmtuar"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Çelësi nuk është instaluar"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Çelësi nuk është hequr"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Dështuam në bllokimin e menaxhuesit të paketave"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Dështuam në ngarkimin e listës së paketave"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paketa nuk ekziston"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paketa është e përditësuar tashmë"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paketa është e instaluar tashmë"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paketa nuk është e instaluar"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Dështuam në heqjen e një pakete thelbësore për sistemin"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Detyra nuk mund të monitorohet apo kontrollohet"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Veprimi i paketave dështoi"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Kërkon instalimin e paketave të pa kontrolluara"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Instalimi i mëparshëm nuk është kompletuar"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paketa ka cilësi të keqe"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Skedari i paketës nuk mund të hapet"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Mjet i pa suportuar"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Dështova në shkarkimin e çelësit të liçensës"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Dështova në instalimin e çelësit të liçensës"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistemi është i përditësuar tashmë"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Nuk mudëm t'iu autorizonim"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Juve nuk iu lejohet ta kryeni këtë veprim"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ndodhi një gabim i pakorrigjueshëm"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Duke pritur që shërbimi të rinisë"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Në pritje"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Duke pritur për median e kërkuar"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Duke pritur të dalin menaxhuesit e tjerë të programeve"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Duke pritur për daljen e skedarit të konfigurimit"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Duke nisur detyrën"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Duke shkarkuar"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Duke grumbulluar burimet e programeve"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Duke pastruar"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Përfunduar"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Duke anulluar"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Duke ngarkuar listën e programeve"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Duke instaluar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Duke konfiguruar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Duke fshirë %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Duke hequr plotësisht %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Njoftoj zhdukjen e %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Duke kryer veprimet e pas instalimit për %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Duke Përditësuar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Duke hapur %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Duke përgatitur instalimin e %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Duke përgatitur konfigurimin e %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Duke përgatitur heqjen e %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Duke përgatitur heqjen e plotë të %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "U instalua %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "U hoq plotësisht %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "U hoq %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "U Bë"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Identifikimi dështoi"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Duke mbledhur"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Në Pritje"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Rrjeti nuk është i disponueshëm"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Duke përpunuar %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "U Shkarkuan %sB të %sB në %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "U Shkarkua %sB e %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detajet"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Skedari"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "U Shkarkuan %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Të shkarkuara"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' kërkohet"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Ju lutemi të vendosni CD/DVD e mësipërm në draiv '%s' për të instaluar "
+"paketat e programeve prej tij."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Vazhd_o"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Instalo"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Riinstalo"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Hiqe"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Pastro"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Përditëso"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Çoje një shkallë më poshtë"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Anashkalo përditësimin"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Ju lutemi ti hidhni një sy listës së ndryshimeve më poshtë."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Duhen instaluar programe shtesë"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Duhen riinstaluar programe shtesë"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Programe shtesë duhet të hiqen"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Programe shtesë duhen hequr"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Programe shtesë duhen përditësuar"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Programe shtesë do ulen një shkallë më poshtë"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Përditësimet do të anashkalohen"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Ndryshime shtesë kërkohen"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB do të shkarkohen në total."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB hapësirë në disk do të lirohet."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB më tepër hapësirë në disk do të përdoret."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Ti zëvendësoj ndryshimet tuaja në '%s' me një version të mëvonshëm të "
+"skedarit të konfigurimit?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Nëse nuk e didni pse skedari tashmë është aty, zakonisht është i sigurtë "
+"zëvendësimi i tij."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Ndryshimet"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Mbaje"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Zëvendëso"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detaje"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Duke pritur për %s që të mbyllet"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Duke shkarkuar %(files)s"
+msgstr[1] "Duke shkarkuar %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "depozita lokale"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Duke shkarkuar nga %s"
+msgstr[1] "Duke shkarkuar nga %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktura e %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Përshkrimi i %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Firma përshkruese e %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Paketat e disponueshme nga %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Burimet e disponueshme nga %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Përkthimet e disponueshme nga %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Përkthimet për %s (%s) nga %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Përkthimet për %s nga %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Përkthime (%s) nga %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paketa %s nuk është e disponueshme"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "paketa %s nuk është instaluar"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Versioni %s i %s nuk është instaluar"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paketa %s është instaluar tashmë"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Versioni %s i %s nuk është i disponueshëm"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "URL e serverit të çelësave është e pavlefshme: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Protokoll i pavlefshëm i serverit: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Identiteti i çelësit nuk është i saktë: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Dështova në shkarkimin e çelësit të instalimit %s nga %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Skedari i çelësit %s nuk mund të instalohej: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Çelësi me gjurmën e gishtërinjve %s nuk mund të hiqej: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paketa %s nuk mund të hiqej."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Versioni %s i %s nuk është instaluar"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Versioni i mëparshëm %s i %s është instaluar tashmë"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Versioni %s i %s është instaluar tashmë"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Versioni %s i %s nuk është i disponueshëm"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+"Ju nevojitet të specifikoni një version për të ulur një shkallë më poshtë %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Versioni i fundit %s i %s është instaluar tashmë"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paketa %s nuk është e disponueshme në versionin %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paketa %s nuk mund të hiqet"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paketa nuk jep një fushë kontrolli të vlefshme për Përmasën e Instalimit. "
+"Shikoni çertifikatën e Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Çelësi i liçensës është bosh"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Çelësi i liçensës nuk lejohet të mbajë kod të ekzekutueshëm."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Shtegu i çelësit të liçensës %s është i pavlefshëm"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Çelësi i liçensës ekziston tashmë: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Vendndodhja e çelësit të liçensës është e pasigurtë përderisa përmban lidhje "
+"simbolike. Shtegu %s të drejton tek %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Drejtoria ku instalon çelësin nuk ekziston tashmë: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Dështova në shkrimin e skedarittë çelësit tek: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Paketat që vijojnë kanë vartësi të paplotësuara:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "Por është një paketë virtuale"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "Por nuk është instaluar"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "Por nuk do të instalohet"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "por %s është instaluar"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "Por %s do të instalohet"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Shtimi i çelësit në listën e shitësve të besueshëm të programeve dështoi"
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..ec9d69c
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,1498 @@
+# Serbian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 15.12.2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-02-01 00:49+0000\n"
+"Last-Translator: Марко М. Костић <Unknown>\n"
+"Language-Team: Ubuntu serbian Translators\n"
+"Language: serbian (sr)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Списак кључева поузданих продаваца"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Да бисте видели списак поузданих кључева, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Уклони преузете датотеке пакета"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Да бисте очистили преузете датотеке пакета, треба да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Промени конфигурацију софтвера"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Да бисте изменили поставке софтвера, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Промени ризницу софтвера"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Да бисте изменили поставке ризнице софтвера, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Инсталирај датотеку пакета"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Да бисте инсталирали овај пакет, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Допуни информације о пакету"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Да бисте ажурирали каталог софтвера, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Инсталирај или уклони пакете"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+"Да бисте инсталирали или уклонили софтвер, требате да потврдите идентитет."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"Инсталирај програме из проверене ризнице која се налази на белом списку."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Да бисте инсталирали програм, потребно је да се идентификујете."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Додај нову ризницу и инсталирај пакете из ње"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Да бисте инсталирали софтвер из новог извора, требате да потврдите идентитет."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Додај нову ризницу купљеног софтвера и инсталирај пакете из ње"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Да бисте инсталирали купљени софтвер, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Надогради пакете"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+"Да бисте инсталирали ажурирани софтвер, требате да потврдите идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Откажи задатак другог корисника"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Да бисте отказали измене софтвера другог корисника, требате да потврдите "
+"идентитет."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Постави посредника за преузимање софтвера"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Да бисте користили посреднички сервер за преузимање софтвера, требате да "
+"потврдите идентитет."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ГРЕШКА"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Преузето је %sB од %sB при %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Преузето је %sB од %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ГРЕШКА:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Вама није дозвољено да извршите ову радњу."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Чекање у реду"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Разрешавам зависности"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Биће инсталиран %(count)s НОВ пакет:"
+msgstr[1] "Биће инсталирана %(count)s НОВА пакета:"
+msgstr[2] "Биће инсталирано %(count)s НОВИХ пакета:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Биће надограђен %(count)s пакет:"
+msgstr[1] "Биће надограђена %(count)s пакета:"
+msgstr[2] "Биће надограђено %(count)s пакета:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Биће УКЛОЊЕН %(count)s пакет:"
+msgstr[1] "Биће УКЛОЊЕНА %(count)s пакета:"
+msgstr[2] "Биће УКЛОЊЕНО %(count)s пакета:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Биће РАЗГРАЂЕН %(count)s пакет:"
+msgstr[1] "Биће РАЗГРАЂЕНА %(count)s пакета:"
+msgstr[2] "Биће РАЗГРАЂЕНО %(count)s пакета:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Биће поново инсталиран %(count)s пакет:"
+msgstr[1] "Биће поново инсталирана %(count)s пакета:"
+msgstr[2] "Биће поново инсталирано %(count)s пакета:"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Биће задржан %(count)s пакет:"
+msgstr[1] "Биће задржана %(count)s пакета:"
+msgstr[2] "Биће задржано %(count)s пакета:"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Морам да набавим %sB архива."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Након ове операције, %sB додатног простора на диску биће искоришћено."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Након ове операције, %sB додатног простора на диску биће ослобођено."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Да ли желите да наставите [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Да радите са више од једним пакетом ставите имена пакета под наводницима:\n"
+"aptdcon --install „foo bar“"
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Освежава кеш"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Покушаће да реши оштећене зависности. Потенцијално опасна операција јер може "
+"покушати да уклони многе пакете."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Покушаће да заврши претходно недовршену инсталацију"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Инсталираће дате пакете"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Поново ће инсталирати дате пакете"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Уклониће дате пакете"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Уклониће дате пакете, укључујући датотеке подешавања"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Разградиће дате пакете"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Застарело: Молим користите „--safe-upgrade“"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Надограђује систем на безбедан начин"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Надограђује систем, могуће је инсталирање и уклањање пакета"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Додаје продавца међу поверљиве"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Додаје продавчев ид кључа (такође треба --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Користи дати сервер кључева за претраживање кључева"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Додаје нову ризницу из дате деб линије"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Наведите алтернативну „sources.list.d“ датотеку у коју требају бити додате "
+"ризнице."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Списак кључева поузданих продаваца"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Уклони поверљиви кључ датог отиска прста"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Поново ће подесити инсталиране пакете. Опционално може бити наведен најмањи "
+"приоритет питања."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Најмањи приоритет питања деб подешавања која ће бити приказана"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Немој придодати апт терминалу"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Дозволи пакете са непроверених извора"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Приказаће додатне информације о пакетима. Тренутно само број верзије"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Чекам на потврђивање идентитета"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Не гаси демона због неактивности"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Не учитава никакве прикључке"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Прикажи информације о унутрашњим процесима"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Заустави и замени већ започет демон програм"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Ослушкује на магистрали ДБус сесије (потребно је само за тестирање)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Извршава операције у датом „chroot“-у"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Сачувај стање профила у посебно одређену датотеку"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Не уноси никакве промене на систему (Корисно је само програмерима)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Датотека је инсталирана"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Пакети су инсталирани"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Кључ из датотеке је додат"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Кеш је освежен"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Претрага је обављена"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Поверљиви кључ је уклоњен"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Пакети су уклоњени"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Пакети су унапређени"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Систем је надограђен"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Измене су примењене"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Незавршена инсталација је оправљена"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Оштећене зависности су оправљене"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Извор софтвера је додат"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Компонента дистрибуције је омогућена"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Уклоњене преузете датотеке пакета"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Поново подешени инсталирани пакети"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Успешно"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Отказано"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Неуспело"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Инсталирам датотеку"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Инсталирам пакете"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Додајем кључ из датотеке"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Освежавам кеш"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Уклањам поверљиви кључ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Уклањам пакете"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Освежавам пакете"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Надограђујем систем"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Примењујем измене"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Оправљам незавршену инсталацију"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Поправљам инсталиран софтвер"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Додајем извор софтвера"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Омогућавам компоненту дистрибуције"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Поново подешени инсталирани пакети"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Поново подешавам инсталиране пакете"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Претраживање"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Нисам успео да инсталирам датотеку пакета"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Нисам успео да инсталирам софтвер"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "Додавање кључа у списак проверених произвођача програма је неуспешно"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Нисам успео да обновим списак софтвера"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Нисам успео да уклоним продавца са листе поверљивих"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Нисам успео да уклоним софтвер"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Нисам успео да освежим софтвер"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Нисам успео да надоградим систем"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Нисам успео да применим измене софтвера"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Нисам успео да оправим незавршену инсталацију"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Нисам успео да оправим оштећене зависности"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Нисам успео да додам извор софтвера"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Нисам успео да омогућим компоненту дистрибуције"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Нисам успео да уклоним преузете датотеке пакета"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Претрага није успела"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Додајем кључ лиценце"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Проверите вашу интернет везу."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Проверите да ли користите незваничне ризнице. Уколико их користите, "
+"искључите их јер су оне често узрок проблема.\n"
+"Касније покрените следећу наредбу у Терминалу: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Датотека коју сте изабрали је оштећена или не представља ГПГ кључ."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Не могу да уклоним изабрани кључ. Проверите да ли сте обезбедили важећи "
+"отисак прста."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Проверите да тренутно можда нисте покренули неки други алат за управљање "
+"софтвером, нпр. Синаптик или аптитјуд. Допуштено је да само један алат може "
+"да врши измене у исто време."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Ово је врло озбиљан проблем. Пробајте касније. Ако се исти проблем појави и "
+"касније, молимо Вас пошаљите извештај програмерима."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Проверите да ли сте исправно уписали име пакета и да ли сте укључили "
+"одговарајућу ризницу."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Нема никакве потребе за освежавањем."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Нема никакве потребе за инсталирањем"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Нема никакве потребе за уклањањем."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Затражили сте уклањање пакета који је кључни део Вашег система."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Веза са демоном је изгубљена. Највероватније да је позадински демон изненада "
+"прекинуо с радом."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Инсталација или уклањање софтверског пакета није успела."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Затражена функција није подржана."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Изгледа да постоји програмерска грешка у апт позадинцу, програму који вам "
+"омогућава да инсталирате/уклањате програме као и да обављате друге послове у "
+"вези управљања пакетима."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ова грешка може бити изазвана захтевањем додатних софтверских пакета који "
+"недостају или нису инстаљиви. Такође може постојати сукоб између софтверских "
+"пакета којима није дозвољено да буду инсталирани у исто време."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Овај захват укључује инсталирање пакета из непроверених извора."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Инсталација можда није успела због грешке у одговарајућем софтверском пакету "
+"или је отказана на неодговарајући начин. Морате да поправите ово пре него "
+"што будете могли да инсталирате или уклоните будући софтвер."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Молим умножите датотеку на ваш локални рачунар и проверите овлашћења "
+"датотеке."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Инсталирање пакета који крше стандарде квалитета није дозвољено. То може "
+"изазвати озбиљне проблеме на вашем рачунару. Молим контактирајте особу или "
+"организацију која је обезбедила овај пакет и укључите детаље испод."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Преузети кључ лиценце који је потребан за покретање овог програма није "
+"исправан или не може бити исправно инсталиран.\n"
+"Погледајте појединости за више података."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Све доступне надоградње су већ инсталиране."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Кључ лиценце који вам омогућава да користите овај програм не може бити "
+"преузет. Проверите вашу мрежну везу."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Нисте овлашћени да извршите овај захват."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Унели сте погрешну лозинку или сте поништили овлашћивање.\n"
+"Такође, можда је узрок ове грешке техничке природе. Ако нисте видели прозор "
+"за унос лозинке онда ваше графичко окружење нема PolicyKit."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Нисам успео да преузмем датотеке пакета"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Нисам успео да преузмем информације ризнице"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Зависности пакета не могу бити решене"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Систем пакета је оштећен"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Кључ није инсталиран"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Кључ није уклоњен"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Нисам успео да закључам управника пакета"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Нисам успео да учитам списак пакета"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакет не постоји"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Пакет је већ ажуриран"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакет је већ инсталиран"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакет није инсталиран"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Нисам успео да уклоним кључни пакет система"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Задатак не може бити праћен или контролисан"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Извршавање задатог није успело"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Захтева инсталирање неповерљивих пакета"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Претходна инсталација није била завршена"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Пакет је лошег квалитета"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Датотека пакета не може бити отворена"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Неподржана функција"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Нисам успео да преузмем кључ лиценце"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Нисам успео да инсталирам кључ лиценце"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Систем је већ ажуриран"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Неуспех при овлашћивању."
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Нисте овлашћени да извршите овај захват"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Дошло је до грешке којом се не може управљати"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Чекам на услугу да започне"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Чекам"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Чекам на затражени медијум"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Чекам на друге управнике пакета да заврше"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Чекам на промпт датотеке подешавања"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Извршавам задатак"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Преузимам"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Пропитујем изворе софтвера"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Чистим"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Завршено"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Отказујем"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Уносим списак софтвера"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Инсталирам „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Подешавам „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Уклањам „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Уклањам потпуно %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Бележим нестанак за %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Извршавам пост-инсталационе белешке „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Надограђујем „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Распакивам %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Припремам „%s“ за инсталацију"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Припремам подешавање за „%s“"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Припремам „%s“ за уклањање"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Припремам „%s“ за потпуно уклањање"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s је инсталиран"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s је уклоњен потпуно"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Уклоњено %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Урађено"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Потврђивање идентитета није успело"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Набављам"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Мирујем"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Мрежа није доступна"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Обрађујем %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Преузето је %sB од %sB при %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Преузето је %sB од %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Детаљи"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Датотека"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Преузето је %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Преузето је"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Потребан је „%s“ ЦД/ДВД диск"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Убаците доле наведени ЦД/ДВД диск у уређај „%s“ да би са њега инсталирали "
+"софтверске пакете."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "Н_астави"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Инсталирај"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Поново инсталирај"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Уклони"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Избаци"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Надогради"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Разгради"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Прескочи надоградњу"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Молим погледајте списак промена испод."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Додатни софтвер мора да буде инсталиран"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Додатни софтвер мора да буде поново инсталиран"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Додатни софтвер мора да буде уклоњен"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Додатни софтвер мора да буде избачен"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Додатни софтвер мора да буде надограђен"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Додатни софтвер мора да буде разграђен"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Исправке ће бити прескочене"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Додатне измене су захтеване"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB укупно ће бити преузето."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB простора на диску биће ослобођено."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB простора на диску ће бити још искоришћено."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Да ли да заменим Ваше измене у „%s“ с најновијом верзијом датотеке "
+"подешавања?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Ако не знате зашто је датотека већ тамо, обично је сигурно заменити је."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Измене"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Задржи"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "За_мени"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Детаљи"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Чекам на „%s“ да заврши"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Преузимам %(files)s"
+msgstr[1] "Преузимам „%(files)s“"
+msgstr[2] "Преузимам „%(files)s“"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "локална ризница"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Преузимам из %s"
+msgstr[1] "Преузимам из %s"
+msgstr[2] "Преузимам из %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Структура за %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Опис за %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Потпис описа за %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Доступни пакети из %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Доступни извори из %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Доступни преводи од %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Преводи за %s (%s) од %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Преводи за %s од %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Преводи (%s) из %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Пакет „%s“ није доступан"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Пакет „%s“ није инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Верзија %s „%s“ пакета није инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Пакет „%s“ је већ инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Верзија %s „%s“ пакета није доступна."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Адреса кључног сервера је неисправна: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Неисправан протокол сервера: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Неважећи ИБ кључа: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Нисам успео да преузмем и да инсталирам кључ „%s“ са „%s“:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Датотека кључа „%s“ не може бити инсталирана: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Кључ са отиском „%s“ не може бити уклоњен: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Пакет „%s“ не може бити уклоњен."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Верзија %s „%s“ пакета није инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Бивша верзија %s „%s“ пакета је већ инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Верзија %s „%s“ пакета је већ инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Верзија %s „%s“ пакета није доступна"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Треба да наведете верзију на коју ће „%s“ бити разграђен"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Каснија верзија %s „%s“ пакета је већ инсталирана"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Пакет „%s“ није доступан у издању %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Пакет „%s“ не може бити уклоњен"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Пакет не обезбеђује исправно поље за контролу инсталиране величине. "
+"Погледајте Дебиан сигурност 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Кључ лиценце је празан"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Није дозвољено да кључ лиценце садржи извршни код."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Путања кључа лиценце %s није исправна."
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Кључ лиценце већ постоји: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Место кључа лиценце није безбедно јер садржи симболичне везе. Путања %s "
+"укаазује на %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Директоријум за инсталирање кључа не постоји још увек: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Нисам успео да запишем датотеку кључа у: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Следећи пакети имају незадовољене међузависности:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "али то је виртуелни пакет"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "али није инсталиран"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "али неће бити инсталиран"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "али инсталиран је „%s“"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "али биће инсталиран „%s“"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "Нисам успео да додам кључ на листу поверљивих продаваца софтвера"
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..9f9456f
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1485 @@
+# Swedish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-03 15:40+0000\n"
+"Last-Translator: Arve Eriksson <Unknown>\n"
+"Language-Team: Swedish <sv@li.org>\n"
+"Language: sv\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Lista nycklar för pålitliga leverantörer"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Du måste autentisera dig för att visa listan över pålitliga nycklar."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Ta bort hämtade paketfiler"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Du måste autentisera dig för att tömma hämtade paketfiler."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Ändra programkonfiguration"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Du måste autentisera dig för att ändra programinställningar."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Ändra programförråd"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+"Du måste autentisera dig för att ändra inställningar för programförråd."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Installera paketfil"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Du måste autentisera dig för att installera detta paket."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Uppdatera paketinformation"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Du måste autentisera dig för att uppdatera programkatalogen."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Installera eller ta bort paket"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Du måste autentisera dig för att installera eller ta bort program."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Lägg till ett nytt förråd och installera paket från det"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Du måste autentisera dig för att installera program från en ny källa."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"Lägg till ett nytt förråd för inköpta program och installera paket från det"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Du måste autentisera dig för att installera inköpta program."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Uppgradera paket"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Du måste autentisera dig för att installera uppdaterade program."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Avbryt åtgärden för en annan användare"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Du måste autentisera dig för att avbryta någon annans programändringar."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Ställ in en proxyserver för programhämtningar"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Du måste autentisera dig för att använda en proxyserver för att hämta "
+"program."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "FEL"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Hämtat %sB av %sB i %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Hämtat %sB av %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "FEL:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Du har inte behörighet att genomföra denna åtgärd."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Kölägger"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Löser beroenden"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Följande NYTT paket kommer att installeras (%(count)s):"
+msgstr[1] "Följande NYA paket kommer att installeras (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Följande paket kommer att uppgraderas (%(count)s):"
+msgstr[1] "Följande paket kommer att uppgraderas (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Följande paket kommer att TAS BORT (%(count)s):"
+msgstr[1] "Följande paket kommer att TAS BORT (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Följande paket kommer att NEDGRADERAS (%(count)s):"
+msgstr[1] "Följande paket kommer att NEDGRADERAS (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Följande paket kommer att installeras om (%(count)s):"
+msgstr[1] "Följande paket kommer att installeras om (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Följande paket har hållits tillbaka (%(count)s):"
+msgstr[1] "Följande paket har hållits tillbaka (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Behöver hämta %sB arkiv."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Efter denna åtgärd kommer ytterligare %sB diskutrymme att användas."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Efter denna åtgärd kommer %sB diskutrymme att frigöras."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Vill du fortsätta [J/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Ange paketnamnet inom citattecken för att göra åtgärder på fler än ett "
+"paket:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Uppdatera cachen"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Försök att lösa trasiga beroenden. Potentiellt sett en farlig åtgärd "
+"eftersom den kan försöka att ta bort många paket."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Försök att färdigställa en tidigare ofullständig installation"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Installera angivna paket"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Installera om angivna paket"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Ta bort angivna paket"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Ta bort angivna paket inklusive konfigurationsfiler"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Nedgradera de angivna paketen"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Föråldrad: Använd --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Uppgradera systemet på ett säkert sätt"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Uppgradera systemet, möjligen installera och ta bort paket"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Lägg till leverantören till de pålitliga"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Lägg till leverantörens nyckel-id (kräver också --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Använd angiven nyckelserver för att slå upp nycklar"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Lägg till nytt förråd från angiven deb-rad"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Ange en alternativ sources.list.d-fil som vilka förråden ska läggas till i."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Lista pålitliga leverantörsnycklar"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Ta bort pålitlig nyckel för angivet fingeravtryck"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Konfigurera om installerade paket. Det går även att valfritt ange minsta "
+"prioritet för frågor"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Minsta prioritet för debconf-frågor att visa"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Anslut inte till apt-terminalen"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Tillåt paket från icke-autentiserade källor"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Visa ytterligare information om paketen. För närvarande endast versionsnumret"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Väntar på autentisering"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Stäng inte av daemonen på grund av inaktivitet"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Läs inte in några insticksmoduler"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Visa intern processinformation"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Avsluta och ersätt en redan körande demon"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Lyssna på DBus-sessionsbussen (krävs endast för tester"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Genomför åtgärder i angivet chroot-miljö"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Lagra profilstatistik i angiven fil"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Gör inte några ändringar i systemet (endast för utvecklare)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Installerade fil"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Installerade paket"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Lade till nyckel från fil"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Uppdaterade cache"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Sökningen är färdig"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Tog bort pålitlig nyckel"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Tog bort paket"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Uppdaterade paket"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Uppgraderade systemet"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Verkställde ändringar"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Reparerade ofullständig installation"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Reparerade trasiga beroenden"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Lade till programkälla"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Aktiverade komponent för distributionen"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Tog bort hämtade paketfiler"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Konfigurera om installerade paket"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Lyckades"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Avbruten"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Misslyckades"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Installerar fil"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Installerar paket"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Lägger till nyckel från fil"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Uppdaterar cache"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Tar bort pålitlig nyckel"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Tar bort paket"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Uppdaterar paket"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Uppgraderar systemet"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Verkställer ändringar"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Reparerar ofullständig installation"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Reparerar installerad programvara"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Lägger till programkälla"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Aktiverar komponent för distributionen"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Tar bort hämtade paketfiler"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Konfigurerar om installerade paket"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Söker"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Installation av paketfilen misslyckades"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Installation av programvaran misslyckades"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Uppdatering av programlistan misslyckades"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Borttagning av leverantören från listan över pålitliga leverantörer "
+"misslyckades"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Borttagning av programvaran misslyckades"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Uppdatering av programvaran misslyckades"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Uppgradering av systemet misslyckades"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Verkställandet av programändringar misslyckades"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Reparation av ofullständig installation misslyckades"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Reparation av trasiga beroenden misslyckades"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Tillägg av programkällan misslyckades"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Aktivering av komponent för distributionen misslyckades"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Borttagning av hämtade paketfiler misslyckades"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Sökningen misslyckades"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Lägger till licensnyckel"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kontrollera din internetanslutning."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kontrollera om du använder tredjepartsförråd. Inaktivera dem i så fall "
+"eftersom de är en vanlig problemkälla.\n"
+"Kör även följande kommando i en terminal: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Den valda filen verkar inte vara en GPG-nyckel eller så är filen trasig."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Den valda nyckeln kunde inte tas bort. Kontrollera att du angav ett giltigt "
+"fingeravtryck."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kontrollera om du för närvarande kör ett annat verktyg för programhantering, "
+"tex. Synaptic eller aptitude. Endast ett verktyg åt gången tillåts att göra "
+"ändringar."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Detta är ett allvarligt problem. Försök igen senare. Om problemet sker igen "
+"så rapportera detta som ett fel till utvecklarna."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Kontrollera stavningen av paketnamnet och att rätt förråd är aktiverat."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Det finns inget behov för en uppdatering."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Det finns inget behov för en installation"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Det finns inget behov för en borttagning."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Du begärde att ta bort ett paket som är en systemkritisk del av ditt system."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Anslutningen till demonen tappades. Mest sannolikt är att bakgrundsdemonen "
+"kraschade."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Installationen eller borttagningen av ett programpaket misslyckades."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Den begärda funktionen stöds inte."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Det verkar finnas ett programmeringsfel i aptdaemon, programvaran som låter "
+"dig installera/ta bort program och genomföra andra åtgärder relaterade till "
+"pakethantering."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Detta fel kan orsakas av att ytterligare nödvändiga programpaket saknas "
+"eller inte är installerbara. Det kan även finnas en konflikt mellan "
+"programpaket som inte tillåts att installeras på samma gång."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Installationen kan ha misslyckats på grund av ett fel i programpaketet eller "
+"att den avbröts på ett onormalt sätt. Du måste reparera detta innan du kan "
+"installera eller ta bort ytterligare program."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "Kopiera filen till din lokala dator och kontrollera filrättigheterna."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Installation av ett paket som strider mot kvalitetsstandarderna tillåts "
+"inte. Detta kan orsaka allvarliga problem på din dator. Kontakta personen "
+"eller organisationen som tillhandahöll denna paketfil och inkludera "
+"nedanstående information."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Den hämtade licensnyckeln som krävs för att köra denna programvara är inte "
+"giltig eller kunde inte installeras korrekt.\n"
+"Se detaljerad information för ytterligare felsökning."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Alla tillgängliga uppgraderingar har redan installerats."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Licensnyckeln som låter dig använda denna programvara kunde inte hämtas. "
+"Kontrollera din nätverksanslutning."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Du har inte behörighet att genomföra denna åtgärd."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Misslyckades med att hämta paketfiler"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Misslyckades med att hämta förrådsinformation"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Paketberoenden kan inte lösas"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Paketsystemet är trasigt"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Nyckeln installerades inte"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Nyckeln togs inte bort"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Misslyckades med att låsa pakethanteraren"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Misslyckades med att läsa in paketlistan"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paketet finns inte"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paketet är redan uppdaterat"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paketet är redan installerat"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paketet är inte installerat"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Misslyckades med att ta bort ett systemkritiskt paket"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Åtgärden kan inte övervakas eller kontrolleras"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Paketåtgärden misslyckades"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Kräver installation av ej pålitliga paket"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Tidigare installation har inte färdigställts"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paketet är av dålig kvalitet"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Paketfilen kunde inte öppnas"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Funktionen stöds inte"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Misslyckades med att hämta licensnyckeln"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Misslyckades med att installera licensnyckeln"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Systemet är redan uppdaterat"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Ett ohanterat fel inträffade"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Väntar på att tjänsten ska starta"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Väntar"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Väntar på nödvändigt media"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Väntar på att andra programhanterare ska avslutas"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Väntar på prompt för konfigurationsfil"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Kör aktivitet"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Hämtar"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Kontrollerar programkällor"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Rensar upp"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Färdig"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Avbryter"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Läser in programlista"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Installerar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Konfigurerar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Tar bort %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Tar fullständigt bort %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Uppmärksammar att %s försvinner"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Kör efterinstallationsutlösare %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Uppgraderar %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Packar upp %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Förbereder installation av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Förbereder konfiguration av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Förbereder borttagning av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Förbereder fullständig borttagning av %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Installerade %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Tog bort hela %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Tog bort %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Färdig"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Autentisering misslyckades"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Hämtar"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Overksam"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Nätverket är inte tillgängligt"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Behandlar %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Hämtat %sB av %sB i %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Hämtat %sB av %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Detaljer"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Fil"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Hämtat %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Hämtat"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Cd/dvd-skivan \"%s\" krävs"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Mata in ovanstående cd/dvd-skiva i enheten \"%s\" för att installera "
+"programpaket från den."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "F_ortsätt"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Installera"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Installera om"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Ta bort"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Rensa"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Uppgradera"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Nedgradera"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Hoppa över uppgradering"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Ta en titt på ändringslistan nedan."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Ytterligare program behöver installeras"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Ytterligare program behöver installeras om"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Ytterligare program behöver tas bort"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Ytterligare program behöver rensas bort"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Ytterligare program behöver uppgraderas"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Ytterligare program behöver nedgraderas"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Uppdateringar kommer att hoppas över"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Ytterligare ändringar krävs"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB kommer totalt att hämtas."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB diskutrymme kommer att frigöras."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB ytterligare diskutrymme kommer att användas."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Ersätt dina ändringar i \"%s\" med en senare version av konfigurationsfilen?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Om du inte vet varför filen redan finns där så är det oftast det bästa att "
+"ersätta den."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Ändringar"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Behåll"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Ersätt"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detaljer"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Väntar på att %s ska avslutas"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Hämtar %(files)s"
+msgstr[1] "Hämtar %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "lokalt förråd"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Hämtar från %s"
+msgstr[1] "Hämtar från %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Struktur för %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Beskrivning för %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Beskrivningssignatur för %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Tillgängliga paket från %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Tillgängliga källor från %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Tillgängliga översättningar från %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Översättningar till %s (%s) från %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Översättningar till %s från %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Översättningar (%s) från %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Paketet %s finns inte tillgängligt"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Paketet %s är inte installerat"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Version %s av %s är inte installerat"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Paketet %s är redan installerat"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Version %s av %s finns inte tillgänglig."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Misslyckades med att hämta och installera nyckeln %s från %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Nyckelfilen %s gick inte att installera: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Nyckeln med fingeravtrycket %s kunde inte tas bort: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Paketet %s kan inte tas bort."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Version %s av %s är inte installerad"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Den tidigare versionen %s av %s är redan installerad"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Version %s av %s är redan installerad"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Version %s av %s finns inte tillgänglig"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Du måste ange en version att nedgradera %s till"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Den senare versionen %s av %s är redan installerad"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Paketet %s finns inte tillgängligt i utgåvan %s."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Paketet %s kan inte tas bort"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Paketet tillhandahåller inte ett giltigt Installed-Size-kontrollfält. Se "
+"Debian Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Licensnyckeln är tom"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Licensnyckeln får inte innehålla körbar kod."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Sökvägen till licensnyckeln %s är ogiltig"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Licensnyckeln finns redan: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Licensnyckelns plats är osäker eftersom den innehåller symboliska länkar. "
+"Sökvägen %s mappas till %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Katalogen där nyckeln ska installeras finns ännu inte: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Kunde inte skriva nyckelfilen till: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Följande paket har otillfredsställda beroenden:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "men det är ett virtuellt paket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "men är inte installerat"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "men kommer inte att installeras"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "men %s är installerat"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "men %s kommer att installeras"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Misslyckades med att lägga till nyckeln till listan över pålitliga "
+#~ "programleverantörer"
diff --git a/po/ta.po b/po/ta.po
new file mode 100644
index 0000000..d2e7649
--- /dev/null
+++ b/po/ta.po
@@ -0,0 +1,1425 @@
+# Tamil translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-12-15 16:33+0000\n"
+"Last-Translator: Barneedhar <barneedhar@gmail.com>\n"
+"Language-Team: Tamil <ta@li.org>\n"
+"Language: ta\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "நம்பகமான விற்பனையாளர்களின் சாவிகளைப் பட்டியலிடவும்"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "நம்பகமான சாவிகள் பட்டியலைக் காண வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "பதிவிறக்கப்பட்ட தொகுப்பு கோப்புகளை நீக்கவும்"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"பதிவிறக்கப்பட்ட தொகுப்புக் கோப்புகளை சுத்தம் செய்யவேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "மென்பொருள் கட்டமைப்பை மாற்றவும்"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "மென்பொருள் அமைப்புகளை மாற்றவேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "மென்பொருள் களஞ்சியத்தை மாற்றவும்"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "மென்பொருள் களஞ்சிய அமைப்புகளை மாற்றவேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "பொதிக் கோப்பை நிறுவு"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "இந்த தொகுப்பை நிறுவ வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "பொதித் தகவலை இற்றைப்படுத்து"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "மென்பொருள் வரிசைப்பட்டியலைப் புதுப்பிக்க வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "தொகுப்புகளை நிறுவுக அல்லது நீக்குக"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "மென்பொருள்களை நிறுவவோ அல்லது நீக்கவோ வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "புதிய களஞ்சியத்தைச் சேர்த்து, அதிலிருந்து தொகுப்புகளை நிறுவவும்"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"புதிய மூலத்தில் இருந்து மென்பொருள்களை நிறுவ வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+"விற்பனைக்கிருக்கும் மென்பொருள்களைக் கொண்டிருக்கும் புதிய களஞ்சியத்தைச் சேர்த்து, அதிலிருந்து "
+"தொகுப்புகளை நிறுவவும்"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "வாங்கப்பட்ட மென்பொருள்களை நிறுவ வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "பொதிகளை திறமுயர்த்து"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "புதுப்பிக்கப்பட்ட மென்பொருள்களை நிறுவ வேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "மற்ற பயனாளரின் பணியை ரத்து செய்யவும்"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "மற்றவரின் மென்பொருள் மாற்றங்களை ரத்து செய்யவேண்டுமானால், நீங்கள் அங்கீகரிக்க வேண்டும்."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "மென்பொருள் பதிவிறக்கங்களுக்கு பதிலியை அமைக்கவும்"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"மென்பொருளைப் பதிவிறக்குவதற்கு பதிலி சேவையகத்தைப் பயன்படுத்த வேண்டுமானால், நீங்கள் "
+"அங்கீகரிக்க வேண்டும்."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "பிழை"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB %sB லிருந்து %sB/s வேகத்தில் பதிவிறக்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "%sB %sB லிருந்து பதிவிறக்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "பிழை:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "கொடுக்கப்பட்டுள்ளத் தொகுப்புகளை நிறுவவும்"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "கொடுக்கப்பட்டுள்ளத் தொகுப்புகளை மீண்டும் நிறுவவும்"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "கொடுக்கப்பட்டுள்ளத் தொகுப்புகளை நீக்கவும்"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "பாதுக்காப்பான முறையில் கணினியை மேம்படுத்துக"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "நம்பகமான விற்பனையாளர் சாவிகளைப் பட்டியலிடவும்"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "அங்கீகரிக்கப்படாத மூலங்களிலிருந்து தொகுப்புகளை அனுமதிக்கவும்"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "அங்கீகாரத்திற்காக காத்திருக்கிறது"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "உட்புற செயலாக்கத் தகவலைக் காண்பிக்கவும்"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "நிறுவப்பட்ட கோப்பு"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "நிறுவப்பட்ட பொதிகள்"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "கோப்பிலிருந்து சாவி சேர்க்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "தேடல் முடிந்தது"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "நீக்கப்பட்ட பொதிகள்"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "இற்றைப்படுத்தப்பட்ட பொதிகள்"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "திறமுயர்த்தப்பட்ட அமைப்பு"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "மென்பொருள் மூலம் சேர்க்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "பதிவிறக்கப்பட்ட தொகுப்புக் கோப்புகள் நீக்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "வெற்றிகரமாக முடிந்தது"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "இரத்து செய்யப்பட்டது"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "கோப்பை நிறுவுகிறது"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "பொதிகளை நிறுவுகிறது"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "பொதிகளை நீக்குகிறது"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "பொதிகளை இற்றைப்படுத்துகிறது"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "அமைப்பை திறமுயர்த்துகிறது"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "மாற்றங்களை செயல்படுத்துகிறது"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "மென்பொருள் மூலம் சேர்க்கப்படுகிறது"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "பதிவிறக்கப்பட்ட தொகுப்புக் கோப்புகள் நீக்கப்படுகிறது"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "தேடப்படுகிறது"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "மென்பொருளை நீக்குவது தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "மென்பொருளைப் புதுப்பிப்பது தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "கணினியை மேம்படுத்துவது தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "மென்பொருள் மூலத்தைச் சேர்ப்பது தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "பதிவிறக்கப்பட்டத் தொகுப்புக் கோப்புகளை நீக்குவது தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "தேடல் தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "உமது இணைய இணைப்பை சோதிக்கவும்."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "காத்துக் கொண்டிருக்கிறது"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "பதிவிறக்கப்படுகிறது"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "முடிந்தது"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "ரத்து செய்யப்படுகிறது"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "முடிவுற்றது"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "அங்கீகாரம் தோல்வியடைந்தது"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB %sB லிருந்து %sB/s வேகத்தில் பதிவிறக்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "%sB %sB லிருந்து பதிவிறக்கப்பட்டுள்ளது"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "விவரங்கள்"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "கோப்பு"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "பதிவிறக்கப்பட்டது %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "பதிவிறக்கப்பட்டது"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "தொடரவும் (_o)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "நிறுவுக"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "மீண்டும் நிறுவுக"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "நீக்குக"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "மேம்படுத்துக"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "மாற்றங்கள் (_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "வைத்துக்கொள்க (_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "மாற்று (_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "விவரங்கள் (_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/te.po b/po/te.po
new file mode 100644
index 0000000..36f023b
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,1420 @@
+# Telugu translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-03-28 03:43+0000\n"
+"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
+"Language-Team: Telugu <te@li.org>\n"
+"Language: te\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "నమ్మదగిన అమ్మకందారు యొక్క కీలను జాబితాగాచూపు"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "విశ్వసించిన 'కీ'ల జాబితాను చూచుటకు, మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "డౌన్‌లోడ్ చేసిన ప్యాకేజీ ఫైళ్ళను తొలగించు"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "డౌన్‌లోడ్‌చేయబడిన ప్యాకేజీ ఫైళ్లను శుభ్రంచేయుటకు మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "సాఫ్ట్‍వేర్ స్వరూపణాన్ని మార్చు"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "సాఫ్ట్‍వేర్ అమరికలను మార్చుటకు మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "సాఫ్ట్‍వేర్ భాండాగారాన్ని మార్చు"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "సాఫ్ట్‍వేర్ భాండాగార అమరికలను మార్చుటకు మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "ప్యాకేజీ ఫైల్‌ని స్థాపించు"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "ఈ ప్యాకేజీని స్థాపించుటకు, మీరు ధృవీకరించవలసి ఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "ప్యాకేజీ సమాచారాన్ని నవీకరించు"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "సాఫ్ట్‍వేర్ జాబితాను నవీకరించుటకు మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "ప్యాకేజీలను స్థాపించు లేదా తొలగించు"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "సాఫ్ట్‍వేర్ స్థాపించుటకు లేదా తొలగించుటకు, మీరు ధృవీకరించవలసిఉంటుంది."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "ఒక కొత్త భాండాగారాన్ని జతచేసి దానినుండి ప్యాకేజీలను స్థాపించు"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "ఒక కొత్త మూలాధారం నుండి సాఫ్ట్‍వేర్ స్థాపించుటకు, మీరు ధృవీకరించవలసివుంటుంది."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "కొనుగోలుచేసిన సాఫ్ట్‍వేర్ యొక్క కొత్త భాండాగారాన్ని జతచేసి దానినుండి ప్యాకేజీలను స్థాపించు"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "కొన్న సాఫ్ట్‍వేర్ స్థాపించుటకు, మీరు ధృవీకరించవలసి ఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "ప్యాకేజీలను ఉన్నతీకరించు"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "నవీకరించబడిన సాఫ్ట్‍వేర్ స్థాపించుటకు, మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "ఇంకొక వాడుకరి యొక్క కార్యాన్ని రద్దుచేయి"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "వేరేఇతర సాఫ్ట్‍వేర్ మార్పులను రద్దుచయుటకు మీరు ధృవీకరించవలసిఉంటుంది."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "సాఫ్ట్‍వేర్ డౌన్‌లోడ్‌లకు ఒక ప్రోక్సీని అమర్చు"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "ప్రోక్సీ సేవిక వాడి సాఫ్ట్‍వేర్ డౌన్‌లోడ్‌చేయుటకు, మీరు ధృవీకరణ చేయవలసిఉంటుంది."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "దోషం"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "దోషం:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "ఈ చర్యను చేయుటకు మీకు అనుమతి లేదు"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "వరుసలోచేరుస్తోంది"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "ఆధారితత్వాలను పరిష్కరిస్తోంది"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "కిందపేర్కొన్న కొత్త ప్యాకేజీ స్థాపించబడుతుంది (%(count)s):"
+msgstr[1] "కిందపేర్కొన్న కొత్త ప్యాకేజీలు స్థాపించబడతాయి (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "కిందపేర్కొన్న ప్యాకేజీ ఉన్నతీకరించబడతుంది (%(count)s):"
+msgstr[1] "కిందపేర్కొన్న ప్యాకేజీలు ఉన్నతీకరించబడతాయి (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "కిందపేర్కొన్న ప్యాకేజీ తొలగించబడుతుంది (%(count)s):"
+msgstr[1] "కిందపేర్కొన్న ప్యాకేజీలు తొలగించబడతాయి (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "కిందపేర్కొన్న ప్యాకేజీ డౌన్‌గ్రేడ్‌చేయబడుతుంది (%(count)s):"
+msgstr[1] "కిందపేర్కొన్న ప్యాకేజీలు డౌన్‌గ్రేడ్‌చేయబడుతాయి (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "కిందపేర్కొన్న ప్యాకేజీ పునఃస్థాపించబడుతుంది (%(count)s):"
+msgstr[1] "కిందపేర్కొన్న ప్యాకేజీలు పునఃస్థాపించబడతాయి (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB ఆర్చీవ్‌లను పొందవలసిఉంది."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "ఈ ఆపరేషన్ తరువాత, %sB డిస్కు స్థలం అదనంగా వినియోగించబడుతుంది."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "ఈ ఆపరేషన్ తరువాత, %sB డిస్కు స్థలం అదనంగా ఖాళీ అవుతుంది."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "మీరు కొనసాగాలనుకుంటున్నారా [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "క్యాచీని తాజాపరుచు"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "ఇంతకుముందు అసంపూర్ణ స్థాపనను పూర్తిచేయుటకు ప్రయత్నించండి"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "ఇవ్వబడిన ప్యాకేజీలను స్థాపించు"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "ఇవ్వబడిన ప్యాకేజీలను మళ్ళీ స్థాపించు"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "ఇవ్వబడిన ప్యాకేజీలను తొలగించు"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "సురక్షిత మార్గంలో వ్యవస్థను ఉన్నతీకరించు"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "సాధ్యమైనంతవరకూ ప్యాకేజీలను స్థాపించడం మరియు తొలగించడం ద్వారా వ్యవస్థను ఉన్నతీకరించు"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "ఇవ్వబడిన deb-line నుంచి కొత్త భాండాగారాన్ని జతచేయండి"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "విశ్వసించదగిన అమ్మకందారు 'కీ'లు జాబితాగాచూపు"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "ధృవీకరించబడని మూలాధారాల నుండి ప్యాకేజీలను అనుమతించు"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "ప్యాకేజీల గురించిన అదనపు సమాచారాన్ని చూపించు. ప్రస్తుతం వెర్షన్ సంఖ్య మాత్రమే"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "ధృవీకరణ కోసం నిరీక్షిస్తోంది"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "అంతర్గతంగా జరుగుతున్న ప్రక్రియ సమాచారాన్ని చూపించు"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "ఇవ్వబడిన chroot లో ఆపరేషన్‌లను చేయి"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "స్థాపించబడిన ఫైల్"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "స్థాపించబడిన ప్యాకేజిలు"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "ఫైలు నుంచి కీ జతచేయబడింది"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "క్యాచీ నవీకరించబడింది"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "నమ్మదగిన కీ తొలగించబడింది"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "తొలగించబడిన ప్యాకేజీలు"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "నవీకరించబడిన ప్యాకేజీలు"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "ఉన్నతీకరించబడిన వ్యవస్థ"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "మార్పులు అనువర్తించబడినవి"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "అసంపూర్ణ స్థాపన బాగుచేయబడింది"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "విరిగిన ఆధారితత్వాలు బాగుచేయబడినవి"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "సాఫ్ట్‍వేర్ మూలాధారం జతచేయడింది"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "డౌన్‌లోడ్‌చేసిన ప్యాకేజీ ఫైళ్ళు తొలగించబడ్డాయి"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "స్థాపించబడిన ప్యాకేజీలు పునఃస్వరూపించబడ్డాయి"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "విజయవంతమైంది"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "రద్దుచేయబడింది"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "విఫలమైంది"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ఫైలును స్థాపిస్తోంది"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "ప్యాకేజీలు స్థాపించబడుతున్నాయి"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ఫైల్ నుండి కీ జతచేస్తోంది"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "క్యాచీని నవీకరిస్తోంది"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "నమ్మదగిన కీ తొలగించబడుతోంది"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "ప్యాకేజీలను తొలగిస్తోంది"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "ప్యాకేజీలను నవీకరిస్తోంది"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "వ్యవస్థను ఉన్నతీకరిస్తోంది"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "మార్పులను అనువర్తిస్తోంది"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "అసంపూర్ణ స్థాపనను బాగుచేస్తోంది"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "సాఫ్ట్‍వేర్ మూలాధారం జతచేయబడుతోంది"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "డౌన్‌లోడుచేసిన ప్యాకేజీ ఫైళ్ళను తొలగిస్తోంది"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "స్థాపించబడిన ప్యాకేజీలు పునఃస్వరూపించబడుతోన్నాయి"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "ప్యాకేజీ ఫైల్ యొక్క స్థాపన విఫలమైంది"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "సాఫ్ట్‍వేర్ స్థాపన విఫలమైంది"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "సాఫ్ట్‍వేర్ జాబితాను తాజాపరుచుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "సాఫ్ట్‍వేర్‌ను తొలగించుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "సాఫ్ట్‍వేర్‌ను నవీకరించుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "వ్యవస్థను ఉన్నతీకరించుటలో విఫలమైనది"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "సాఫ్ట్‍వేర్ మార్పులు అనువర్తించుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "అసంపూర్ణ స్థాపనను బాగుచేయుటలో విఫలమయింది"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "విరిగిన ఆధారితత్వాలను బాగుచేయుటలే విఫలమైంది"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "సాఫ్ట్‍వేర్ మూలాధారం జతచేయుటలో విఫలమైనది"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "డౌన్‌లోడుచేసిన ప్యాకేజీ ఫైళ్ళను తొలగించుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "మీ అంతర్జాల అనుసంధానాన్ని సరిచూడండి."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "తొలగించడానికి అక్కడ ఏదీ లేదు."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "ఈ చర్యను చేయుటకు మీకు అనుమతి లేదు"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "ప్యాకేజీ ఫైళ్ళను డౌన్‌లోడుచేయుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "భాండాగార సమాచారాన్ని డౌన్‌లోడ్‌చేయుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "ప్యాకేజీ వ్యవస్థ విరిగినది"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "కీ స్థాపించబడలేదు"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "కీ తొలగించబడలేదు"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "ప్యాకేజీ నిర్వాహకిని లాక్‌చేయుటలో విఫలంచెందినది"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "ప్యాకేజీ జాబితా లోడ్ చేయుటలో విఫలమైంది"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "ప్యాకేజీ ఉనికిలోలేదు"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "ప్యాకేజీ ఇదివరకే స్థాపించడింది"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "ప్యాకేజీ స్థాపించబడలేదు"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "ముఖ్యమైన వ్యవస్థ ప్యాకేజీని తొలగించుటలో విఫలమయ్యింది"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "ప్యాకేజీ ఆపరేషన్ విఫలమైంది"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "ప్యాకేజీ చెత్త గుణాలను కలిగిఉంది"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "ప్యాకేజీ ఫైల్ తెరువలేము"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "ఒక వ్యవహరించలేని దోషం సంభవించింది"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "నిరీక్షిస్తోంది"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "అవసరమైన మాధ్యమం కోసం నిరీక్షిస్తోంది"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "నిష్క్రమించడానికి ఇతర సాఫ్ట్‍వేర్ నిర్వాహకి కోసం నిరీక్షిస్తోంది"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "నడుస్తున్న కార్యం"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "డౌన్‌లోడ్‌చేస్తోంది"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "శుభ్రపరుస్తోంది"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "పూర్తయింది"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "రద్దుచేస్తోంది"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "సాఫ్ట్‍వేర్ జాబితాను నింపుతోంది"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s స్థాపించబడుతోంది"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s స్వరూపించబడుతోంది"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s తొలగించబడుతోంది"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s ఉన్నతీకరించబడుతోంది"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "అయినది"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "ధృవీకరణ విఫలమైంది"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "తెచ్చుచున్నది"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "వాడుక లేని"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "నెట్‌వర్కు అందుబాటులోలేదు"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "వివరాలు"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "ఫైల్"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB డౌన్‌లోడ్అయినది"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "డౌన్‌లోడ్అయినది"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' అవసరం"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "కొనసాగించు (_o)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "స్థాపించు"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "మరల స్థాపించు"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "తొలగించు"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "ఉన్నతీకరించు"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "డౌన్‌గ్రేడ్"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "ఉన్నతీకరణ దాటవేయి"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "అదనపు సాఫ్ట్‍వేర్‌ను స్థాపించాలి"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "అదనపు సాఫ్ట్‍వేర్‌ను పునఃస్థాపించాలి"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "అదనపు సాఫ్ట్‍వేర్‌ను తొలగించాలి"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "అదనపు సాఫ్ట్‍వేర్‌ను ఉన్నతీకరించాలి"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "నవీకరణలు దాటవేయబడతాయి"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "అదనపు మార్పులు అవసరం"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "మార్పులు (_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "ఉంచు(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "పునఃస్థాపించు (_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "వివరాలు (_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s డౌన్‌లోడ్‌చేస్తోంది"
+msgstr[1] "%(files)s డౌన్‌లోడ్‌చేస్తోంది"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "%s ప్యాకేజీ అందుబాటులోలేదు"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "%s ప్యాకేజీ స్థాపించబడలేదు"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s ప్యాకేజీ ఇదివరకే స్థాపించబడింది"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s ప్యాకేజీని తొలగించుట సాధ్యపడదు"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "%s ప్యాకేజీని తొలగించుట సాధ్యపడదు"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/th.po b/po/th.po
new file mode 100644
index 0000000..2b60138
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,1434 @@
+# Thai translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-09-11 01:49+0000\n"
+"Last-Translator: Manop Pornpeanvichanon(มานพ พรเพียรวิชานนท์) <Unknown>\n"
+"Language-Team: Thai <th@li.org>\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "รายการคีย์ของผู้ตัวแทนที่เชื่อถือได้"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อดูรายการกุญแจที่เชื่อถือได้"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "เอาแฟ้มแพกเกจต่าง ๆ ที่ดาว์โหลดมาแล้วออก"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อล้างแฟ้มแพกเกจต่าง ๆ"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "การการตั้งค่าซอฟต์แวร์"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อเปลี่ยนการตั้งค่าโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "เปลี่ยนคลังแพกเกจของโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อทำการเปลี่ยนการตั้งค่าคลังแพกเกจของโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "ติดตั้งแฟ้มของแพกเกจ"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อติดตั้งแพกเกจนี้"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "ปรับข้อมูลแพกเกจ"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อปรับปรุงหมวดหมู่โปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "ติดตั้งและถอดถอนแพกเกจ"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อติดตังหรือถอดถอนโปรแกรม"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "เพิ่มคลังแพกเกจอันใหม่และทำการติดตั้งแพกเกจต่าง ๆ จากคลังนี้"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อติดตั้งแพกเกจจากแหล่งใหม่"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "เพิ่มคลังเก็บโปรแกรมที่ซื้อมาแล้วและใช้ติดตั้งโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อติดตั้งโปรแกรมที่ซื้อมา"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "ปรับรุ่นแพกเกจ"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อติดตั้งการปรับปรุงโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "ยกเลิกงานของผู้ใช้อื่น"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวเพื่อยกเลิกการแก้ไขโปรแกรมของคนอื่น"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "ตั้งพร็อกซีสำหรับดึงโปรแกรม"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "คุณต้องยืนยันตัวในการใช้พร็อกซีทำการดาวน์โหลดโปรแกรม"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ผิดพลาด"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "ดาวน์โหลด %sB แล้วจาก %sB ที่ความเร็ว %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "ดาวน์โหลด %sB แล้วจาก %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ผิดพลาด:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "ไม่คุณไม่ได้รับอนุญาติให้กระทำการนี้"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "กำลังเข้าคิว"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "กำลังแก้ปัญหาการขึ้นต่อกัน"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "แพกเกจใหม่ตามนี้จะถูกติดตั้ง (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "แพกเกจตามนี้จะถูกปรับรุ่นขึ้น (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "แพกเกจตามนี้จะถูกเอาออก (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "แพกเกจ (%(count)s) อันจะถูกปรับรุ่นลง:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "แพกเกจเหล่านี้จะถูกติดตั้งใหม่ (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "แพกเกจพวกนี้ถูกเก็บแล้ว (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "ต้องใช้อีก %sB จากเป้าหมาย"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "พื้นที่ว่างบนแผ่นจะถูกใช้ %sB หลังจากการทำงานนี้"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "จะมีพื้นที่ว่าง %sB หลังจากการทำงานนี้"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "ต้องการทำต่อ [Y/n]"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"ให้ใส่เครื่องหมายคำพูดครอบชื่อแพกเกจเพื่อทำงานพร้อมกันหลาย ๆ แพกเกจ:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "เรียกข้อมูลชั่วคราวใหม่"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr "ลองซ่อมการขึ้นกันที่มีปัญหาดู การกระทำนี้ควรระวังเพราะจะมีการลบแพกเกจจำนวนมาก"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "ลองทำงานติดตั้งที่ยังค้างอยู่ให้เสร็จ"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "ติดตั้งแพกเกจที่จัดให้"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "ติดตั้งแพกเกจที่จัดให้ใหม่"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "เอาแพกเกจที่ระบุออก"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "เอาแพกเกจพร้อมทั้งแฟ้มตั้งค่าที่ระบุออก"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "ปรับรุ่นแพกเกจเหล่านี้ลง"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "ล้าสมัยแล้ว: โปรดใช้ --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "ปรับรุ่นระบบด้วยวิธีที่ปลอดภัย"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "ปรับรุ่นระบบด้วยด้วยการติดตั้งและถอดถอนแพกเกจเพิ่ม"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "เพิ่มผู้จำหน่ายที่เชื่อถือได้"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "เพิ่มผู้จำหน่าย keyid (อาจจะต้องการ --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "มองหากุญแจจากแม่ข่ายกุญแจที่จัดให้"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "เพิ่มคลังแพกเกจใหม่จาก deb-line"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "ระบบแฟ้น sources.list.d อันอื่นเพื่อดูคลังโปรแกรมที่อาจถูกเพิ่ม"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "รายการผู้แจกกุญแจที่เชื่อถือได้"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "เอากุญแจที่เชื่อถือได้ออกตามลายนิวมือที่จัดใหเ้"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "ตั้งค่าแพกเกจที่ถูกติดตั้งแล้วใหม่ ทางเลือกนี้จะมีคำถามที่เกี่ยวกับลำดับความสำคัญน้อยที่สุด"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "ลำดับ defconf คำถามที่ถูกแสดงน้่อยที่สุด"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "ไม่ต้องต่อเข้ากับเทอร์มินัลของ apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "อณุญาติแพกเกจที่ไม่ระบุที่มา"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "แสดงข่าวสารเพิ่มเติ่มเกี่ยวกับแพกเกจตัวนี้ เฉพาะ้เลขรุ่นนี้เท่านั้น"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "กำลังรอการยืนยัน"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "ห้ามปิดดีมอนเพียงเพราะว่ามันไม่ได้ทำงาน"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "แสดงข้อมูลการประมวลผลภายใน"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "ออกและแทนที่ดีมอนที่กำลังทำงานอยู่"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "ฟังที่วาระของ DBUS(เฉพาะทดสอบเท่านั้น)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "ให้กระทำใน chroot ที่จัดให้"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "เก็บสถิติโพรไฟล์ลงในแฟ้มที่ระบุไว้"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "ห้ามทำการเปลี่ยนแปลงระบบ (ใช้เฉพาะนักพัฒนาเท่านั้น)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "แฟ้มที่ถูกติดตั้งแล้ว"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "แพกเกจที่ถูกติดตั้งแล้ว"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "เพิ่มคีย์จากแฟ้มแล้ว"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "ปรับปรุงแคช"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "กุญแจความเชื่อถือถอดถอนแล้ว"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "เแพกเกจที่ถอดถอนแล้ว"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "แพกเกจที่ปรับปรุงแล้ว"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "ระบบที่ปรับรุ่นแล้ว"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "ปรับใช้การเปลี่ยนแปลง"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "ซ่อมการติดตั้งที่ยังไม่เรียบร้อยเสร็จแล้ว"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "ซ่อมแซมการขึ้นต่อกันที่เสียหาย"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "เพิ่มแหล่งโปรแกรมแล้ว"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "ให้องค์ประกอบทำงานแบบกระจ่ายได้"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "เอาแฟ้มแพกเกจที่ดูดมาออก"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "ปรับแต่งแพกเกจที่ถูกติดตั้งแล้วใหม่"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "สำเร็จ"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "ยกเลิกแล้ว"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "ล้มเหลว"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "กำลังติดตั้งแฟ้ม"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "กำลังติดตั้งแพกเกจ"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "กำลังเพิ่มคีย์จากแฟ้ม"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "กำลังปรับปรุงแคช"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "กำลังถอดถอนคีย์ที่เชื่อถือ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "กำลังถอดถอนแพกเกจ"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "กำลังปรับปรุงแพกเกจ"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "กำลังปรับรุ่นระบบ"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "กำลังปรับใช้การเปลี่ยนแปลง"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "ซ่อมแซมการติดตั้งที่ไม่เสร็จ"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "กำลังเพิ่มแหล่งโปรแกรม"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "เปิดการทำงานองค์ประกอบแบบกระจ่าย"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "กำลังเอาแฟ้มแพกเกจที่ดูดมาออก"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "กำลังปรับแต่งแพกเกจที่ถูกติดตั้งแล้วใหม่"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "การติดตั้งแฟ้มจากแพกเกจล้มเหลว"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "การติดตั้งซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "การปรับปรุงรายการซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "การเอาผู้จำหน่ายออกจากรายการที่เชื่อถือได้ล้มเหลว"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "การถอดถอนซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "การปรับปรุงซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "การปรับรุ่นระบบล้มเหลว"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "การปรับใช้การเปลี่ยนแปลงซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "การซ่อมแซมการติดตั้งที่ยังไม่เสร็จล้มเหลว"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "การซ่อมแซมความขึ้นต่อกันที่เสียหาย ล้มเหลว"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "การเพิ้มแหล่งโปรแกรมล้มเหลว"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "การเปิดใช้งานองค์ประกอบทำงานแบบกระจายล้มเหลวแล้ว"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "การเอาแฟ้มแพกเกจที่ดูดมาออกล้มเหลว"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"ตรวจดูว่าใช้คลังแพกเกจของเจ้าอื่นหรือเปล่า ถ้าปิดการทำงานคลังนั้น ๆ เนือกจากปัญหาจากแหล่งที่มา\n"
+"ให้ลองเรียกคำส่งในเทอร์มินัล: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "แฟ้มที่เลือกไว้อาจไม่ใช่แฟ้มกุญแจ GPG หรือมันอาจเสียหาย"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "กุญแจที่เลือกไว้ไม่สามารถถอดถอนได้ ให้ตรวจดูว่าลายนิวมือที่คุณให้ไว้ถูกต้องหรือไม่"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"ตรวจดูว่าคุณกำลังทำงานกับโปรแกรมจัดการตัวอื่น ๆ อยู่หรือเปล่า เช่น Synaptic หรือ aptitude "
+"อณุญาตแค่โปรแกรมเดียวเท่านั้นที่สามารถทำการเปลี่ยนแปลงในเวลาเดียวกันได้"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"นี้เป็นปัญหาร้ายแรง โปรดลองใหม่ภายหลัง ถ้ายังพบปัญหานี้อีก โปรดรายงานข้อผิดพลาดไปที่นักพัฒนา"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "ตรวจดูว่าสะกดชื่อแพกเกจถูกหรือเปล่า และ คลังแพกเกจที่ถูกต้องถูกเปิดใช้งานแล้ว"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "ไม่มีความต้องการใด ๆ ที่จะปรับปรุง"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "นั่นไม่มีความจำเป็นต้องติดตั้ง"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "นั่นไม่มีความจำเป็นต้องถอดถอน"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "คุณได้ร้องขอให้ถอดถอนแพกเกจซึ่งเป็นส่วนสำคัญของระบบของคุณ"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "การเชื่อมต่อไปที่ดีมอนหลุดแล้ว ดูเหมือนกับว่าดีมอนที่ทำงานอยู่ฉากหลังขัดข้อง"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "การติดตั้งหรือถอดถอนแพกเกจของซอฟต์แวร์ล้มเหลว"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"น่าจะเป็นข้อผิดพลาดจากการเขียนโปรแกรมใน aptdaemon โปรแกรมนี้ทำการติดตั้ง/"
+"ถอดถอนโปรแกรมและจัดการด้านแพกเกจหรืองานต่าง ๆ ที่เกียวข้อง"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"ข้อผิดพลาดนี้สาเหตุมาจากไม่พบแพกเกจโปรแกรมเพิ่มเติมที่ต้องการ "
+"หรือไม่ก็เกิดจากการขัดกันของแพกเกจโปรแกรมที่ไม่อนุญาติให้ติดตั้งพร้อมกัน"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"การติดตั้งนี้ล้มเหลวเพราะว่ามีข้อผิดพลาดจาดแพกเกจโปรแกรม หรือ ถูกยกเลิกการติดตั้งในทางที่ไม่ปกติ "
+"คุณควรซ่อมแซมเรื่องนี้ก่อนที่จะติดตั้งหรือถอดถอดโปรแกรมอื่น ๆ เพิ่ม"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "โปรดคัดลอกแฟ้มไปที่เครื่องของคุณแล้วตรวจดูสิทธิ์ที่อนุญาตของแฟ้ม"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"ไม่อนุญาติให้ทำการติดตั้งแพกเกจที่มีคุณภาพต่ำกว่ามาตราฐาน "
+"เรื่องนี้อาจทำให้เกิดปัญหาร้ายแรงมากกับเครื่องคอมพิวเตอร์ของคุณ "
+"โปรดติดตั้งคนหรือองค์กรณ์ที่ทำการจำหน่ายแฟ้มแพกเกจนี้รวมถึงรายละเอียดอื่น ๆ ด้วย"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "ไม่คุณไม่ได้รับอนุญาติให้กระทำการนี้"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "การดาวน์โหลดแฟ้มแพกเกจล้มเหลว"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "การดาวน์โหลดแฟ้มข้อมูลคลังล้มเหลว"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "ไม่สามารถแก้ปัญหาการขึ้นต่อกันของแพกเกจได้"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "แพกเกจของระบบพัง"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "กุญแจยังไม่ถูกติดตั้ง"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "กุญแจยังไม่ถูกถอดถอน"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "การล็อคโปรแกรมจัดการแพกเกจล้มเหลว"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "การโหลดรายชื่อแพกเกจล้มเหลว"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "ไม่พบแพกเกจ"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "แพกเกจถูกติดตั้งแล้ว"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "แพกเกจยังไม่ถูกติดตั้ง"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "การถอดถอนแพกเกจสำคัญของระบบล้มเหลว"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "ไม่สามารถตามดูหรือควบคุมงานได้"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "การดำเนินการเกี่ยวกับแพกเกจล้มเหลว"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "ต้องการติดตั้งแพกเกจที่ยังไม่ได้รับความเชื่อถือ"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "การติดตั้งครั้งก่อนยังไม่สมบูรณ์"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "คุณภาพแพกเกจแย่มาก"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "แฟ้มแพกเกจเปิดไม่ได้"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "มีปัญหาที่จัดการไม่ได้เกิดขึ้น"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "กำลังรอเซอร์วิสเริ่มทำงาน"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "กำลังรอ"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "กำลังรอความต้องการระดับกลาง"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "กำลังรอให้โปรแกรมจัดการแพกเกจอื่น ๆ ปิด"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "กำลังรอการตั้งค่าแฟ้มพรอมต์"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "งานที่กำลังทำงาน"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "กำลังดาวน์โหลด"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "กำลังเก็บกวาด"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "เสร็จสิ้น"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "กำลังยกเลิก"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "กำลังโหลดรายชื่อซอฟต์แวร์"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "กำลังติดตั้ง %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "กำลังตั้งค่า %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "กำลังถอดถอน %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "กำลังทำงาน %s หลังการติดตั้ง"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "กำลังปรับรุ่น %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "เรียบร้อย"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "การยืนยันล้มเหลว"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "กำลังดึงข้อมูล"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "ว่าง"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "ไม่มีเครื่อข่าย"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "ดาวน์โหลด %sB แล้วจาก %sB ที่ความเร็ว %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "ดาวน์โหลด %sB แล้วจาก %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "รายละเอียด"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "แฟ้ม"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "ดาว์โหลดแล้ว %s ไบต์"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "ดาวน์โหลดแล้ว"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "ต้องมีซีดี/ดีวีดี '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "โปรดใส่แผ่น CD/DVD ข้างต้นไปที่ไดรว์ '%s' เพื่อติดตั้งแพกเกจโปรแกรม"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_ต่อไป"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "ติดตั้ง"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "ติดตั้งใหม่"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "เอาออก"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "กำจัด"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "ปรับรุ่น"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "ลดรุ่น"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "ข้ามการปรับรุ่น"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "โปรดดูที่รายการเปลี่ยนแปลงข้างล่าง"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "โปรแกรมเสริมถูกติดตั้งแล้ว"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "โปรแกรมเสริมถูกติดตั้งใหม่แล้ว"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "โปรแกรมเสริมถูกถอดถอนแล้ว"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "โปรแกรมเสริมถูกทำให้หยุดทำงาน"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "โปรแกรมเสริมถูกปรับรุ่นแล้ว"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "โปรแกรมเสริมถูกปรับรุ่นลงแล้ว"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "การปรับปรุงจะถูกข้ามไป"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "ต้องการการเปลี่ยนแปลงเพิ่มเติม"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sไบต์ถูกดาว์โหลดจากทั้งหมด"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "จะทำให้มี %s ไบต์ของพื้นที่ว่างของดิสก์"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "จะใช้พื้นที่บนดิสก์อีก %s ไบต์"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "แทนที่การเปลี่ยนแปลงของคุณ '%s' ด้วยแฟ้มการตั้งค่าล่าสุดหรือไม่"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "ถ้าคุณไม่รู้ว่าทำไมแฟ้มมาอยู่ที่นี้ มักปลอดภัยที่จะแทนที่แฟ้มนั้น"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "เ_ปลี่ยนแปลง"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "เ_ก็บไว้"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "แ_ทนที่"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_รายละเอียด"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "กำลังรอ %s เพื่อออก"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "กำลังดาว์โหลด %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "ไม่มีแพกเกจ %s"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "แพกเกจ %s ไม่ได้ถูกติดตั้ง"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "รุ่น %s ของ %s ไม่ได้ถูกติดตั้ง"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "แพกเกจ %s ถูกติดตั้งอยู่แล้ว"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "รุ่น %s ของ %s ยังไม่ได้ถูกติดตั้ง"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"ล้มเหลวที่จะดาว์โหลดและติดตั้งกุญแจ %s จาก %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "แฟ้มคีย์ %s ติดตั้งไม่ได้: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "กุญแจกับลายนิวมือ %s ไม่สามารถถอดถอนได้: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "ถอดถอนแพกเกจ %s ไม่ได้"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "รุ่น %s ของ %s ยังไม่ถูกติดตั้ง"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "รุ่น %s of %s ถูกติดตั้งไว้อยู่แล้ว"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "รุ่น %s ของ %s ถูกติดตั้งแล้ว"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "รุ่น %s ของ %s ไม่มี"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "คุณต้องระบุรุ่นของ %s ที่ปรับรุ่นลง"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "รุ่นล่าสุด %s ของ %s ถูกติดตั้งอยู่แล้ว"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "แพกเกจ %s ยังไม่มีในรุ่น %s"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "เอาแพกเกจ %s ออกไม่ได้"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr "แพกเกจนี้มีข้อมูลขนาดการติดตั้งที่ไม่ถูกต้อง ดูรายละเอียดในนโยบาย Debian 5.6.20"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "แพกเกจต่อไปนี้ขาดแพกเกจที่ต้องใช้:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "แต่แพกเกจนี้เป็นแพกเกจเสมือน"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "แต่มันยังไม่ได้ถูกติดตั้ง"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "แต่แพกเกจนี้จะไม่ถูกติดตั้ง"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "แต่ %s ถูกติดตั้งแล้ว"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "แต่ %s กำลังจะถูกติดตั้ง"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "การเพิ่มคีย์ไปที่รายการผู้จำหน่ายซอฟต์แวร์ที่เชื่อถือได้ล้มเหลว"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..a345093
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,1487 @@
+# Turkish translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2013-01-19 21:59+0000\n"
+"Last-Translator: Volkan Gezer <Unknown>\n"
+"Language-Team: Turkish <tr@li.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Güvenilir sağlayıcıların anahtarlarını listele"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+"Güvenilir anahtarların listesini görmek için kimlik doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "İndirilen paket dosyalarını kaldır"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"İndirilen paket dosyalarını temizlemek için, kimliğinizi doğrulamalısınız."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Yazılım yapılanmasını değiştir"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Yazılım ayarlarını değiştirmek için, kimliğinizi doğrulamalısınız."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Yazılım deposunu değiştir"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Yazılım depo ayarlarını değiştirmek için kimlik doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Paket dosyasını kur"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Bu paketi kurmak için kimlik doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Paket bilgisini güncelleştir"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Yazılım rehberini güncelleştirmek için kimlik doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Paketleri kur ya da kaldır"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Yazılım kurmak ya da kaldırmak için kimlik doğrulaması gerekli."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Yazılımı beyaz listedeki güvenilir bir depodan yükle."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Yazılımını yüklemek için kimlik doğrulaması gerekiyor."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Yeni bir depo ekle ve oradan paket kur"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+"Yeni kaynaktan yazılım yüklemek için yetkilendirilmiş olmanız gerekmektedir."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Ücretli bir paket deposu ekle ve oradan paket kur"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+"Ücretli yazılım yükleyebilmeniz için yetkilendirilmiş olmanız gerekmektedir."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Paketleri yükselt"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Güncelleştirilen yazılımı kurmak için kimlik doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Başka bir kullanıcının görevini iptal et"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Başka birisinin yazılım değişikliklerini iptal edebilmek için kimlik "
+"doğrulaması gerekli."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Yazılım indirmeleri için vekil sunucu ayarla"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Yazılım indirirken bir vekil sunucu kullanmak için kimlik doğrulaması "
+"gerekli."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "HATA"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "%sB of %sB at %sB/s İndirildi"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "HATA:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Bu işlemi gerçekleştirmenize izin verilmiyor."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Kuyruğa alınıyor"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Bağımlılıklar çözümleniyor"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Aşağıdaki (%(count)s) YENİ paket kurulacak:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Aşağıdaki (%(count)s) paket yükseltilecek:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Aşağıdaki (%(count)s) paket kaldırılacak:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Aşağıdaki (%(count)s) paketin sürümü düşürülecek:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Aşağıdaki paketler tekrar kurulacak (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Aşağıdaki (%(count)s) paket değiştirilmeyecek:"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "%sB arşivlerinin alınması gerekli."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Bu işlemden sonra, ilave disk alanından %sB kullanılacak."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Bu işlemden sonra, ilave disk alanından %sB boş olacak."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Devam etmek istiyor musunuz[E/H]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Birden fazla paket üzerinde işlem yapmak için paket isimlerini tırnak "
+"işaretleri içine koyun:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Önbelleği yenile"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Kırık bağımlılıkların çözülmeye çalışılması. Çok sayıda paket "
+"kaldırılabileceğinden dolayı tehlikeli bir işlemdir."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Daha önceki tamamlanmayan kurulumu bitirmeye çalış"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Verilen paketleri kur"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Verilen paketleri tekrar kur"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Verilen paketleri kaldır"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Yapılandırma dosyalarını içeren verilmiş paketleri kaldır"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Verilen paketlerin sürümlerini düşür"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Onaylanmadı: Lütfen --güvenli-yükseltme kullanın"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Sistemi güvenli bir şekilde yükselt"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+"Sistemi yükseltin, bu işlem sırasında bazı paketler kurulabilir ve "
+"kaldırılabilir"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Sağlayıcıyı güvenilenler listesine ekleyin"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Üretici anahtar kimliği ekleyin (ayrıca gereken --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Anahtarları aramak için verilen anahtar sunucuyu kullanın"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Verilen deb-satırından yeni depo ekleyin"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Hangi depoların ekleneceğini belirleyen alternatif bir source.list.d dosyası "
+"belirtin."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Güvenilir sağlayıcı anahtarlarını listele"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Parmak izi verilen doğrulanmış anahtarı kaldırın"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Yüklenen paketleri yeniden yapılandır. Seçimsel olarak soruların önem "
+"derecesi belirlenebilir"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Görüntülenecek sorunun en küçük debconf önceliği"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "apt uç birimine iliştirmeyin"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Tasdiklenmemiş kaynaklardan paketlere izin verir"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"Paketler hakkındaki ek bilgileri göster. Şu an sadece sürüm numarası "
+"görüntüleniyor"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Kimlik doğrulaması için bekleniyor"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Hareketsizlik nedeniyle sihirbazı kapatmayın"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Hiçbir eklentiyi yükleme"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "İç işlem bilgisini göster"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Çık ve çalışan bir süreçle değiştir"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBus oturum arabirimi üzerinden dinle (Sadece test için gerekli"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "İşlemleri verilen chroot içinde yap"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Profil bilgilerini seçilen dosyada sakla"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Sistem üzerinde herhangi bir değişiklik yapmayınız ( Yalnızca "
+"geliştiricilerin kullanımı için)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Yüklenen dosya"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Kurulan paketler"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Dosyadan anahtar eklendi"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Önbellek güncelleştirildi"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Arama tamamlandı"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Güvenilir anahtar silindi"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Kaldırılan paketler"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Güncelleştirilen paketler"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Yükseltilen sistem"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Uygulanan değişiklikler"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Onarılan tamamlanmamış kurulum"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Onarılan kırık bağımlılıklar"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Depo eklendi"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Etkinleştirilen dağıtım bileşeni"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "İndirilen paket dosyaları kaldırıldı"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Kurulan paketler yeniden yapılandırıldı"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Başarılı"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "İptal Edildi"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Başarısız"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Dosya yükleniyor"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Paketler kuruluyor"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Dosyadan anahtar ekleniyor"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Önbellek güncelleniyor"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Güvenilir anahtar siliniyor"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Paketler siliniyor"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Paketler güncelleniyor"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Sistem yükseltiliyor"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Değişiklikler uygulanıyor"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Tamamlanmamış kurulum onarılıyor"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Kurulu yazılım onarılıyor"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Depo ekleme"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Dağıtım bileşeni etkinleştiriliyor"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "İndirilen paket dosyaları kaldırılıyor"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Yüklenen paketler yeniden yapılandırılıyor"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Arıyor"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Paket dosyasının kurulumu başarısız oldu"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Yazılım kurulumu başarısız oldu"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr "Anahtarı, güvenilir yazılım sağlayıcı listesine ekleme başarısız"
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Yazılım listesinin yenilenmesi başarısız oldu"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Sağlayıcı güvenilir olanlar listesinden kaldırma başarısız oldu"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Yazılımın kaldırılması başarısız oldu"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Yazılım güncellemesi başarısız oldu"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Sistem yükseltmesi başarısız oldu"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Yazılım değişiklikleri uygulaması başarısız oldu"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Tamamlanmamış kurulum onarımı başarısız oldu"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Kırık bağımlılıkların onarımı başarısız oldu"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Depo eklenemedi"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Dağıtım bileşeni etkinleştirilemedi"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "İndirilen paketlerin kaldırılması başarısız oldu"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Arama başarısız oldu"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Lisans anahtarı ekleniyor"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "İnternet bağlantınızı kontrol edin."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Üçüncü parti paket depoları kulanıp kullanmadığını denetleyin.Eğer "
+"kullanıyorsanız problemlerin kaynağı genellikle onlardır.\n"
+"Ayrıca konsolda şu komutu girin: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Seçili dosya bir GPG anahtar dosyası olmayabilir veya bozuk olabilir."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Seçilen anahtar kaldırılamıyor. Geçerli bir parmak izi sağladığınızı kontrol "
+"edin."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Başka bir yazılım yönetim aracını şu anda çalıştırıp çalıştırmadığınızı "
+"kontrol edin, örneğin Synaptic veya aptitude. Bir seferde sadece bir araç "
+"değişiklik yapabilir."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Bu ciddi bir problem. Daha sonra tekrar deneyin. Eğer bu problem tekrar "
+"gözükürse, lütfen geliştiricilere hatayı rapor edin."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "Paket adının yazımını ve uygun deponun etkinliğini denetleyin."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Güncelleştirmeye ihtiyaç yok."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Bir kuruluma ihtiyaç yok"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Kaldırmak için herhangi bir neden yok."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+"Sisteminizin temel bölümlerinden olan bir paketi kaldırmak istiyorsunuz."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Sihirbazla olan bağlantı kesildi. Büyük olasılıkla arka plan sihirbazı çöktü."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Bir paketin kurulumu ya da kaldırılması başarısız oldu."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Talep edilen özellik desteklenmiyor."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Yazılım kurmanızı/kaldırmanızı ve paket yönetimi ile ilgili diğer görevleri "
+"gerçekleştirmenizi sağlayan aptdaemon'da bir programlama hatası var gibi "
+"gözüküyor."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Bu hata, bulunamayan veya kurulabilir olmayan gerekli ek yazılım "
+"paketlerinden kaynaklanıyor olabilir ya da aynı anda kurulamayan yazılım "
+"paketleri arasındaki çakışmadan kaynaklanıyor da olabilir."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Bu kurulum doğrulanmamış kaynaklardan yükleme yapmayı gerektiriyor."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Yükleme işlemi ilgili yazılım paketindeki bir hata yüzünden veya uygun "
+"olmayan bir biçimde kapatılmasından dolayı başarısız olmuş olabilir. Başka "
+"bir yazılım yüklemeden veya kaldırmadan önce bu durumu düzeltmelisiniz."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Lütfen dosyayı yerel bilgisayarınıza kopyalayın ve dosya izinlerini kontrol "
+"ediniz."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Nitelik standartlarını bozan bu paketin kurulumuna izin verilmedi. Bu, "
+"bilgisayarınızla ilgili ciddi sorunlara neden olabilir. Lütfen bu paketi "
+"sağlayan kişiyle ya da kurumla iletişime geçin ve paket paketin altına "
+"ayrıntıları da ekleyin."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Bu yazılımı çalıştırabilmek için indirilen lisans anahtarı geçerli değil ya "
+"da düzgün bir şekilde yüklenemedi.\n"
+"Daha fazla bilgi için ayrıntılara bakın."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Kullanılabilir tüm güncellemeler zaten yüklenmiş durumda."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Bu yazılımı kullanabilmeniz için gerekeli lisans anahtarı indirilemedi. "
+"Lütfen ağ bağlantınızı kontrol edin."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Bu işlemi gerçekleştirmek için yeterli yetkiye sahip değilsiniz."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+"Yanlış bir şifre girmiş olabilir veya yetkilendirmeyi iptal etmiş "
+"olabilirsiniz.\n"
+"Ayrıca, eğer bir şifre iletisi görmediyseniz, teknik bir sebep olabilir: "
+"masaüstü ortamınız PolicyKit oturum aracı sağlamıyor."
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Paket dosyalarını indirme başarısız"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Depo bilgisini indirme başarısız"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Paket bağımlılıkları çözülemiyor"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Paket sistemi bozuk"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Anahtar kurulmadı"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Anahtar kaldırılmadı"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Paket yöneticisini kilitleme başarısız"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Paket listesini yükleme başarısız"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Paket yok"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Paket zaten güncel durumda."
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Paket zaten kurulmuş"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Paket kurulu değil"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Temel sistem paketlerini kaldırma başarısız"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "İşlem gösterilemiyor ya da kontrol edilemiyor"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Paket işlemi başarısız"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Güvenilir olmayan paketlerin kurulumunu gerektirir"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Önceki kurulum tamamlanmadı"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Paket kötü kalitede"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Paket dosyası açılamadı"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Desteklenmeyen özellik"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Lisans anahtarı indirme işlemi başarısız oldu"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Lisans anahtarı kurulumu başarısız oldu"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Sistem zaten güncel"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr "Yetkilendirilemediniz"
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr "Bu işlemi gerçekleştirme izniniz yok"
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Üstesinden gelinemeyecek bir sorun oluştu"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Başlamak için servis bekleniyor"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Beklemede"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Gerekli ortam için bekleniyor"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Diğer yazılım yöneticilerinin çıkış yapması için bekleniyor"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "İstenen yapılandırma dosyası için bekleniyor"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Çalışan görev"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "İndiriliyor"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Yazılım kaynakları sorgulanıyor"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Temizlik yapılıyor"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Bitti"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "İptal ediliyor"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Yazılım listesi yükleniyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "%s kuruluyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "%s yapılandırılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "%s kaldırılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "%s tamamen kaldırılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s paketinin kaybolduğu not ediliyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Son-kurulum tetikleyicisi %s çalışıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "%s yükseltiliyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "%s paketi açılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "%s paketini yüklemeye hazırlanılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "%s paketini yapılandırmaya hazırlanılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "%s paketini kaldırmaya hazırlanılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "%s paketinin tamamen kaldırılmasına hazırlanılıyor"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s kuruldu"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s tamamen kaldırıldı"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s kaldırıldı"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Yapıldı"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Kimlik doğrulama başarısız oldu"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Alınıyor"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Boşta"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Ağ kullanılabilir durumda değil"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "%s işleniyor"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "%sB of %sB at %sB/s İndirildi"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Downloaded %sB of %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Ayrıntılar"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Dosya"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "%sB İndirildi"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "İndirilen"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "'%s' CD/DVD gerekli"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Lütfen yazılım paketlerini yüklemek için üzerindeki CD/DVD'yi '%s' "
+"sürücüsüne takın."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "D_evam Et"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Kur"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Yeniden kur"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Kaldır"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Temizle"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Yükselt"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Sürüm düşür"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Yükseltmeyi atla"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Lütfen, aşağıdaki değişiklik listesine bir göz atın."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Ek yazılım kurulması gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Ek yazılımın yeniden kurulması gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Ek yazılım kaldırılması gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Ek yazılımın temizlenmesi gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Ek yazılım yükseltmesi gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Ek yazılımın sürümünün düşürülmesi gerekiyor"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Güncelleştirmeler atlanacak"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Ek değişiklikler gerekli"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "%sB tamamıyla indirilecek."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB disk alanı boşalacak."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB daha disk alanı kullanılacak."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"'%s' içindeki değişiklikleriniz yapılandırma dosyasının sonraki bir sürümü "
+"ile değiştirilsin mi?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Eğer dosyanın neden hala burada olduğunu bilmiyorsanız, yerinde tutmak "
+"genellikle daha güvenlidir."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Değişiklikler"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Koru"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Değiştir"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Detaylar"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Çıkmak için %s bekleniyor"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "%(files)s İndiriliyor"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "Yerel yazılım kaynağı"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "%s'ten indiriliyor"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s paketinin yapısı"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s paketinin açıklaması"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s paketinin açıklama imzası"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "%s deposundaki kullanılabilir paketler"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "%s deposundaki kullanılabilir kaynaklar"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "%s deposundaki kullanılabilir çeviriler"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) için %s deposundaki çeviriler"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s için %s deposundaki çeviriler"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "\"%s\" çevirilerinin deposu: %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "%s Paketi erişilebilir değil"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "%s paketi yüklenmedi"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s 'in %s sürümü yüklü değil."
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s Paketi daha önceden yüklenmiş"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s in %s sürümü mevcut değil"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Anahtar sunucu adresi geçersiz: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Sunucu için geçersiz iletişim kuralları: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Geçersiz anahtar kimliği: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"%s Anahtarının %s adresinden indirilmesi ve yüklenmesi başarısız oldu:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "%s Anahtar dosyası yüklenemedi: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "%s iziyle olan anahtarlar silinemedi :%s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s paketi kaldırılamadı."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "%s öğesinin %s sürümü kurulu değil"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "%s'ın daha eski sürümü olan %s zaten yüklenmiş."
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "%s öğesinin %s sürümü zaten kurulu"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s in %s sürümü mevcut değil"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "%s Paketini düşürmek istediğiniz sürümü belirtmelisiniz"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "%s 'in daha yeni sürümü %s zaten yüklenmiş."
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s paketi %s sürümünde mevcut değil."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "%s Paketi kaldırılamadı"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Kurulan paket geçerli bir Yükleme-Boyut kontrol alanı sağlamıyor. Debian "
+"sözleşmesi 5.6.20'ye bakınız."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Lisans anahtarı boş"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Lisans anahtarı çalıştırılabilir kod içeremez"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "%s lisans anahtar yolu geçersiz"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Lisans anahtarı zaten mevcut: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Sembolik bağlantılar içerdiğinden dolayı lisans anahtarının konumu güvenli "
+"değil. %s yolu %s'e çıkıyor"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Anahtarın yükleneceği dizin henüz bulunmuyor: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Anahtar dosyası şu konuma yazılamadı: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Aşağıdaki paketler karşılanmamış bağımlılıklara sahip:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "ama bu bir sanal paket"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "ama kurulu değil"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "ama kurulmayacak"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "ama %s kurulu"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "ama %s kurulacak"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Güvenilir yazılım sağlayıcılarının listesine anahtar ekleme başarısız oldu"
diff --git a/po/ug.po b/po/ug.po
new file mode 100644
index 0000000..7cdd6f1
--- /dev/null
+++ b/po/ug.po
@@ -0,0 +1,1474 @@
+# Uyghur translation for aptdaemon
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the aptdaemon package.
+# Gheyret T.Kenji <gheyret@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-09 23:47+0000\n"
+"Last-Translator: Gheyret T.Kenji <Unknown>\n"
+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "ئىشەنچلىك vendor لارنىڭ ئاچقۇچلىرىنى كۆرسىتىش"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "ئىشەنچلىك ئاچقۇچلارنى كۆرۈش ئۈچۈن سالاھىيەت دەلىللەش زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "چۈشۈرگەن بوغچا ھۆججەتلىرىنى ئۆچۈر"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"چۈشۈرگەن بوغچا ھۆججەتلىرىنى تازىلاش ئۈچۈن، سالاھىيىتىڭىزنى تەكشۈرۈش زۆرۈر."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "يۇمشاق دېتال سەپلىمىسىنى ئۆزگەرت"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"يۇمشاق دېتال سەپلىمىسىنى ئۆزگەرتىش ئۈچۈن، سالاھىيىتىڭىزنى تەكشۈرۈش زۆرۈر."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "يۇمشاق دېتال خەزىنىسىنى ئۆزگەرتىش"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "يۇمشاق دېتال خەزىنە تەڭشىكىنى ئۆزگەرتىش ئۈچۈن دەلىللەش زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "بوغچا ھۆججىتىنى ئورنىتىش"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "بۇ بوغچىنى ئورنىتىش ئۈچۈن دەلىللەش زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "بوغچىغا مۇناسىۋەتلىك ئۇچۇرلارنى يېڭىلاش"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "يۇمشاق دېتال كاتالوگىنى يېڭىلاش ئۈچۈن دەلىللەش زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "بوغچىلارنى ئورنىتىش ياكى ئۆچۈرۈش"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "يۇمشاق دېتال ئورنىتىش ياكى ئۆچۈرۈش ئۈچۈن دەلىللەش زۆرۈردۇر."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+"ئاق تىزىمدىكى، يۇقىرى ئىشەنچلىك خەزىنىلەردىن يۇمشاق دېتاللارنى ئورناتسۇن."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "يۇمشاق دېتالنى ئورنىتىش ئۈچۈن كىملىك دەلىللەش زۆرۈردۇر."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "يېڭى خەزىنە قوشۇپ بوغچىلارنى ئۇنىڭدىن ئورنىتىش"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "يېڭى مەنبەدىن يۇمشاق دېتال ئورنىتىش ئۈچۈن دەلىللەش زۆرۈردۇر"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "سېتىۋالغان يۇمشاق دېتالنىڭ خەزىنىسى قوشۇپ بوغچىلارنى ئۇنىڭدىن ئورنىتىش"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "يۇمشاق دېتال سېتىۋېلىش ئۈچۈن دەلىللەش زۆرۈردۇر."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "بوغچىلارنى يۈكسەلدۈرۈش"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "يېڭىلانغان يۇمشاق دېتالنى ئورنىتىش ئۈچۈن دەلىللەش زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+"باشقا ئىشلەتكۈچىنىڭ ۋەزىپىسىنى(ئىجرا قىلىۋاتقان پروگراممىسىنى) ئەمەلدىن "
+"قالدۇرۇش"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"باشقىلار ئېلىپ يۇمشاق دېتال ئۆزگەرتىشلىرىنى ئەمەلدىن قالدۇرۇش ئۈچۈن دەلىللەش "
+"زۆرۈردۇر"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "يۇمشاق دېتال چۈشۈرۈشتە ئىشلىتىدىغان ۋاكالەتچىنى بېكىتىش"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"يۇمشاق دېتال چۈشۈرۈشتە ئىشلىتىلىدىغان ۋاكالەتچى مۇلازىمېتىرنى ئىشلىتىش ئۈچۈن "
+"دەلىللەش زۆرۈردۇر"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ERROR"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "چۈشۈرۈلگىنى %sB / %sB، تېزلىكى %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "چۈشۈرۈلگىنى %sB / %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ERROR:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "سىزنىڭ بۇ مەشغۇلاتنى قىلىش ھوقۇقىڭىز يوق."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "رەتكە تىزىلىش"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "بېقىندىلىق مۇناسىۋەتنى ھەل قىلىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "تۆۋەندىكى (%(count)s) دانە يېڭى بوغچىلار ئورنىتىلىدۇ:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "تۆۋەندىكى (%(count)s) دانە بوغچىنىڭ نەشرى يۇقىرىلىتىلىدۇ:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "تۆۋەندىكى (%(count)s) دانە بوغچا ئۆچۈرۈلىدۇ:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "تۆۋەندىكى (%(count)s) دانە بوغچىنىڭ نەشرى تۆۋەنلىتىلىدۇ:"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "تۆۋەندىكى (%(count)s) دانە بوغچا قايتا ئورنىتىلىدۇ:"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "تۆۋەندىكى بوغچىلار ساقلاپ قېلىندى(%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "ئارخىپتىن %sB ئوقۇش زۆرۈر."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "بۇ مەشغۇلات تاماملانسا، %sB دىسكا بوشلۇقى ئىشلىتىلىدۇ."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "بۇ مەشغۇلات تاماملانسا، %sB دىسكا بوشلۇقى بىكارلىنىدۇ."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "داۋاملاشتۇرامسىز[Y/n]؟"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"بىر ياكى بىر قانچە بوغچىغا مەشغۇلات قىلماقچى بولسىڭىز، بوغچا ئاتلىرىنى "
+"تىرناق ئىچىگە ئېلىڭ:\n"
+"aptdcon --install \"boghcha ati\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "غەملەكنى يېڭىلا"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"بۇزۇلغان بېقىنىشچانلىقنى ھەل قىلىشنى سىناپ كۆرۈڭ. بۇ مەشغۇلات خەتەرلىك، "
+"چۈنكى ئۇ نۇرغۇن بوغچىلارنى ئۆچۈرۈش ئېھتىماللىقى بار."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "ئالدىنقى قېتىملىق چالا ئورنىتىشنى تاماملاشنى سىناپ كۆرۈڭ."
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "بېرىلگەن بوغچىلارنى ئورنىتىش"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "بېرىلگەن بوغچىلارنى قايتا ئورنىتىش"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "بېرىلگەن بوغچىلارنى ئۆچۈرۈش"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "بېرىلگەن بوغچىلارنى تەڭشەك ھۆججەتلىرى بىلەن قوشۇپ ئۆچۈرۈش"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "بېرىلگەن بوغچىلارنىڭ نەشرىنى تۆۋەنلىتىدۇ"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "چەكلەنگەن: --safe-upgrade نى ئىشلىتىڭ"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "سىستېمىنى بىخەتەر يۈكسەلدۈرىدۇ"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "سىستېمىنى يۈكسەلدۈرىدۇ، بەلكىم بوغچىلارنى ئورنىتىدۇ ياكى ئۆچۈرىدۇ"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "vendor نى ئىشەنچلىك قاتارىغا قوش"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "vendor keyid نى قوشۇڭ(--keyserver مۇ زۆرۈردۇر)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "ئاچقۇچلارنى ئىزدەپ تېپىش ئۈچۈن بېرىلگەن keyserver نى ئىشلىتىڭ"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "بېرىلگەن deb-line نى ئارقىلىق يېڭى خەزىنە قوشۇش"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "خەزىنە قوشىدىغان باشقا بىر sources.list.d ھۆججىتىنى كۆرسىتىڭ"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "ئىشەنچلىك vendor ئاچقۇچلىرىنى كۆرسىتىش"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "بېرىلگەن fingerprint نىڭ ئىشەنچلىك ئاچقۇچىنى ئۆچۈرۈش"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"ئورنىتىلىپ بولغان بوغچىلارنى قايتا سەپلەيدۇ. تاللانما ئارقىلىق سوئالنىڭ "
+"ئالدىنلىقىنى ئەڭ كىچىككە تەڭشەشكە بولىدۇ"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "debconf نىڭ ئالدىنقى ئەڭ تۆۋەن بولغان سوئالنىلا كۆرسىتىدۇ"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "apt تېرمىنالغا باغلانما"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "دەلىللەنمىگەن مەنبەدىكى بوغچىلارنى ئىشلەتسۇن"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+"بۇ بوغچا ھەققىدىكى قوشۇمچە ھۆججەتلەرنى كۆرسىتىدۇ. نۆۋەتتە نەشر نومۇرىلا "
+"كۆرسىتىلگەن."
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "دەلىللەشنى ساقلاۋاتىدۇ"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "پاسسىپ بولغانلىقى ئۈچۈن مۇئەككەلنى تاقىما"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "ھېچقانداق قىستۇرمىنى ئوقۇمىسۇن"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "ئىچكى processing ئۇچۇرلىرىنى كۆرسىتىش"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "ئىجرا بولۇۋاتقان مۇئەككەلنى توختات ۋە ئالماشتۇر"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "DBus ئەڭگىمە باش لىنىيىسىدە تىڭشا (سىناقتىلا زۆرۈر بولىدۇ"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "بېرىلگەن chroot مۇھىتىدا مەشغۇلات قىلىدۇ"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "profile stats نى بەلگىلەنگەن ھۆججەتكە ساقلاش"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "سىستېمىغا قول تەگكۈزمە(ئىجادىيەتچىلەر ئۈچۈنلا)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "ئورنىتىلغان ھۆججەت"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "ئورنىتىلغان بوغچىلار"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "ھۆججەتتىن قوشۇلغان ئاچقۇچ"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "يېڭىلانغان غەملەك"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "ئىزدەش تامام"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "ئۆچۈرۈلگەن ئىشەنچلىك ئاچقۇچ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "ئۆچۈرۈلگەن بوغچىلار"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "يېڭىلانغان بوغچىلار"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "يۈكسەلدۈرۈلگەن سىستېما"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "قوللىنىلغان ئۆزگەرتىشلەر"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "رېمونت قىلىنغان چالا ئورناتما"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "رېمونت قىلىنغان بۇزۇلغان بېقىنىشچانلىقلار"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "قوشۇلغان يۇمشاق دېتال مەنبەسى"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "تارقىتىلمىنىڭ ئىناۋەتلىك قىلىنغان بۆلەكلىرى."
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "ئۆچۈرۈلگەن چۈشۈرگەن بوغچا ھۆججەتلىرى"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "قايتا سەپلەنگەن ئورنىتىلغان بوغچىلار"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "غەلىبىلىك تاماملاندى"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "قالدۇرۇۋېتىلدى"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "ھۆججەت ئورنىتىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "بوغچىلارنى ئورنىتىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "ھۆججەتتىن ئاچقۇچ قوشۇۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "غەملەكنى يېڭىلاۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "ئىشەنچلىك ئاچقۇچنى ئۆچۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "بوغچىلار ئۆچۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "بوغچىلار يېڭىلاۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "سىستېمىنى يۈكسەلدۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "ئۆزگەرتىشلەرنى قوللىنىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "چالا ئورناتمىلارنى تۈزىتىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "ئورنىتىلغان يۇمشاق دېتالنى ئوڭشاۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "يۇمشاق دېتال مەنبەسىنى قوشۇۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "distribution نىڭ component نى ئىناۋەتلىك قىلىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "چۈشۈرگەن بوغچا ھۆججەتلىرى ئۆچۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "ئورنىتىلغان بوغچىلارنى قايتا سەپلەۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "ئىزدەۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "بوغچا ھۆججىتىنى ئورنىتىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "يۇمشاق دېتال ئورنىتىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "يۇمشاق دېتال تىزىمىنى يېڭىلاش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "vendors نى ئىشەنچلىك تىزىمىدىن ئۆچۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "يۇمشاق دېتالنى ئۆچۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "يۇمشاق دېتالنى يېڭىلاش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "سىستېمىنى يۈكسەلدۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "يۇمشاق دېتال ئۆزگەرتىشلىرىنى قوللىنىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "چالا ئورناتمىلارنى رېمونت قىلىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "بۇزۇلغان بېقىنىشچانلىقنى رېمونت قىلىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "يۇمشاق دېتال مەنبەسىنى قوشۇش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "distribution نىڭ component نى ئىناۋەتلىك قىلىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "چۈشۈرگەن بوغچا ھۆججەتلىرى ئۆچۈرۈۋاتقاندا مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "ئىزدەش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "ئىجازەتنامە ئاچقۇچىنى قوشۇۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "ئىنتېرنېت باغلىنىشنى تەكشۈرۈڭ."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"باشقا بىر يۇمشاق دېتال خەزىنىسىنى ئىشلىتىۋاتامسىز؟ شۇنداق بولسا ئۇنى "
+"ئېتىۋېتىڭ، چۈنكى ئۇ نۇرغۇن مەسىلىلەرنىڭ سەۋەبكارىدۇر. ئۇنىڭدىن كېيىن "
+"تېرمىنالدا: apt-get install -f دېگەن بۇيرۇقنى ئىجرا قىلىڭ."
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "تاللانغان ھۆججەت GPG ئاچقۇچ ھۆججىتى ئەمەس ياكى بۇزۇلغان."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"تاللانغان ئاچقۇچنى ئۆچۈرگىلى بولمىدى. ئىناۋەتلىك fingerprint بېرىلگەنمۇ "
+"تەكشۈرۈڭ"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"باشقا بىر يۇمشاق دېتال باشقۇرۇش قورالى(Synaptic ياكى aptitude) "
+"ئىشلىتىۋاتامسىز؟ ئادەتتە پەقەت بىرىنىلا ئىشلىتىپ مەشغۇلات قىلغىلى بولىدۇ."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"بۇ ناھايىتى ئېغىر مەسىلە. كېيىن يەنە سىناپ كۆرۈڭ. ئەگەر يەنە تەكرارلانسا، "
+"ئىجادىيەتچىگە مەلۇم قىلىڭ."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "بوغا ئاتى توغرىمۇ، مۇناسىۋەتلىك خەزىنىنى ئىشلەتكىلى بولامدۇ تەكشۈرۈڭ."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "يېڭىلاشنىڭ زۆرۈرىيىتى يوق."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "ئورنىتىشنىڭ زۆرۈرىيىتى يوق."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "ئۆچۈرۈشنىڭ زۆرۈرىيىتى يوق."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "سىستېمىنىڭ ئاساسلىق بولىقىنى ئۆچۈرمەكچى بولدىڭىز."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+"Demon بىلەن بولغان باغلىنىش ئۈزۈلدى. ئارقا تەرەپ مۇئەككەلى توختاپ قالغاندەك "
+"قىلىدۇ"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "يۇمشاق دېتال بولىقىنى ئورنىتىش ياكى ئۆچۈرۈش مەغلۇپ بولدى."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "تەلەپ قىلغان ئىقتىدارىنى قوللىمايدۇ."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"پروگراممىنى ئورنىتىش/چىقىرىۋېتىش ۋە باشقا بوغچا باشقۇرۇشقا مۇناسىۋەتلىك "
+"ئىشلارنى قىلىدىغان aptdaemon پروگراممىسىدا خاتالىق باردەك قىلىدۇ."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"بۇ خاتالىق، زۆرۈر قوشۇمچە يۇمشاق دېتال بوغچىسىنىڭ يوقلۇقى ياكى ئۇنى "
+"ئورناتقىلى بولماسلىقى سەۋەبىدىن كېلىپ چىققان. يەنە كېلىپ بىرگە ئورناتقىلى "
+"بولمايدىغان يۇمشاق دېتال بوغچىسى(چىقىشالمايدىغان) ئارىسىدا توقۇنۇش كېلىپ "
+"چىققان ئېھتىماللىقمۇ بار."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+"بۇنىڭ ئۈچۈن كىملىكى دەلىللەنمىگەن مەنبەلەردىن بوغچىلارنى ئورنىتىش زۆرۈر."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"بۇ خاتالىق ماس يۇمشاق دېتال بولىقىدا خاتالىق بولغاچقا ياكى ئۇنىڭ نورمال "
+"ئاخىرلاشتۇرۇلمىغانلىقىدىن كېلىپ چىقىدۇ. باشقا بوغچىلارنى ئورنىتىش ياكى "
+"ئۆچۈرۈشتىن ئاۋۋال بۇ خاتالىقنى تۈزىتىڭ."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "ھۆججەتنى كومپيۇتېرىڭىزغا كۆچۈرۈپ ئۇنىڭ ئىمتىيازلىرىنى تەكشۈرۈڭ."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"سۈپەتكە كاپالەتلىك قىلىنمىغان بۇزۇق بوغچىلارنى ئورنىتىشقا يول قويۇلمايدۇ. "
+"بۇلارنىڭ كومپيۇتېرغا ئېغىر زىيانلارنى سېلىش ئېھتىماللىقى بار. شۇڭا مۇشۇ "
+"بوغچىنى ياسىغان ئادەم ياكى ئورۇن بىلەن ئالاقە قىلىپ كۆرۈڭ."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"پروگراممىنى ئىجرا قىلىشقا زۆرۈر بولغان چۈشۈرۈلگەن ئىجازەتنامە ئاچقۇچى "
+"ئىناۋەتسىز، ياكى توغرا ئورناتقىلى بولمىدى.\n"
+"تېخىمۇ كوپ بىلمەكچى بولسىڭىز تەپسىلاتلىرىغا قاراڭ."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "بار بولغان بارلىق يېڭىلانمىلار ئورنىتىلغان."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"پروگراممىنى ئىجرا قىلىشقا زۆرۈر بولغان ئىجازەتنامە ئاچقۇچىنى چۈشۈرگىلى "
+"بولمىدى. تور باغلىنىشىنى تەكشۈرۈڭ."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "سىزنىڭ بۇ مەشغۇلاتنى قىلىش ھوقۇقىڭىز يوق."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "بوغچا ھۆججەتلىرىنى چۈشۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "خەزىنە ئۇچۇرلىرىنى چۈشۈرۈش مەغلۇپ بولدى."
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "بوغچا بېقىنىشچانلىقىنى ھەل قىلغىلى بولمىدى"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "بوغچا سىستېمىسى بۇزۇلغان"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "ئاچقۇچ ئورنىتىلمىغان"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "ئاچقۇچ ئۆچۈرۈلمىگەن"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "بوغچا باشقۇرغۇچنى قۇلۇپلاش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "بوغچا تىزىمىنى ئوقۇش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "بوغچا مەۋجۇت ئەمەس"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "بوغچا ئەڭ يېڭى ھالەتتە"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "بوغچا ئاللىقاچان ئورنىتىلغان"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "بوغچا ئورنىتىلمىغان"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "ئاساسلىق سىستېما بوغچىلىرىنى ئۆچۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "ۋەزىپىنى كۆزەتكىلى ياكى باشقۇرغىلى بولمىدى"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "بوغچا مەشغۇلاتى مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "ئىشەنچسىز بوغچىنى ئورنىتىشنى تەلەپ قىلىۋاتىدۇ."
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "ئالدىنقى قېتىملىق ئورنىتىش تاماملانماپتۇ"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "بۇ بوغچىنىڭ سۈپىتى بەك ناچار ئىكەن"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "بوغچا ھۆججىتىنى ئاچقىلى بولمىدى"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "قوللىمايدىغان ئىقتىدار"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "ئىجازەتنامە ئاچقۇچىنى چۈشۈرۈش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "ئىجازەتنامە ئاچقۇچىنى ئورنىتىش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "سىستېمىڭىز ئاللىقاچان ئەڭ يېڭى ھالەتتە"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "تۇتقىلى بولمايدىغان خاتالىق يۈز بەردى"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "مۇلازىمەتنىڭ ئىجرا بولۇشىنى كۈتۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "كۈتۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "زۆرۈر بولغان CD/DDV نى كۈتۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "باشقا يۇمشاق دېتال باشقۇرۇش پروگراممىلىرىنىڭ تاماملىنىشىنى كۈتۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "سەپلىمە ھۆججىتىنىڭ كۆرسەتمە چىقىرىشىنى ساقلاۋاتىدۇ."
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "ۋەزىپىنى ئىجرا قىلىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "چۈشۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "يۇمشاق دېتال مەنبەلىرىنى سۈرۈشتۈرۈۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "تازىلاۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "تاماملاندى"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "ئەمەلدىن قالدۇرۇۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "يۇمشاق دېتال تىزىمىنى ئوقۇۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "ئورنىتىۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "سەپلەۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "ئۆچۈرۈۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "تولۇق ئۆچۈرۈۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "%s نىڭ يوقىلىشىنى خاتىرىلەۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "ئورنىتىلغاندىن كېيىنكى trigger %s نى ئىجرا قىلىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "يۈكسەلدۈرۈۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "يېيىۋاتقىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "بوغچا %s نى ئورنىتىشقا تەييارلىنىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "بوغچا %s نى سەپلەشكە تەييارلىنىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "بوغچا %s نى چىقىرىۋەتىشكە تەييارلىنىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "بوغچا %s نى تولۇق چىقىرىۋەتىشكە تەييارلىنىۋاتىدۇ"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "ئورنىتىلغىنى %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "بوغچا %s تولۇق چىقىرىۋېتىلدى"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "چىقىرىۋېتىلگىنى %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "تامام"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "سالاھىيەت دەلىللەش مەغلۇپ بولدى"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "ئېلىۋاتىدۇ"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "بىكار"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "تورنى ئىشلەتكىلى بولمايدۇ"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "بىر تەرەپ قىلىۋاتقىنى %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "چۈشۈرۈلگىنى %sB / %sB، تېزلىكى %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "چۈشۈرۈلگىنى %sB / %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "تەپسىلاتلار"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "ھۆججەت"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "چۈشۈرۈلگىنى %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "چۈشۈرۈلدى"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "'%s' دېگەن CD/DVD زۆرۈر."
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"ئۇستىدىكى CD/DVD دىن يۇمشاق دېتال بوغچىلىرىنى ئورنىتىش ئۈچۈن، ئۇنى قوزغاتقۇچ "
+"'%s' غا سېلىڭ"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "داۋاملاشتۇر(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "ئورنات"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "قايتا ئورنات"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "ئۆچۈر"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "پاكىزلا"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "يۈكسەلدۈر"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "نەشرىنى تۆۋەنلەت"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "يۈكسەلدۈرۈشنى ئۆتكۈزۈۋەت"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "تۆۋەندىكى ئۆزگىرىشلەرنىڭ تىزىمىغا قاراپ چىقىڭ."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "ئورنىتىلىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "قايتا ئورنىتىلىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "ئۆچۈرۈلىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "پاكىزلىنىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "يۈكسەلدۈرىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "نەشرىنى تۆۋەنلىتىدىغان قوشۇمچە يۇمشاق دېتال"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "يېڭىلاش ئۆتكۈزۈۋېتىلىدۇ"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "قوشۇمچە ئۆزگىرىشلەر تەلەپ قىلىنىدۇ"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "جەمئىي %sB چۈشۈرۈلىدۇ"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB بوشلۇق بىكارلىنىدۇ."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "%sB بوشلۇق ئىشلىتىلىدۇ."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"'%s' نىڭدىكى ئۆزگىرىشلەرنى كېيىنكى نەشرىدىكى سەپلىمە ھۆججەتلەر بىلەن "
+"قاپلىۋېتەمسىز؟"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"بۇ ھۆججەتنىڭ بۇ يەرگە قانداق پەيدا بولۇپ قالغانلىقىنى بىلمىسىڭىز خاتىرجەم "
+"قاپلىۋېتىڭ."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "ئۆزگىرىشلەر(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "تەگمە(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "ئالماشتۇر(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "تەپسىلاتلار(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "%s نىڭ ئاخىرلىشىشىنى كۈتۈۋاتىدۇ"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "چۈشۈرۈۋاتقىنى %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "يەرلىك خەزىنە"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "خەزىنە %s دىن چۈشۈرۈۋاتىدۇ"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "خەزىنە %s نىڭ قۇرۇلمىسى"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "خەزىنە %s نىڭ چۈشەندۈرۈلۈشى"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "خەزىنە %s چۈشەندۈرۈش ئىمزاسى"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "خەزىنە %s نىڭدا بار بوغچىلار"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "خەزىنە %s نىڭدا بار مەنبەلەر"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "خەزىنە %s نىڭدا بار تەرجىمىلەر"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s) نىڭ %s تەرجىمىسى"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s نىڭ %s تەرجىمىسى"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "(%s) چە تەرجىمىسى، %s ئامباردىن كەلگەن"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "%s بوغچا مەۋجۇت ئەمەس"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "%s بوغچا ئورنىتىلمىدى"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s نەشرىنىڭ %s ئورنىتىلمىغان"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s بوغچا ئاللىقاچان ئورنىتىلغان"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s نەشرىنىڭ %s نى ئىشلەتكىلى بولمايدۇ"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "ئاچقۇچ مۇلازىمېتىر(keyserver) نىڭ تور ئادرېسى ئىناۋەتسىز: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "مۇلازىمېتىر كېلىشىمنامىسى ئىناۋەتسىز: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "ئاچقۇچ id سى ئىناۋەتسىز: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"ئاچقۇچ %s نى %s دىن چۈشۈرۈپ ئورنىتىش مەغلۇپ بولدى:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "ئاچقۇچ %s نى ئورناتقىلى بولمىدى: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "بارماق ئىزى %s بولغان ئاچقۇچنى چىقىرىۋەتكىلى بولمىدى: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s بوغچىنى چىقىرىۋەتكىلى بولمىدى"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "%s نەشرىنىڭ %s ئورنىتىلمىغان"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "ئىلگىرىكى %s نەشرىنىڭ %s ئاللىقاچان ئورنىتىلغان"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "%s نەشرىنىڭ %s ئاللىقاچان ئورنىتىلغان"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s نەشرىنىڭ %s نى ئىشلەتكىلى بولمايدۇ"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "تۆۋەنلىتىدىغان نەشرى %s نى بەلگىلىشىڭىز كېرەك."
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "ئەڭ يېڭى %s نەشرىنىڭ %s ئاللىقاچان ئورنىتىلغان"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s دېگەن بوغچا %s نەشرىدە يوق."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "%s بوغچىنى چىقىرىۋەتكىلى بولمىدى"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"بۇ بوغچىدا ئىناۋەتلىك ئورنىتىش چوڭلۇقى(Install-Size) بۆلىكى يوق. Debian "
+"Policy 5.6.20 غا قاراڭ"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "ئىجازەتنامە ئاچقۇچى قۇرۇق"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "ئىجازەتنامە ئاچقۇچى تەركىبىدە ئىجرا بولىدىغان كود بولسا بولمايدۇ."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "ئىجازەتنامە ئاچقۇچىنىڭ يولى %s ئىناۋەتسىز"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "ئىجازەتنامە ئاچقۇچى مەۋجۇت: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"ئىجازەتنامە ئاچقۇچى تەركىبىدە symbolic ئۇلانمىلار بولغاچقا ئۇنىڭ ئورنى ئېنىق "
+"ئەمەس. يول %s ، خەرىتىسى %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "ئاچقۇچنى ئورنىتىدىغان مۇندەرىجە تېخى مەۋجۇت ئەمەس: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "ئاچقۇچ ھۆججىتىنى يېزىش مەغلۇپ بولدى: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "تۆۋەندىكى بوغچا بېقىنىش تەلىپىنى قاندۇرالمىدى:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "بىراق ئۇ بىر مەۋھۇم بوغچا"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "بىراق ئۇ ئورنىتىلمىغان"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "بىراق ئۇ ئورنىتىلمايدۇ"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "بىراق %s ئورنىتىلغان"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "بىراق %s ئورنىتىلىدۇ"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "ئاچقۇچنى ئىشەنچلىك يۇمساق دېتال vendors تىزىمىغا قوشۇش مەغلۇپ بولدى"
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..5742da5
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,1491 @@
+# Ukrainian translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-04-04 10:54+0000\n"
+"Last-Translator: Сергій Найтінгейл <Unknown>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Перелік ключів надійних постачальників ПЗ"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Щоб переглянути перелік довірених ключів, треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Вилучити завантажені пакунки"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "Для вилучення завантажених пакунків треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Змінити налаштування програмного забезпечення"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+"Щоб мати змогу змінювати налаштування програм, треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Змінити сховище програм"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Для зміни налаштувань сховищ програм, вам треба автентифікуватися."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Встановлення файла пакунка"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Щоб встановити цей пакунок, треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Оновлення інформації про пакунки"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Щоб оновити перелік програм, треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Встановити чи вилучити пакунки"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Для встановлення і вилучення програм, треба автентифікуватися."
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Додати нове сховище і встановити з нього пакунки."
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Щоб встановити програми з нового джерела, треба автентифікуватись."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Додати сховище для платних програм і встановити з нього пакунки"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Щоб встановити платні програми, треба автентифікуватись."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Оновлення пакунків"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Щоб встановити оновлення, требя автентифікуватись"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Скасувати завдання іншого користувача"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "Щоб скасувати чужі зміни в ПЗ, треба автентифікуватися."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Налаштувати проксі для завантаження програм"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Щоб використовувати проксі сервер для завантаження програм, треба "
+"автентифікуватись."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "ПОМИЛКА"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Завантажено %sB з %sB за %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Завантажено %sB з %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "ПОМИЛКА:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Ви не можете виконувати цю дію."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Створення черги"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Розв’язання залежностей"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Буде встановлено наступний НОВИЙ пакунок (%(count)s):"
+msgstr[1] "Буде встановлено наступні НОВІ пакунки (%(count)s):"
+msgstr[2] "Буде встановлено наступні НОВІ пакунки (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Наступний пакунок буде оновлений (%(count)s):"
+msgstr[1] "Наступні пакунки будуть оновлені (%(count)s):"
+msgstr[2] "Наступні пакунки будуть оновлені (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Наступний пакунок буде ВИЛУЧЕНО (%(count)s):"
+msgstr[1] "Наступні пакунки буде ВИЛУЧЕНО (%(count)s):"
+msgstr[2] "Наступні пакунки буде ВИЛУЧЕНО (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Буде встановлено СТАРА ВЕРСІЯ наступного пакунку (%(count)s):"
+msgstr[1] "Буде встановлено СТАРІ ВЕРСІЇ наступних пакунків (%(count)s):"
+msgstr[2] "Буде встановлено СТАРІ ВЕРСІЇ наступних пакунків (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Наступний пакунок буде перевстановлено (%(count)s):"
+msgstr[1] "Наступні пакунки буде перевстановлено (%(count)s):"
+msgstr[2] "Наступні пакунки буде перевстановлено (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Наступний пакунок буде утримано (%(count)s):"
+msgstr[1] "Наступні пакунки буде утримано (%(count)s):"
+msgstr[2] "Наступні пакунки буде утримано (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Треба отримати архіви розміром %sБ"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Після проведення операції буде використано %sБ вільного місця диску."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Після проведення операції буде звільнено %sБ на диску."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Бажаєте продовжити [Т/н]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Щоб обробити декілька пакунків, візьміть їхні назви у лапки:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Оновити кеш"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Спробувати налагодити порушені залежності. Ця операція потенційно "
+"небезпечна, оскільки може призвести до вилучення великої кількості пакунків."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Спробувати закінчити попереднє незавершене встановлення"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Встановити вказані пакунки"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Перевстановлення вказаних пакунків"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Вилучити вказані пакунки"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Вилучити вказані пакунки разом з налаштуваннями"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Встановити стару версію вказаних пакунків"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Застаріло: використовуйте --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Оновити систему безпечним чином"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Оновити систему, можливо встановлюючи та вилучаючи пакунки"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Додати розповсюджувача ПЗ до списку тих, кому можна довіряти"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+"Додати keyid розповсюджувача ПЗ (також вимагає використання опції --"
+"keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Використовувати вказаний сервер для пошуку ключів"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Додати нове сховище із вказаного deb-рядка"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Вказати альтернативний файл sources.list.d, у який треба додавати сховища."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Показати ключі довірених розпосюджувачів ПЗ"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Вилучити довірчий ключ для цього цифрового підпису"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Переналаштувати встановлені пакунки. Можливо, потрібно буде відповісти на "
+"кілька запитань"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Будуть показанні запитання із низьким приоритетом"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Не прив’язуватись до apt терміналу"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Дозволити пакунки з неавтентифікованих джерел"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Показати додаткову інформацію про пакунки. Наразі лише номер версії"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Очікування завершення автентифікації"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Не вимикайте фонову службу через її неактивність"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Не завантажувати жодних втулків"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Показувати інформацію про внутрішню обробку"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Вийти і замінити вже запущену службу"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Слухати транспорт сесій DBus (Потрібен лише для тестування)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Виконати операцію в окремому середовищі"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Зберігати статистику профілю у вказаному файлі"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "Не вносьте жодних змін до системи (тільки для розробників)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Встановлений файл"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Встановлені пакунки"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Доданий з файла ключ"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Кэш оновлений"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Пошук завершено"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Вилучений довірчий ключ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Вилучені пакунки"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Оновлені пакунки"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Система оновлена"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Застосовані зміни"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Виправлене незавершене встановлення"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Виправлені порушені залежності"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Додано джерело программного забезпечення"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Увімкнено компонент дистрибутива"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Вилучені файли завантажених пакунків"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Переналаштовано встановлені пакунки"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Успішно"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Скасовано"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Збій"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Встановлення файлу"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Встановлення пакунків"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Додавання ключа з файлу"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Оновлення кешу"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Вилучення довірчого ключа"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Вилучення пакунків"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Оновлення пакунків"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Оновлення системи"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Застосування змін"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Виправлення незавершеного встановлення"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Виправлення встановленого програмного забезпечення"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Додавання джерела программного забезпечення"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Вмикання компоненту дистрибутива"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "ВИлучення завантажених файлів пакунків"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Переналаштування встановлених пакунків"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Пошук"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Збій встановлення файлу пакунка"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Збій встановлення програмного забезпечення"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Збій оновлення списку програмного забезпечення"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+"Збій вилучення елемента зі списку надійних розповсюджувачів програмного "
+"забезпечення"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Збій вилучення програмного забезпечення"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Збій оновлення програмного забезпечення"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Збій оновлення системи"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Збій застосування змін програмного забезпечення"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Збій виправлення незавершеного встановлення"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Не вдалося задовольнити порушені залежності"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Збій додавання джерела программного забезпечення"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Збій вмикання компоненту дистрибутива"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Збій під час вилучення завантажених файлів пакунків"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Не вдалося виконати пошук"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Додавання ліцензійного ключа"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Перевірте інтернет-з’єднання"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Якщо Ви використовуєте сторонні джерела програм, відключіть їх, оскільки "
+"вони часто є джерелом проблем.\n"
+"Потім виконайте в терміналі наступну команду: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "Вибраний файл, можливо, не є файлом GPG ключа або він пошкоджений."
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Не вдалося вилучити вибраний ключ. Переконайтесь, що вказано коректний "
+"цифровий підпис."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Перевірте чи не запущено іншу програму керування пакунками, наприклад "
+"Synaptic чи aptitude. Не можна використовувати кілька програм одночасно."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Це серйозна проблема. Спробуйте повторити пізніше. Якщо проблема виникне "
+"знову, будь ласка, надішліть звіт про помилку розробникам."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Перевірте написання назви пакунку і що відповідне сховище дозволено "
+"використовувати."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Немає потреби в оновленні."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Немає потреби в установці."
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Немає потреби у вилученні."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Ви запросили вилучення пакунка, який є невід’ємною частиною системи."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Втрачено з’єднання з фоновою службою. Швидше за все, вона впала."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Збій під час встановлення або вилучення пакунка."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Запитаний параметр не підтримується."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Схоже, виникла програмна помилка в aptdaemon — програмі, що дозволяє "
+"встановлювати/вилучати програмне забезпечення та виконати інші пов’язані з "
+"ним завдання"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Ця помилка може бути зумовлена потребою додаткових програмних пакунків, які "
+"відсутні або не можуть бути встановлені. Крім того, певні пакунки можуть "
+"конфліктувати між собою, тому їх не можна встановлювати одночасно."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Збій під час встановлення міг виникнути через помилки у відповідному "
+"пакунку, або воно було перерване у неприпустимий спосіб. Вам слід виправити "
+"ці помилки, перш ніж ви зможете встановлювати або вилучати будь-які інші "
+"програми."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Будь-ласка, скопіюйте файл на локальний комп’ютер та перевірте права на "
+"нього."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Встановлення пакунку, що порушує стандарти якості не дозволено. Це може "
+"призвести до серйозних проблем для Вашого комп’ютера. Будь-ласка, зверніться "
+"до особи або організації, що надали цей пакунок та додайте деталі, приведені "
+"нижче."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Завантажений ключ ліцензії, який потребує дане програмне забезпечення, не "
+"дійсний або міг бути встановлений\n"
+"не правильно. Перегляньте деталі для більш конкретної інформації."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Всі можливі оновлення встановлені."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Ліцензійний ключ, що дозволяє використовувати дане програмне забезпечення не "
+"можливо завантажити. Будь-ласка перевірте Ваше з’єднання з мережею."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Ви не можете виконувати цю дію."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Не вдалось завантажити файли пакунка"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Не вдалося завантажити інформацію про сховище"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Залежності пакунків не можуть бути розв’язані"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Система пакунків пошкоджена"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Ключ не встановлений"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Ключ не вилучений"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Не вдалося заблокувати менеджер пакунків"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Не вдалося завантажити список пакунків"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Пакунка не існує"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Пакунок вже оновлено"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Пакунок вже встановлено"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Пакунок не встановлений"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Не вдається вилучити важливий системний пакунок"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Завдання не може бути відстежене чи проконтрольоване"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Помилка операції з пакунком"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Потрібне встановлення ненадійних пакунків"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Попередне встановленя не було завершене"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Пакунок поганої якості"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Неможливо відкрити файл пакунку"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Функція не підтримується"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Невдале завантаження ліцензійного ключа"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Помилка при встановленні ліцензійного ключа"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Систему оновлено"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Виникла неконтрольована помилка"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Очікування запуску служби"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Очікування"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Очікування потрібного носія з інформацією"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Очікування закінчення роботи інших менеджерів програмного забезпечення"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Очікування запиту конфігураційного файла"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Виконання завдання"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Звантаження"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Запит джерел програмного забезпечення"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Очищення"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Завершено"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Скасування"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Завантаження списку програм"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Встановлення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Налаштування %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Вилучення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Повне вилучення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Нічого не відзначено з %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Запуск після-інсталяційного тригера %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Оновлення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Розпакування %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Підготовка до встановлення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Підготовка налаштувань %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Підготовка вилучення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Підготовка повного вилучення %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Встановлено %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Повністю вилучено %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Вилучено %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Виконано"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Помилка автентификації"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Отримання"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Очікування"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Мережеве з’єднання недоступне"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Опрацювання %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Завантажено %sB з %sB за %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Завантажено %sB з %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Докладніше"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Файл"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Завантажено %sБ"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Завантажено"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "Потрібен CD/DVD '%s'"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+"Будь-ласка, вставте вищевказаний CD/DVD диск до приводу '%s', щоб встановити "
+"пакунки з нього."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "П_родовжити"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Встановити"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Перевстановити"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Вилучити"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Очистити"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Оновити"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Понизити версію"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Пропустити оновлення"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Будь-ласка, гляньте на перелік змін нижче."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Треба встановити додаткове програмне забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Треба перевстановити додаткове програмне забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Треба вилучити додаткове програмне забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Треба очистити додаткове програмне забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Треба оновити додаткове програмне забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Треба понизити версію додаткового програмного забезпечення"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Оновлення буде пропущено"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Треба внести додаткові зміни"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Загалом буде завантажено %sБ"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sБ диску буде звільнено"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Буде використано %sБ вільного місця на диску"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "Замінити ваші зміни в '%s' новішою версією файлу налаштувань?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Якщо ви не знаєте, що це за файл і нащо він там, зазвичай можна безпечно "
+"його замінити."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Зміни"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "З_алишити як є"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Замінити"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Детальніше"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Очікую завершення %s"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Завантаження %(files)s"
+msgstr[1] "Завантаження %(files)s"
+msgstr[2] "Завантаження %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "локальне сховище"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Завантаження з %s"
+msgstr[1] "Завантаження з %s"
+msgstr[2] "Завантаження з %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Структура %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Опис %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Опис підпису %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Доступні пакунки з %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Доступне джерело %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Доступний переклад %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Переклад для %s (%s) з %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Переклад для %s з %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Переклад (%s) з %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Пакунок %s недоступний"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Пакунок %s не встановлено"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Версія %s з %s не встановлена"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Пакунок %s вже встановлено"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Версія %s з %s відсутня"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Помилка завантаження та встановлення ключа %s з %s:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Файл ключа %s не може бути встановлений: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Ключ з відбитком %s не може бути вилученим: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Неможливо вилучити пакунок %s."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Версія %s з %s не встановлена"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Попередня версія %s з %s вже встановлена"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Версію %s з %s вже встановлено"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Версія %s з %s відсутня"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+"Ви повинні вказати версію %s, до якої потрібно виконати зниження версії"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Найпізніша версія %s з %s вже встановлена"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Пакунок %s відсутній у випуску %s"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Пакунок %s не може бути вилучений"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Пакунок не надає відповідного контрольного поля Installed-Size. Див. Правила "
+"Debian 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Ключ ліцензії відсутній"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Ліцензійний ключ не має містити в собі коду для виконання."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "%s невірний шлях для ключа ліцензії"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Ключ ліцензії існує: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Розташування ключа ліцензії небезпечне з тих пір, як шлях містить символічні "
+"посилання. Шлях %s — символічне посилання %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Шлях куди встановлюється ключ більше не існує: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Збій запису файлу ключа до %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Наступні пакунки мають незадоволені залежності:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "але це віртуальний пакунок"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "але він не встановлений"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "але він не буде встановлений"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "але %s встановлено"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "але %s має бути встановлено"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Збій додавання ключа до списку надійних розповсюджувачів програмного "
+#~ "забезпечення"
diff --git a/po/ur.po b/po/ur.po
new file mode 100644
index 0000000..b18db01
--- /dev/null
+++ b/po/ur.po
@@ -0,0 +1,1420 @@
+# Urdu translation for aptdaemon
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2011-06-23 23:56+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Urdu <ur@li.org>\n"
+"Language: ur\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"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "پیکج تجدید"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "غلطی"
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "غلطی:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "آپ کو اجازت نہیں دی نہیں اس کارروائی کو انجام دینے کی."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "قطار میں ڈالا جا رہا ہے"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "انحصاریوں کا اندازہ کررہا ہے"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "آپ کو اجازت نہیں دی نہیں اس کارروائی کو انجام دینے کی."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/uz.po b/po/uz.po
new file mode 100644
index 0000000..7d4030b
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,1419 @@
+# Uzbek translation for aptdaemon
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-05-13 14:21+0000\n"
+"Last-Translator: Akmal Xushvaqov <akmalxster@gmail.com>\n"
+"Language-Team: Uzbek <uz@li.org>\n"
+"Language: uz\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Ишончли етказиб берувчилар калитлари рўйхати"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr ""
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr ""
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr ""
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr ""
+
+#: ../aptdaemon/console.py:249
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr ""
+
+#: ../aptdaemon/console.py:255
+#, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr ""
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr ""
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr ""
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr ""
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr ""
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr ""
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr ""
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr ""
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr ""
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr ""
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr ""
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr ""
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr ""
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr ""
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr ""
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr ""
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr ""
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr ""
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr ""
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr ""
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr ""
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr ""
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr ""
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr ""
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr ""
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr ""
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr ""
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr ""
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr ""
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr ""
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr ""
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr ""
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr ""
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr ""
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr ""
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr ""
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr ""
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr ""
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr ""
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr ""
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr ""
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr ""
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr ""
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr ""
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr ""
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr ""
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+
+#: ../aptdaemon/enums.py:475
+msgid "You don't have the required privileges to perform this action."
+msgstr ""
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr ""
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr ""
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr ""
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr ""
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr ""
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr ""
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr ""
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr ""
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr ""
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr ""
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr ""
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr ""
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr ""
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr ""
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr ""
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr ""
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr ""
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr ""
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr ""
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr ""
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr ""
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr ""
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr ""
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr ""
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr ""
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr ""
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr ""
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr ""
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr ""
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr ""
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr ""
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr ""
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr ""
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr ""
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr ""
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr ""
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr ""
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr ""
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr ""
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr ""
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr ""
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr ""
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr ""
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr ""
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..b02dc4e
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,1474 @@
+# Vietnamese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-02 13:00+0000\n"
+"Last-Translator: Huynh Trong Nghia <Nghia.HT@hotmail.com>\n"
+"Language-Team: Vietnamese <vi@li.org>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "Liệt kê khóa của các nhà cung cấp uy tín"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "Để xem danh sách các khóa tin tưởng, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "Gỡ bỏ những tập tin của các gói đã tải về"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr ""
+"Để xóa sạch những tập tin của các gói đã tải về, bạn cần xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "Thay đổi cấu hình phần mềm"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "Để thay đổi tùy chỉnh của phần mềm, bạn cần xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "Thay đổi kho phần mềm"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "Để thay đổi các cài đặt kho phần mềm, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "Cài đặt tập tin gói"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "Để cài đặt gói này, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "Cập nhật thông tin gói"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "Để cập nhật mục lục phần mềm, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "Cài đặt hay gỡ bỏ các gói"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "Để cài đặt hay gỡ bỏ phần mềm, bạn cần phải xác thực quyền"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "Cài đặt phần mềm từ kho chứa uy tín."
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "Để cài đặt phần mềm, bạn cần phải xác thực."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "Thêm một kho phần mềm mới và cài đặt các gói từ đó"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "Để cài đặt phần mềm từ một nguồn mới, bạn cần phải xác thực quyền."
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "Thêm một kho phần mềm trả phí mới và cài đặt các gói từ đó"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "Để cài đặt phần mềm trả phí, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "Nâng cấp gói"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "Để cài đặt các phần mềm cập nhật, bạn cần phải xác thực quyền."
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "Hủy bỏ nhiệm vụ của một người dùng khác"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr ""
+"Để hủy bỏ các thay đổi phần mềm của một ai đó khác, bạn cần phải xác thực "
+"quyền."
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "Cài đặt một proxy cho việc tải phần mềm"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr ""
+"Để sử dụng một máy chủ proxy cho việc tải phần mềm, bạn cần phải xác thực "
+"quyền."
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "LỖI"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "Đã tải %sB của %sB với tốc độ %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "Đã tải về %sB của %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "Lỗi:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "Bạn không được phép thực hiện hành động này."
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "Đang xếp hàng"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "Đang giải quyết các phụ thuộc"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "Những gói mới sau đây sẽ được cài đặt (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "Những gói sau đây sẽ được nâng cấp (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "Những gói sau đây sẽ được GỠ BỎ (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "Những gói sau đây sẽ được HẠ CẤP (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "Những gói sau đây sẽ được cài đặt lại (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "Những gói sau đây đã được giữ lại (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "Cần lấy %sB lưu trữ."
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "Sau hành động này, %sB không gian đĩa sẽ được sử dụng."
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "Sau hành động này, %sB không gian đĩa sẽ được giải phóng."
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "Bạn có muốn tiếp tục [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"Để thực hiện trên nhiều gói hãy để tên các gói trong dấu ngoặc kép:\n"
+"aptcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "Làm tươi bộ đệm"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr ""
+"Cố gắng để giải quyết các phụ thuộc bị hỏng. Đây là hành động tiềm tàng nguy "
+"hiểm vì nó có thể sẽ gỡ bỏ rất nhiều gói."
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "Cố gắng để hoàn tất một cài đặt không đầy đủ trước đó"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "Cài đặt các gói cho trước"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "Cài đặt lại các gói cho trước"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "Gỡ bỏ các gói cho trước"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "Gỡ bỏ các gói cho trước bao gồm cả các tập tin cấu hình"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "Hạ cấp những gói đã chọn"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "Bị phản đối: Hãy sử dụng --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "Nâng cấp hệ thống một cách an toàn"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "Nâng cấp hệ thống, có thể cài đặt hay gỡ bỏ các gói"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "Thêm nhà cung cấp vào danh sách uy tín"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "Thêm keyid của nhà cung cấp (cũng cần --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "Sử dụng máy chủ khóa cho trước để tìm các khóa"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "Thêm kho phần mềm mới từ dòng deb cho trước"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr ""
+"Chỉ định một tập tin sources.list.d thay thế chứa các kho phần mềm được thêm "
+"vào."
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "Liệt kê các khóa của nhà cung cấp uy tín"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "Gỡ bỏ khóa uy tín của dấu vân tay cho trước"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr ""
+"Cấu hình lại những gói đã cài. Quyền ưu tiên tối thiểu của các vấn đề có thể "
+"được xác định (không bắt buộc)."
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "Quyền ưu tiên tối thiểu của các vấn đề về debconf được hiển thị"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "Không được gắn vào dòng lệnh apt"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "Cho phép các gói từ những nguồn chưa xác thực"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "Hiển thị thông tin bổ sung về các gói. Hiện tại chỉ có số phiên bản"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "Đang chờ xác thực"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "Không nên tắt trình nền vì nó không hoạt động"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "Không nạp trình bổ sung nào"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "Hiển thị thông tin xử lý nội bộ"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "Thoát và thay thế một trình nền đang chạy sẵn"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "Nhận tín hiệu từ các bus phiên chạy DBus (Chỉ yêu cầu để chạy thử"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "Tiến hành các thao tác trong chroot đã cho trước"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "Lưu trữ thông tin hồ sơ trong tập tin được chỉ định"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr ""
+"Đừng tạo bất cứ thay đổi nào tới hệ thống (Chỉ dùng cho các lập trình viên)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "Tập tin đã cài đặt"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "Các gói đã cài đặt"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "Các phím đã được thêm vào từ tập tin"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "Bộ đêm đã cập nhật"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "Tìm kiếm xong"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "Các phím tin tưởng đã gỡ bỏ"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "Các gói đã gỡ bỏ"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "Các gói đã cập nhật"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "Hệ thông đã nâng cấp"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "Các thay đổi đã áp dụng"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "Đã sửa hệ thống cài đặt không đầy đủ"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "Đã sửa lỗi giữa các gói phụ thuộc lẫn nhau"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "Nguồn phần mềm đã thêm"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "Bật thành phần của bản phân phối"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "Những tập tin thuộc các gói đã gỡ bỏ"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "Cấu hình lại các gói đã cài đặt"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "Thành công"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "Đã hủy"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "Bị thất bại"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "Đang cài đặt tập tin"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "Đang cài đặt các gói"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "Đang thêm khóa từ tập tin"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "Đang cập nhật bộ đệm"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "Đang gỡ bỏ các khóa tin cậy"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "Đang gỡ bỏ các gói"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "Đang cập nhật các gói"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "Đang nâng cấp hệ thống"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "Đang áp dụng các thay đổi"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "Đang sửa hệ thống đã cài đặt không đầy đủ"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "Đang sửa chữa phần mềm đã cài đặt"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "Đang thêm nguồn phần mềm"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "Đang bật thành phần của bản phân phối"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "Đang gỡ bỏ những tập tin thuộc các gói đã tải về"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "Đang cấu hình lại những gói đã cài đặt"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "Đang tìm kiếm"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "Cài đặt tập tin gói đã thất bại"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "Cài đặt phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "Cập nhật lại danh sách phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "Loại bỏ nhà cung cấp phần mềm từ danh sách tin cậy đã thất bại"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "Loại bỏ phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "Cập nhật phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "Cập nhật hệ thống đã thất bại"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "Áp dụng các thay đổi cho phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "Việc sửa hệ thống cài đặt không đầy đủ đã thất bại"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "Việc sửa lỗi giữa các gói phụ thuộc lẫn nhau đã thất bại"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "Thêm nguồn phần mềm thất bại"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "Bật thành phần của bản phân phối thất bại"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "Gỡ bỏ những tập tin thuộc các gói không thành công"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "Tìm kiếm thất bại"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "Đang thêm khóa chứng nhận"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "Kiểm tra kết nối Internet của bạn."
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"Kiểm tra xem liệu bạn có đang sử dụng kho phần mềm của hãng thứ ba. Nếu có "
+"hãy vô hiệu hóa chúng, vì chúng là một nguồn chung của các vấn đề.\n"
+"Hơn nữa hãy sử dụng lệnh sau đây trong Cửa sổ dòng lệnh: apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr ""
+"Tập tin đã chọn có thể không phải là một tập tin khóa GPG hoặc nó cũng có "
+"thể đã bị hỏng"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr ""
+"Khóa đã chọn không thể được gỡ bỏ. Hãy kiểm tra liệu bạn có cung cấp một dấu "
+"vân tay có giá trị."
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"Kiểm tra nếu hiện tại bạn đang chạy một công cụ quản lý phần mềm khác, ví dụ "
+"Synaptic hay aptitude. Chỉ một công cụ được cho phép tạo thay đổi trong một "
+"thời điểm."
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"Đây là một vấn đề nghiêm trọng. Hãy thử lại sau. Nếu vấn đề này xuất hiện "
+"một lần nữa, xin vui lòng báo cáo lỗi tới các nhà phát triển."
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr ""
+"Soát lỗi chính tả của tên gói và kiểm tra xem kho phần mềm thích hợp đã được "
+"kích hoạt hay chưa."
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "Hiện tại việc cập nhật là không cần thiết."
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "Hiện tại việc cài đặt là không cần thiết"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "Hiện tại việc gỡ bỏ là không cần thiết."
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "Bạn đã yêu cầu gỡ bỏ một gói thiết yếu trong hệ thống của bạn."
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "Kết nối đến trình nền đã mất. Nhiều khả năng trình nền đã sụp đổ."
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "Việc cài đặt hoặc gỡ bỏ một gói phần mềm đã thất bại."
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "Chức năng đang được yêu cầu không được hỗ trợ."
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"Có vẻ như xuất hiện lỗi lập trình trong aptdaemon, phần mềm này giúp bạn cài "
+"đặt/gõ bỏ phần mềm và thực hiện những tác vụ liên quan khác đến việc quản lý "
+"gói."
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"Lỗi này có thể được gây ra bởi các gói phần mềm cần thêm vào bị thiếu hay "
+"không thể cài đặt. Hơn nữa có thể đã xảy ra xung đột giữa các gói không được "
+"phép cài đặt trong cùng một lúc."
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "Nó yêu cầu cài đặt các gói từ các nguồn chưa được chứng thực."
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"Sự cài đặt đã thất bại do một lỗi sai trong gói phần mềm hoặc do quá trình "
+"cài đặt đã bị kết thúc một cách không chuẩn. Bạn phải sửa lại lỗi này trước "
+"khi có khả năng cài đặt hoặc loại bỏ bất kỳ một phần mềm nào khác."
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr ""
+"Vui lòng sao chép tập tin này đến máy cục bộ và kiểm tra quyền truy cập tập "
+"tin."
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"Cài đặt một gói vi phạm tiêu chuẩn chất lượng là không được chấp nhận. Việc "
+"này có thể gây ra những vấn đề nghiêm trọng cho máy tính của bạn. Vui lòng "
+"liện lạc với cá nhân hoặc tổ chức cung cấp gói này và kèm các chi tiết bên "
+"dưới."
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"Khóa chứng nhận cần thiết để chạy phần mềm này đã được tải về nhưng khóa đó "
+"không đúng hay không thể được cài đặt một cách đúng đắn.\n"
+"Xem chi tiết để biết thêm thông tin."
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "Tất cả bản nâng cấp có hiệu lực đã được cài đặt rồi."
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr ""
+"Không thể tải xuống khóa chứng nhận dùng để cho phép bạn sử dụng bộ phận "
+"phần mềm này. Vui lòng kiểm tra lại kết nối mạng."
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "Bạn không được phép thực hiện hành động này."
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "Việc tải các tập tin gói đã thất bại"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "Việc tải về thông tin kho phần mềm đã thất bại"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "Các phụ thuộc gói phần mềm không thể được giải quyết"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "Hệ thống gói bị hỏng"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "Khóa đã không được cài đặt"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "Khóa đã không được gỡ bỏ"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "Việc khóa bộ quản lý gói thất bại"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "Việc nạp danh sách gói thất bại"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "Gói không tồn tại"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "Gói là mới nhất rồi"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "Gói đã được cài đặt rồi"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "Gói chưa được cài đặt"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "Việc gỡ bỏ gói hệ thống thiết yếu thất bại"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "Tác vụ không thể được quản lý hay điều khiển"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "Hoạt động gói thất bại"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "Yêu cầu cài đặt các gói không đáng tin cậy"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "Lần cài đặt trước chưa hoàn thành xong"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "Gói này có chất lượng kém"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "Không thể mở tập tin cài gói"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "Chức không được hỗ trợ"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "Lỗi khi tải khóa chứng nhận xuống"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "Lỗi khi cài đặt khóa chứng nhận"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "Hệ thống này là mới nhất rồi"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "Một lỗi không xử lý được đã xảy ra"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "Đang chờ cho dịch vụ để bắt đầu"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "Đang đợi"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "Đang chờ môi trường cần thiết"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "Đang chờ các bộ quản lý phần mềm khác thoát"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "Đang chờ nhắc tập tin cấu hình"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "Đang chạy tác vụ"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "Đang tải về"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "Đang truy vấn nguồn phần mềm"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "Đang dọn dẹp"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "Đã hoàn tất"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "Đang hủy bỏ"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "Đang nạp danh sách phần mềm"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "Đang cài đặt %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "Đang cấu hình %s..."
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "Đang gỡ bỏ %s..."
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "Đang gỡ bỏ hoàn toàn %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "Đang ghi nhận tình trạng biến mất của %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "Đang chạy bộ gây nên tiến trình cuối cùng cài đặt %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "Đang nâng cấp %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "Đang mở gói %s..."
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "Đang chuẩn bị cài đặt %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "Đang chuẩn bị cấu hình %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "Đang chuẩn bị gỡ bỏ %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "Đang chuẩn bị gỡ bỏ hoàn toàn %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "Đã cài đặt %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "Đã gỡ bỏ hoàn toàn %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "Đã gỡ bỏ %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "Hoàn tất"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "Xác thực thất bại"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "Đang lấy về"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "Rảnh"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "Mạng không có sẵn"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "Đang xử lý %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "Đã tải %sB của %sB với tốc độ %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "Đã tải về %sB của %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "Chi tiết"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "Tập tin"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "Đã tải %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "Đã tải về"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "CD/DVD '%s' là bắt buộc"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "Hãy đưa CD/DVD bên trên vào ổ '%s' để cài đặt các gói phần mềm từ nó."
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "_Tiếp tục"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "Cài đặt"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "Cài lại"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "Gỡ bỏ"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "Làm sạch"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "Nâng cấp"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "Hạ cấp"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "Bỏ qua nâng cấp"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "Hãy nhìn một chút vào danh sách các thay đổi dưới đây."
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "Phần mềm phụ thêm cần được cài đặt"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "Phần mềm phụ thêm cần được cài đặt lại"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "Phần mềm phụ thêm cần được gỡ bỏ"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "Phần mềm phụ thêm cần được làm sạch"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "Phần mềm phụ thêm cần được nâng cấp"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "Phần mềm phụ thêm cần được hạ cấp"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "Các cập nhật sẽ bị bỏ qua"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "Các thay đổi phụ thêm là cần thiết"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "Tổng cộng %sB sẽ được tải."
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "%sB không gian đĩa sẽ được giải phóng."
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "Thêm %sB không gian đĩa sẽ được sử dụng."
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr ""
+"Thay thế những thay đổi của bạn trong '%s' bằng một tập tin cấu hình phiên "
+"bản mới hơn?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr ""
+"Nếu bạn không biết lý do tại sao đã có tệp này rồi, thì việc thay thế nó "
+"thường sẽ an toàn."
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "_Các thay đổi"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "_Giữ lại"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "_Thay thế"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "_Chi tiết"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "Chờ %s để thoát"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "Đang tải về %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "kho cục bộ"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "Đang tải từ %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "Cấu trúc của %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "Diễn giải của %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "Diễn giải chữ ký của %s"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "Những gói sẵn dùng từ %s"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "Những nguồn sẵn dùng từ %s"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "Những bản dịch sẵn dùng từ %s"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "Dịch sang %s (%s) từ %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "Dịch sang %s từ %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "Các bản dịch (%s) từ %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "Gói %s không sẵn có"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "Gói %s chưa được cài đặt"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "Phiên bản %s của %s chưa được cài đặt"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "Gói %s đã được cài đặt rồi"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "Phiên bản %s của %s không sẵn có."
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "Đường dẫn URL khóa máy chủ không hợp lệ: %s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "Giao thức máy chủ không hợp lệ: %s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "Khóa kí danh không hợp lệ: %s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"Tải về và cài đặt khóa %s từ %s không thành công:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "Tập tin khóa %s không thể cài đặt: %s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "Khóa với vân tay %s không thể gỡ bỏ: %s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "Gói %s không thể gỡ bỏ."
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "Phiên bản %s của %s chưa được cài đặt"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "Phiên bản cũ %s của %s đã được cài đặt rồi"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "Phiên bản %s của %s đã được cài đặt rồi"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "Phiên bản %s của %s không sẵn có"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "Bạn cần xác định một phiên bản để hạ cấp %s xuống"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "Phiên bản mới %s của %s đã được cài rồi"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "Gói %s chưa sẵn có trong bản phát hành %s này."
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "Gói %s không thể gỡ bỏ"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"Gói này không cung cấp một trường Installed-Size hợp lệ. Tham khảo Debian "
+"Policy 5.6.20."
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "Khóa chứng nhận trống"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "Khóa chứng nhận không được phép chứa mã thực thi."
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "Đường dẫn khóa chứng nhận %s không thích hợp"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "Khóa chứng nhận đã tồn tại: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr ""
+"Vị trí của khóa chứng nhận không an toàn do nó chứa liên kết tượng trưng. "
+"Đường dẫn %s dẫn tới %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "Chưa tồn tại thư mục để cài khóa: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "Thất bại khi ghi tập tin khóa vào: %s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "Những gói sau không chưa được thỏa mãn về các gói phụ thuộc:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "nhưng nó là một gói ảo"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "nhưng nó chưa được cài đặt"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "nhưng nó sẽ không được cài đặt"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "nhưng %s đã được cài đặt"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "nhưng %s sẽ được cài đặt"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr ""
+#~ "Bổ sung khóa xác thực vào danh sách nhà cung cấp tin cậy đã thất bại"
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..099942e
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,1437 @@
+# Simplified Chinese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+# YunQiang Su <wzssyqa@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-01 12:30+0000\n"
+"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "列出信任的来源"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "要列出信任的来源,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "删除已下载的软件包"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "需要授权以删除已下载的软件包文件。"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "修改软件设置"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "需要授权以更改软件设置。"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "修改软件源"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "要更改软件源设置,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "安装软件包文件"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "要安装这个软件包,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "更新软件包信息"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "要更新软件目录,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "安装或卸载软件包"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "要安装或卸载软件,您需要进行验证。"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "从高度受信的白名单软件仓库中安装软件。"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "您需要经过认证方可安装软件。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "添加一个新软件源并从中安装软件包"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "要从新的软件源中安装软件,您需要进行验证。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "添加一个新的付费软件源并从中安装软件包"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "要安装付费软件,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "升级软件包"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "要安装更新的软件,您需要进行验证。"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "取消另一用户的任务"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "要取消其他人的软件变更,您需要进行身份认证。"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "为软件下载设置代理服务器"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "要使用代理服务器下载软件,您需要进行验证。"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "错误"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "下载 %sB / %sB 速度 %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "已下载 %sB,共 %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "错误:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "不允许您执行此操作。"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "队列"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "正在解决依赖关系"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "将要安装下列新软件包 (%(count)s 个):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "将要升级下列软件包 (%(count)s 个):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "将要卸载下列软件包 (%(count)s 个):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "将要降级下列软件包 (%(count)s 个):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "将要重新安装下列软件包 (%(count)s 个):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "将不更新下列软件包 (%(count)s 个):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "需要获取 %sB 文件。"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "执行此操作后,将会使用 %sB 磁盘空间。"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "执行此操作后,将会释放 %sB 磁盘空间。"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "您想要继续吗 [Y/n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"要操作多于一个包,将包的名称用引号括起来:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "刷新缓存"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr "尝试修复损坏的依赖关系。这可能有危险,可能会尝试卸载许多软件包。"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "尝试完成上次不完整的安装"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "安装给定的软件包"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "重新安装给定的软件包"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "删除给定的包"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "删除给定的包和配置文件"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "降级当前软件包"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "不推荐:请使用 --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "用安全的方式升级系统"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "升级系统,可能会安装、卸载软件包"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "信任将该制造商"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "添加制造商密钥标识 (同时需要 --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "使用指定的密钥服务器来查找密钥"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "从给定的 deb 行添加软件源"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "指定一个附加的 sources.list.d 文件来添加软件源。"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "列出信任的制造商密钥"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "移除给定指纹对应的信任密钥"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "重新配置已经安装的软件包。可以指定的最低优先级的问题。"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "将显示事项的最低 debconf 优先级"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "不要附加到 apt 终端"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "允许来自未认证源的软件包"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "显示该软件包的附加信息。当前仅显示版本号。"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "正在等待验证"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "不活动时不关闭后台程序"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "不要加载任何插件"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "显示内部处理信息"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "退出并替换当前正在运行的后台程序"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "在 DBus 会话总线上监听(仅用于测试)"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "在指定的 chroot 中执行操作"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "在指定的文件里存储配置状态"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "不要对系统进行任何改动 (仅供发者使用)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "已安装文件"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "已安装软件包"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "已从文件添加密钥"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "已更新缓存"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "搜索完毕"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "已移除信任密钥"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "已删除的软件包"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "已更新的软件包"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "已升级的系统"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "已应用的更改"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "修复了不完整的安装"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "修复了损坏的依赖关系"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "已添加软件源"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "启用发行版的组件"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "删除已下载的软件包文件"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "重新配置已安装的软件包"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "成功"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "取消"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "失败"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "正在安装文件"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "正在安装软件包"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "正从文件添加密钥"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "正在更新缓存"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "正移除信任密钥"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "正在删除软件包"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "正在升级软件包"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "正在升级系统"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "正在应用更改"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "正在修复不完整的安装"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "正在修复已安装的软件"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "正在添加软件源"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "正在启用发行版的组件"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "正在删除已下载的软件包文件"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "正在重新配置已安装的软件包"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "正在搜索"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "包文件安装失败"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "软件安装失败"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "刷新软件列表失败"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "一旦失败则从信任列表中移除提供者"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "移除软件失败"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "更新软件失败"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "升级系统失败"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "应用变更失败"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "修复不完整的安装 失败"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "修复损坏的依赖关系 失败"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "添加软件源失败"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "启用发行版的组件失败"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "无法删除已下载的软件包文件"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "搜索失败"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "正在添加许可密钥"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "检查您的网络连接。"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"检查您是否使用了第三方源。如果是就禁用它们,它们常常导致问题。\n"
+"然后在终端中运行以下命令:apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "所选文件可能不是 GPG 密钥文件或者已经损坏。"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "所选的密钥无法移除。检查您提供的指纹是否有效。"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"检查您有没有运行其他软件包管理工具,比如新立得或者 aptitude。在同一时间只有一"
+"个工具可以进行更改。"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr ""
+"这是个很严重的问题。请稍后重试。如果问题还出现,请向开发人员报告一个错误。"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "检查包名的拼写是否正确,以及是否启用了相应的仓库。"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "不需要进行更新。"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "不需要进行安装"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "不需要进行卸载。"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "您请求移除一个软件包,而它是系统必需的组件。"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "与后台程序的连接丢失。可能后台程序已崩溃。"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "安装或移除软件包失败。"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "不支持所请求的功能。"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"aptdaemon 中似乎有编程错误,该软件用于安装、卸载软件并且执行其他的软件包管理"
+"任务。"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"这个错误可能是需要不存在或不可安装的软件包引起的。或者可能在软件包之间有冲"
+"突,它们不能同时安装。"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "此操作需要从未验证的源安装软件包。"
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"安装失败可能是因为对应软件包的错误或者被意外取消。您必须修复这个问题才能继续"
+"安装或移除软件。"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "请将该文件复制到您的本地电脑中并检查文件的权限。"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"安装会违反质量标准的软件包不被允许,因这可能对您的计算机造成问题。请联系提供"
+"此软件包文件的组织或个人,并提供以下详细信息。"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"已下载的运行这款软件所需的许可密钥无效,或者无法正确安装。\n"
+"有关更多信息,请参见详细信息。"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "所有可用更新均已安装。"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr "无法下载可使您使用这款软件的许可密钥。请检查您的网络连接。"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "不允许您执行此操作。"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "下载软件包文件失败"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "下载软件仓库信息失败"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "无法解决软件包依赖"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "软件包系统已损坏"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "没有安装密钥"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "没有移除密钥"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "锁定软件包管理器失败"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "载入软件包列表失败"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "软件包不存在"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "软件包已是最新"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "软件包已安装"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "软件包没有安装"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "移动系统必需软件包失败"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "无法监视或控制任务"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "软件包操作失败"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "需要安装不能信任的软件包"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "上次安装未完成"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "该软件包质量欠佳"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "无法打开软件包文件"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "不支持的功能"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "无法下载许可密钥"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "无法安装许可密钥"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "该系统已是最新"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "发生了一个无法处理的错误"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "正在等待服务启动"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "等待中"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "等待所需的媒体"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "等待其他软件管理程序退出"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "等待配置文件呼应"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "正在运行任务"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "下载中"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "正在查询软件源"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "清理中"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "完成"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "正在取消"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "正在载入软件列表"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "正在安装 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "正在配置 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "正在卸载 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "正在完全删除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "正在记录 %s 的消失"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "运行安装后的触发器 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "正在升级 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "正在解压缩 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "正在准备安装 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "正在准备配置 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "正在准备删除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "正在准备完全删除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "%s 已安装"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "%s 已完全删除"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "%s 已删除"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "完成"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "认证失败"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "获取中"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "空闲"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "网络不可用"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "正在处理 %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "下载 %sB / %sB 速度 %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "已下载 %sB,共 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "详情"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "文件"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "已下载 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "已下载"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "需要光盘“%s”"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "请将以上光盘插入光驱“%s”以安装光盘中的软件包。"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "继续(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "安装"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "重新安装"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "删除"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "清理"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "升级"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "降级"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "跳过升级"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "请查看下面的修改列表。"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "需要安装额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "需要重新安装额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "需要删除额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "需要清理额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "需要升级额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "需要降级额外的软件"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "将跳过更新"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "需要附加的更改"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "总共将下载 %sB。"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "将释放 %sB 磁盘空间。"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "将多占用 %sB 的磁盘空间。"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "用配置文件的更新版本覆盖您在“%s”中的更改吗?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "如果您不知道此文件为什么已经存在,那么覆盖它通常是安全的。"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "变更(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "维持原状(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "替换(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "细节(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "正在等待 %s 退出"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "下载中 %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "本地软件仓库"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "正在从 %s 下载"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s 的结构"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s 的描述"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s 的描述签名"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "可从 %s 获得的软件包"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "可从 %s 获得的源码"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "可从 %s 获得的翻译"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "%s (%s)的翻译,来自 %s"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "%s 的翻译,来自 %s"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "%s 翻译,来自 %s 仓库。"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "软件包 %s 不可用。"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "未安装软件包 %s"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "%s 版本的 %s 未安装"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "已安装软件包 %s"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s 版本的 %s 不可用。"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "密钥服务器 URL 无效:%s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "无效的服务器协议:%s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "无效的密钥 ID:%s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"下载并安装密钥 %s 从 %s 时失败:\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "无法安装密钥文件 %s:%s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "无法删除指纹 %s 的密钥文件:%s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "无法卸载软件包 %s"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "没有安装 %s 版本的 %s"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "已经安装更早的 %s 版本的 %s"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "已经安装 %s 版本的 %s"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s 版本的 %s 不可用"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "您需要指定一个版本号以降级 %s"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "更新的 %s 版本的 %s 已经安装"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "软件包 %s 在发行版 %s 中不可用。"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "无法卸载软件包 %s"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr ""
+"软件包没有提供合法的 Installed-Size 控制字符串。查看 Debian Policy 5.6.20。"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "许可密钥为空"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "许可密钥不允许包含可执行代码。"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "许可密钥路径 %s 无效"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "许可密钥已存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr "许可密钥的位置不安全,因为其包含符号链接。路径 %s 映射到 %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "该密钥要安装到目录尚不存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "无法将密钥文件写入到:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "下列软件包未满足的依赖关系:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "但是它是虚拟软件包"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "但是 %s 没有安装"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "但是无法安装 %s"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "但是 %s 已经安装"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "但是将要安装 %s"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "添加密钥到可信任程序提供者列表失败"
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644
index 0000000..760b5f0
--- /dev/null
+++ b/po/zh_HK.po
@@ -0,0 +1,1434 @@
+# Chinese (Hong Kong) translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-28 02:37+0000\n"
+"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
+"Language-Team: Chinese (Hong Kong) <zh_HK@li.org\n"
+"Language: zh_HK\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "列出信任廠商的金鑰"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "若要檢視信任金鑰清單,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "移除已下載的套件檔案"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "若要清空下載的套件檔案,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "變更軟件組態"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "若要變更軟件設定值,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "變更軟件套件庫"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "若要變更軟件套件庫設定值,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "安裝套件檔案"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "若要安裝此套件,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "更新套件資訊"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "若要更新軟件型錄,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "安裝或移除套件"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "若要安裝或移除軟件,您需要通過認證。"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "從白名單中高度信任的套件庫安裝軟件"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "若要安裝軟件,您需要先通過身份驗證。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "加入新套件庫並且安裝套件它提供的套件"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "若要從新來源安裝軟件,您需要通過認證。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "加入購買軟件的新套件庫並且安裝它提供的套件"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "若要安裝購買的軟件,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "升級套件"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "若要安裝更新版的軟件,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "取消另一位使用者的任務"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "若要取消其它人所作出的軟件變更,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "設定用來下載軟件的代理伺服器"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "若要使用代理伺服器以下載軟件,您需要通過認證。"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "錯誤"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "已下載 %sB,全部 %sB,速率 %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "已下載 %sB,全部 %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "錯誤:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "你無權執行本項操作。"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "正在佇列"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "正在解析相依性"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "下列「新」套件將被安裝 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "下列套件將被升級 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "下列套件將被「移除」(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "下列套件將被「降級」(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "下列套件將被重新安裝 (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "下列套件將被維持不變 (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "需要取得 %sB 的檔案。"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "在此項操作之後,將使用 %sB 的額外磁碟空間。"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "在此項操作之後,將釋放 %sB 的額外磁碟空間。"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "您想要繼續嗎 [是 Y/否 n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"若要同時操作多個套件,請將套件名稱置於英式引號 (\"\") 內:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "重新整理快取"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr "嘗試解決損壞的相依關係。本操作有潛在危險,因為它會嘗試移除許多套件。"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "嘗試完成前次的不完整安裝"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "安裝給定的套件"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "重新安裝給定的套件"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "移除給定的套件"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "移除給定的套件與其組態檔"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "降級指定的套件"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "已棄用:請使用 --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "以安全的方式升級系統"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "升級系統,可能會安裝與移除套件"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "加入該廠商為信任廠商"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "加入該廠商的金鑰 id (還需要 --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "使用給定的金鑰伺服器來查詢金鑰"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "從給定的 deb-line 加入新套件庫"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "指定套件庫應加入其中的替代性 sources.list.d 檔案。"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "列出信任的廠商金鑰"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "移除給定指紋的信任金鑰"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "重新組態已安裝套件。可以選擇是否要指定問題的最小優先等級"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "要顯示的問題其最小 debconf 優先等級"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "不要附加至 apt 終端"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "允許來自未認證來源的套件"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "顯示關於套件的額外資訊。目前只有版本號碼"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "正在等候認證"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "請勿因背景服務無動作而關閉之"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "不要載入任何外掛程式"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "顯示內部處理資訊"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "退出及替換已在執行中的背景服務"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "監聽 DBus 作業階段 bus (只有測試需要"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "在給定的 chroot 環境中執行操作"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "在指定的檔案中儲存設定狀態"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "不要對系統作任何變更(只對開發者有用)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "已安裝的檔案"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "已安裝的套件"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "從檔案中加入金鑰"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "更新快取"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "搜尋完成"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "已移除的可信任金鑰"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "已移除的套件"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "已更新的套件"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "已升級的系統"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "已套用的變更"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "已修復的不完整安裝"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "已修復的不完整相依性"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "已加入軟件來源"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "已啟用發行版元件"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "已移除下載的套件檔案"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "已重新組態已安裝套件"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "成功"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "已取消"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "失敗"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "安裝檔案中"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "安裝套件中"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "從檔案新增金鑰中"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "更新快取中"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "移除信任的金鑰中"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "移除套件中"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "更新套件中"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "升級系統中"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "正在套用變更"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "正在修復不完整的安裝"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "正在修復已安裝的軟件"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "正在加入軟件來源"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "正在啟用發行版元件"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "正在移除已下載的套件檔案"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "正在重新組態已安裝的套件"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "搜尋中"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "套件檔案安裝失敗"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "軟件安裝失敗"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "重新整理軟件列表失敗"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "從可信任列表中移除供應者失敗"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "移除軟件失敗"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "更新軟件失敗"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "升級系統失敗"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "套用軟件改變失敗"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "不完整的安裝修復失敗"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "損壞的相依性修復失敗"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "加入軟件來源時失敗"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "啟用發行版元件時失敗"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "移除已下載的套件失敗"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "搜尋失敗"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "正在加入授權金鑰"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "檢查您的互聯網連線。"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"檢查您是否正在使用第三方套件庫。若有使用請關閉它們,因為它們是常見的問題來"
+"源。\n"
+"此外在終端機中執行以下指令:apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "選定的檔案可能不是 GPG 金鑰,或者內容已損壞。"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "所選的金鑰無法移除。請檢查您提供指紋是否有效。"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"請檢查您目前是否正在執行其它軟體管理工具,例如:Synaptic 或 aptitude。同一時"
+"間內只允許一項工具處理變更。"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr "有一個嚴重問題。請稍候重試。若此問題再次出現,請向開發者回報錯誤。"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "請檢查套件名稱的拼寫,以及是否啟用合適的套件庫。"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "不需要任何更新。"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "不需要任何安裝"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "不需要任何移除"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "您要求移除一個系統必要的套件。"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "背景服務的連線已遺失。背景服務很有可能已當機。"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "安裝或移除軟件套件失敗。"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "請求的功能尚未支援。"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"在 aptdaemon 中似乎有程式上的設計錯誤。該軟件允許您安裝或移除軟件,以及執行其"
+"他與套件管理相關的事務。"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"此錯誤可能由於所需的額外軟件套件遺失或無法安裝所造成。甚至軟體套件間可能存在"
+"衝突,使得無法同時安裝。"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "這需要安裝來自未受驗證來源的套件。"
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"這個安裝可能已失敗,可能起因於對應的軟體套件有錯誤,或是安裝過程被以一種不友"
+"善的方式取消。在您可以進一步安裝或移除任何軟體前,您必須修復此安裝。"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "請將該檔案複製到您的本地電腦上並檢查檔案權限。"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"不允許安裝違反品質標準的套件。這可能對您的電腦造成嚴重傷害。請聯絡提供此套件"
+"檔案的個人或組織,並將下方的細節轉送給他們。"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"要執行這份軟件需要下載授權金鑰,但此金鑰無效或無法正確安裝。\n"
+"請見詳細資料瞭解更多訊息。"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "已安裝所有升級"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr "無法下載讓您使用這份軟件的授權金鑰。請檢查您的網路連線。"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "你無權執行本項操作。"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "下載套件檔案失敗"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "下載套件庫資訊失敗"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "套件相依性無法解析"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "套件系統損壞"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "金鑰未安裝"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "金鑰未移除"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "鎖定套件管理員失敗"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "載入套件列表失敗"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "套件不存在"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "套件已經是最新狀態"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "套件已安裝"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "套件未安裝"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "移除必要系統套件失敗"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "任務無法被監控或控制"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "套件作業失敗"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "需要安裝未受信任的套件"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "上一次的安裝尚未完整"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "該套件品質不良"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "無法開啟套件檔案"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "未支援的功能"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "無法下載授權金鑰"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "無法安裝授權金鑰"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "系統已經是最新狀態"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "遭遇到無法處理的錯誤"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "等待服務啟動中"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "等待中"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "等待需要的媒體中"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "等帶齊他軟件管理員退出中"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "等待設定檔提示中"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "執行任務中"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "正在下載"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "正在查詢軟件來源"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "清理中"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "已完成"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "取消中"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "載入軟件列表中"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "正在安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "正在設定 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "正在移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "正在完全移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "剛注意到 %s 消失"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "正在執行安裝後套件後續處理程式 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "正在升級 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "正在解開 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "正在準備安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "正在準備設定 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "正在準備移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "正在準備完整移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "已安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "已完整移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "已移除 %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "完成"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "驗證失敗"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "接收中"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "閒置"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "網絡不可用"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "正在處理 %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "已下載 %sB,全部 %sB,速率 %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "已下載 %sB,全部 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "詳細資料"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "檔案"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "已下載 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "已下載"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "需要 CD/DVD 「%s」"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "請將上述的 CD/DVD 置入光碟機「%s」以從該碟片安裝軟件套件。"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "繼續(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "安裝"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "重新安裝"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "移除"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "徹底清除"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "升級"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "降級"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "略過升級"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "請查看下方的變更清單。"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "必須安裝額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "必須重新安裝額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "必須移除額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "必須徹底移除額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "必須升級額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "必須降級額外軟件"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "將略過更新"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "需要額外變更"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "總共要下載 %sB。"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "將釋放 %sB 的磁碟空間。"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "將使用大於 %sB 的磁碟空間。"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "在 '%s' 中以較新的設定檔版本取代您的變更?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "若您不清楚為何此檔案已經存在,通常取代它是安全的。"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "變更(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "保留(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "取代(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "詳細資訊(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "正在等候 %s 結束"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "正在下載 %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "本地端套件庫"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "正在從 %s 下載"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s 的結構"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s 的描述"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s 的描述簽章"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "來自 %s 的可用套件"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "來自 %s 的可用來源"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "來自 %s 的可用翻譯"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "來自 %s 的 %s (%s) 翻譯"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "來自 %s 的 %s 翻譯"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "翻譯 (%s) 從 %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "套件 %s 無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "套件 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "版本 %s 的 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s 套件已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s 版本的 %s 無法使用"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "金鑰伺服器 URL 無效:%s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "無效的伺服器協定:%s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "無效的金鑰 id:%s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"無法下載與安裝金鑰 %s (來自 %s):\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "金鑰檔案 %s 無法安裝:%s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "指紋為 %s 的金鑰無法移除:%s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s 套件無法移除。"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "版本 %s 的 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "較舊版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s 版本的 %s 無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "您需要指定要將 %s 降級至哪個版本"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "較新版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s 套件在 %s 發行版本內無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "套件 %s 無法移除"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr "套件未提供有效的已安裝大小控制欄位。請見 Debian Policy 5.6.20。"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "授權金鑰為空白"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "授權金鑰不可含有執行代碼。"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "授權金鑰路徑 %s 無效"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "授權金鑰已存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr "授權金鑰的位置不安全,因為它包含符號連結。路徑 %s 對應至 %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "金鑰所要安裝的目錄尚未存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "無法寫入金鑰檔至:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "下列套件有無法滿足的相依關係:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "但它只是虛擬套件"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "但是 %s 卻尚未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "但是它卻不會被安裝"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "但是 %s 卻已經安裝"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "但是 %s 卻已經安裝"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "加入信任的軟件供應者金鑰至列表失敗"
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..14c15a7
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,1434 @@
+# Traditional Chinese translation for aptdaemon
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the aptdaemon package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: aptdaemon\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-21 15:36+0200\n"
+"PO-Revision-Date: 2012-10-28 02:36+0000\n"
+"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
+"Language-Team: Traditional Chinese <zh_TW@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Launchpad-Export-Date: 2013-03-09 23:28+0000\n"
+"X-Generator: Launchpad (build 16523)\n"
+
+#: ../data/org.debian.apt.policy.in.h:1
+msgid "List keys of trusted vendors"
+msgstr "列出信任廠商的金鑰"
+
+#: ../data/org.debian.apt.policy.in.h:2
+msgid "To view the list of trusted keys, you need to authenticate."
+msgstr "若要檢視信任金鑰清單,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:3 ../aptdaemon/console.py:619
+msgid "Remove downloaded package files"
+msgstr "移除已下載的套件檔案"
+
+#: ../data/org.debian.apt.policy.in.h:4
+msgid "To clean downloaded package files, you need to authenticate."
+msgstr "若要清空下載的套件檔案,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:5
+msgid "Change software configuration"
+msgstr "變更軟體組態"
+
+#: ../data/org.debian.apt.policy.in.h:6
+msgid "To change software settings, you need to authenticate."
+msgstr "若要變更軟體設定值,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:7
+msgid "Change software repository"
+msgstr "變更軟體套件庫"
+
+#: ../data/org.debian.apt.policy.in.h:8
+msgid "To change software repository settings, you need to authenticate."
+msgstr "若要變更軟體套件庫設定值,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:9
+msgid "Install package file"
+msgstr "安裝套件檔案"
+
+#: ../data/org.debian.apt.policy.in.h:10
+msgid "To install this package, you need to authenticate."
+msgstr "若要安裝此套件,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:11
+msgid "Update package information"
+msgstr "更新套件資訊"
+
+#: ../data/org.debian.apt.policy.in.h:12
+msgid "To update the software catalog, you need to authenticate."
+msgstr "若要更新軟體型錄,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:13
+msgid "Install or remove packages"
+msgstr "安裝或移除套件"
+
+#: ../data/org.debian.apt.policy.in.h:14
+msgid "To install or remove software, you need to authenticate."
+msgstr "若要安裝或移除軟體,您需要通過認證。"
+
+#. This priviledge will be requested when installing a package
+#. from a high trusted repository that can be explicitely whitelisted.
+#.
+#. The defaults for this action are the same as
+#. "org.debian.apt.install-or-remove-packages".
+#.
+#. The admin can override them to e.g. allow passwordless installs for
+#. leightweight applications like unity-webapps or for packages
+#. comming from high trust repositories (like internal repositories)
+#.
+#: ../data/org.debian.apt.policy.in.h:25
+msgid "Install software from a high-trust whitelisted repository."
+msgstr "從白名單中高度信任的套件庫安裝軟體"
+
+#: ../data/org.debian.apt.policy.in.h:26
+msgid "To install software, you need to authenticate."
+msgstr "若要安裝軟體,您需要先通過身份驗證。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#: ../data/org.debian.apt.policy.in.h:32
+msgid "Add a new repository and install packages from it"
+msgstr "加入新套件庫並且安裝它所提供的套件"
+
+#: ../data/org.debian.apt.policy.in.h:33
+msgid "To install software from a new source, you need to authenticate."
+msgstr "若要從新來源安裝軟體,您需要通過認證。"
+
+#. This privilege allows to call AddRepository, UpdateCache(Partially)
+#. and InstallPackages in a row and only authenticating once.
+#.
+#. The client has to authenticate for this privilege before calling
+#. the aptdaemon methods.
+#.
+#. The only difference to install-packages-from-new-repo is the wording
+#. of the message. It is required by Ubuntu's Software-Center.
+#: ../data/org.debian.apt.policy.in.h:42
+msgid "Add a new repository of purchased software and install packages from it"
+msgstr "加入購買軟體的新套件庫並且安裝它提供的套件"
+
+#: ../data/org.debian.apt.policy.in.h:43
+msgid "To install purchased software, you need to authenticate."
+msgstr "若要安裝購買的軟體,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:44
+msgid "Upgrade packages"
+msgstr "升級套件"
+
+#: ../data/org.debian.apt.policy.in.h:45
+msgid "To install updated software, you need to authenticate."
+msgstr "若要安裝更新版的軟體,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:46
+msgid "Cancel the task of another user"
+msgstr "取消另一位使用者的任務"
+
+#: ../data/org.debian.apt.policy.in.h:47
+msgid "To cancel someone else's software changes, you need to authenticate."
+msgstr "若要取消其它人所作出的軟體變更,您需要通過認證。"
+
+#: ../data/org.debian.apt.policy.in.h:48
+msgid "Set a proxy for software downloads"
+msgstr "設定用來下載軟體的代理伺服器"
+
+#: ../data/org.debian.apt.policy.in.h:49
+msgid ""
+"To use a proxy server for downloading software, you need to authenticate."
+msgstr "若要使用代理伺服器以下載軟體,您需要通過認證。"
+
+#: ../aptdaemon/console.py:215
+msgid "ERROR"
+msgstr "錯誤"
+
+#: ../aptdaemon/console.py:249
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB at %(rate)sB/s"
+msgstr "已下載 %sB,共 %sB,速率 %sB/s"
+
+#: ../aptdaemon/console.py:255
+#, fuzzy, python-format
+msgid "Downloaded %(cur)sB of %(total)sB"
+msgstr "已下載 %sB,共 %sB"
+
+#: ../aptdaemon/console.py:385 ../aptdaemon/console.py:390
+msgid "ERROR:"
+msgstr "錯誤:"
+
+#: ../aptdaemon/console.py:386
+msgid "You are not allowed to perform this action."
+msgstr "您不被許可執行此動作。"
+
+#: ../aptdaemon/console.py:409 ../aptdaemon/console.py:537
+msgid "Queuing"
+msgstr "正在佇列"
+
+#: ../aptdaemon/console.py:417 ../aptdaemon/enums.py:527
+msgid "Resolving dependencies"
+msgstr "解析相依性中"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:459
+#, python-format
+msgid "The following NEW package will be installed (%(count)s):"
+msgid_plural "The following NEW packages will be installed (%(count)s):"
+msgstr[0] "下列「新」套件將被安裝 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:467
+#, python-format
+msgid "The following package will be upgraded (%(count)s):"
+msgid_plural "The following packages will be upgraded (%(count)s):"
+msgstr[0] "會升級以下套件 (%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:475
+#, python-format
+msgid "The following package will be REMOVED (%(count)s):"
+msgid_plural "The following packages will be REMOVED (%(count)s):"
+msgstr[0] "下列套件將被「移除」(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:484
+#, python-format
+msgid "The following package will be DOWNGRADED (%(count)s):"
+msgid_plural "The following packages will be DOWNGRADED (%(count)s):"
+msgstr[0] "下列套件將被「降級」(%(count)s):"
+
+#. TRANSLATORS: %s is the number of packages
+#: ../aptdaemon/console.py:492
+#, python-format
+msgid "The following package will be reinstalled (%(count)s):"
+msgid_plural "The following packages will be reinstalled (%(count)s):"
+msgstr[0] "下列套件將被重新安裝 (%(count)s):"
+
+#: ../aptdaemon/console.py:499
+#, python-format
+msgid "The following package has been kept back (%(count)s):"
+msgid_plural "The following packages have been kept back (%(count)s):"
+msgstr[0] "下列套件會維持不變 (%(count)s):"
+
+#: ../aptdaemon/console.py:507
+#, python-format
+msgid "Need to get %sB of archives."
+msgstr "需要取得 %sB 的檔案。"
+
+#: ../aptdaemon/console.py:510
+#, python-format
+msgid "After this operation, %sB of additional disk space will be used."
+msgstr "在此項操作之後,將使用 %sB 的額外磁碟空間。"
+
+#: ../aptdaemon/console.py:514
+#, python-format
+msgid "After this operation, %sB of additional disk space will be freed."
+msgstr "在此項操作之後,將釋放 %sB 的額外磁碟空間。"
+
+#: ../aptdaemon/console.py:522 ../aptdaemon/console.py:524
+msgid "Do you want to continue [Y/n]?"
+msgstr "您想要繼續嗎 [是 Y/否 n]?"
+
+#: ../aptdaemon/console.py:545
+msgid ""
+"To operate on more than one package put the package names in quotation "
+"marks:\n"
+"aptdcon --install \"foo bar\""
+msgstr ""
+"若要同時操作多個套件,請將套件名稱置於英式引號 (\"\") 內:\n"
+"aptdcon --install \"foo bar\""
+
+#: ../aptdaemon/console.py:551
+msgid "Refresh the cache"
+msgstr "重新整理快取"
+
+#: ../aptdaemon/console.py:554
+msgid ""
+"Try to resolve broken dependencies. Potentially dangerous operation since it "
+"could try to remove many packages."
+msgstr "嘗試解決損壞的相依關係。本操作有潛在危險,因為它會嘗試移除許多套件。"
+
+#: ../aptdaemon/console.py:559
+msgid "Try to finish a previous incompleted installation"
+msgstr "嘗試完成前次的不完整安裝"
+
+#: ../aptdaemon/console.py:563 ../aptdaemon/console.py:576
+msgid "Install the given packages"
+msgstr "安裝給定的套件"
+
+#: ../aptdaemon/console.py:566
+msgid "Reinstall the given packages"
+msgstr "重新安裝給定的套件"
+
+#: ../aptdaemon/console.py:569
+msgid "Remove the given packages"
+msgstr "移除給定的套件"
+
+#: ../aptdaemon/console.py:572
+msgid "Remove the given packages including configuration files"
+msgstr "移除給定的套件與其組態檔"
+
+#: ../aptdaemon/console.py:579
+msgid "Downgrade the given packages"
+msgstr "降級指定的套件"
+
+#: ../aptdaemon/console.py:582
+msgid "Deprecated: Please use --safe-upgrade"
+msgstr "已棄用:請使用 --safe-upgrade"
+
+#: ../aptdaemon/console.py:586
+msgid "Upgrade the system in a safe way"
+msgstr "以安全的方式升級系統"
+
+#: ../aptdaemon/console.py:589
+msgid "Upgrade the system, possibly installing and removing packages"
+msgstr "升級系統,可能會安裝與移除套件"
+
+#: ../aptdaemon/console.py:593
+msgid "Add the vendor to the trusted ones"
+msgstr "加入該廠商為信任廠商"
+
+#: ../aptdaemon/console.py:596
+msgid "Add the vendor keyid (also needs --keyserver)"
+msgstr "加入該廠商的金鑰 id (還需要 --keyserver)"
+
+#: ../aptdaemon/console.py:600
+msgid "Use the given keyserver for looking up keys"
+msgstr "使用給定的金鑰伺服器來查詢金鑰"
+
+#: ../aptdaemon/console.py:604
+msgid "Add new repository from the given deb-line"
+msgstr "從給定的 deb-line 加入新套件庫"
+
+#: ../aptdaemon/console.py:608
+msgid ""
+"Specify an alternative sources.list.d file to which repositories should be "
+"added."
+msgstr "指定套件庫應加入其中的替代性 sources.list.d 檔案。"
+
+#: ../aptdaemon/console.py:612
+msgid "List trusted vendor keys"
+msgstr "列出信任的廠商金鑰"
+
+#: ../aptdaemon/console.py:615
+msgid "Remove the trusted key of the given fingerprint"
+msgstr "移除給定指紋的信任金鑰"
+
+#: ../aptdaemon/console.py:622
+msgid ""
+"Reconfigure installed packages. Optionally the minimum priority of questions "
+"can be specified"
+msgstr "重新組態已安裝套件。可以選擇是否要指定問題的最小優先等級"
+
+#: ../aptdaemon/console.py:627
+msgid "The minimum debconf priority of question to be displayed"
+msgstr "要顯示的問題其最小 debconf 優先等級"
+
+#: ../aptdaemon/console.py:631
+msgid "Do not attach to the apt terminal"
+msgstr "不要附加至 apt 終端"
+
+#: ../aptdaemon/console.py:635
+msgid "Allow packages from unauthenticated sources"
+msgstr "允許來自未認證來源的套件"
+
+#: ../aptdaemon/console.py:639
+msgid ""
+"Show additional information about the packages. Currently only the version "
+"number"
+msgstr "顯示關於套件的額外資訊。目前只有版本號碼"
+
+#: ../aptdaemon/console.py:647 ../aptdaemon/enums.py:532
+msgid "Waiting for authentication"
+msgstr "正在等候認證"
+
+#: ../aptdaemon/core.py:2135
+msgid "Do not shutdown the daemon because of inactivity"
+msgstr "請勿因背景服務無動作而關閉之"
+
+#: ../aptdaemon/core.py:2140
+msgid "Do not load any plugins"
+msgstr "不要載入任何外掛程式"
+
+#: ../aptdaemon/core.py:2144
+msgid "Show internal processing information"
+msgstr "顯示內部處理資訊"
+
+#: ../aptdaemon/core.py:2149
+msgid "Quit and replace an already running daemon"
+msgstr "退出及替換已在執行中的背景服務"
+
+#: ../aptdaemon/core.py:2154
+msgid "Listen on the DBus session bus (Only required for testing"
+msgstr "監聽 DBus 作業階段 bus (只有測試需要"
+
+#: ../aptdaemon/core.py:2158
+msgid "Perform operations in the given chroot"
+msgstr "在給定的 chroot 環境中執行操作"
+
+#: ../aptdaemon/core.py:2163
+msgid "Store profile stats in the specified file"
+msgstr "在指定的檔案中儲存設定狀態"
+
+#: ../aptdaemon/core.py:2168
+msgid "Do not make any changes to the system (Only of use to developers)"
+msgstr "不要對系統作任何變更(只對開發者有用)"
+
+#: ../aptdaemon/enums.py:337
+msgid "Installed file"
+msgstr "已安裝的檔案"
+
+#: ../aptdaemon/enums.py:338
+msgid "Installed packages"
+msgstr "已安裝的套件"
+
+#: ../aptdaemon/enums.py:339
+msgid "Added key from file"
+msgstr "從檔案中加入金鑰"
+
+#: ../aptdaemon/enums.py:340
+msgid "Updated cache"
+msgstr "更新快取"
+
+#: ../aptdaemon/enums.py:341
+msgid "Search done"
+msgstr "搜尋完成"
+
+#: ../aptdaemon/enums.py:342
+msgid "Removed trusted key"
+msgstr "已移除的可信任金鑰"
+
+#: ../aptdaemon/enums.py:343
+msgid "Removed packages"
+msgstr "已移除的套件"
+
+#: ../aptdaemon/enums.py:344
+msgid "Updated packages"
+msgstr "已更新的套件"
+
+#: ../aptdaemon/enums.py:345
+msgid "Upgraded system"
+msgstr "已升級的系統"
+
+#: ../aptdaemon/enums.py:346
+msgid "Applied changes"
+msgstr "已套用的變更"
+
+#: ../aptdaemon/enums.py:347
+msgid "Repaired incomplete installation"
+msgstr "已修復的不完整安裝"
+
+#: ../aptdaemon/enums.py:348
+msgid "Repaired broken dependencies"
+msgstr "已修復的不完整相依性"
+
+#: ../aptdaemon/enums.py:349
+msgid "Added software source"
+msgstr "已加入軟體來源"
+
+#: ../aptdaemon/enums.py:350
+msgid "Enabled component of the distribution"
+msgstr "已啟用發行版元件"
+
+#: ../aptdaemon/enums.py:351
+msgid "Removed downloaded package files"
+msgstr "已移除下載的套件檔案"
+
+#: ../aptdaemon/enums.py:352
+msgid "Reconfigured installed packages"
+msgstr "已重新組態已安裝套件"
+
+#: ../aptdaemon/enums.py:356
+msgid "Successful"
+msgstr "成功"
+
+#: ../aptdaemon/enums.py:357
+msgid "Canceled"
+msgstr "已取消"
+
+#: ../aptdaemon/enums.py:358 ../aptdaemon/enums.py:569
+msgid "Failed"
+msgstr "失敗"
+
+#: ../aptdaemon/enums.py:361
+msgid "Installing file"
+msgstr "安裝檔案中"
+
+#: ../aptdaemon/enums.py:362
+msgid "Installing packages"
+msgstr "安裝套件中"
+
+#: ../aptdaemon/enums.py:363
+msgid "Adding key from file"
+msgstr "從檔案新增金鑰中"
+
+#: ../aptdaemon/enums.py:364
+msgid "Updating cache"
+msgstr "更新快取中"
+
+#: ../aptdaemon/enums.py:365
+msgid "Removing trusted key"
+msgstr "移除信任的金鑰中"
+
+#: ../aptdaemon/enums.py:366
+msgid "Removing packages"
+msgstr "移除套件中"
+
+#: ../aptdaemon/enums.py:367
+msgid "Updating packages"
+msgstr "更新套件中"
+
+#: ../aptdaemon/enums.py:368
+msgid "Upgrading system"
+msgstr "升級系統中"
+
+#: ../aptdaemon/enums.py:369 ../aptdaemon/enums.py:528
+msgid "Applying changes"
+msgstr "套用變更中"
+
+#: ../aptdaemon/enums.py:370
+msgid "Repairing incomplete installation"
+msgstr "正在修復不完整的安裝"
+
+#: ../aptdaemon/enums.py:371
+msgid "Repairing installed software"
+msgstr "正在修復安裝的軟體"
+
+#: ../aptdaemon/enums.py:372
+msgid "Adding software source"
+msgstr "正在加入軟體來源"
+
+#: ../aptdaemon/enums.py:373
+msgid "Enabling component of the distribution"
+msgstr "正在啟用發行版元件"
+
+#: ../aptdaemon/enums.py:374
+msgid "Removing downloaded package files"
+msgstr "正在移除已下載的套件檔案"
+
+#: ../aptdaemon/enums.py:375
+msgid "Reconfiguring installed packages"
+msgstr "正在重新組態已安裝的套件"
+
+#: ../aptdaemon/enums.py:376 ../aptdaemon/enums.py:517
+msgid "Searching"
+msgstr "正在搜尋"
+
+#: ../aptdaemon/enums.py:380
+msgid "Installation of the package file failed"
+msgstr "套件檔案安裝失敗"
+
+#: ../aptdaemon/enums.py:381
+msgid "Installation of software failed"
+msgstr "軟體安裝失敗"
+
+#: ../aptdaemon/enums.py:382
+msgid "Adding the key to the list of trusted software vendors failed"
+msgstr ""
+
+#: ../aptdaemon/enums.py:384
+msgid "Refreshing the software list failed"
+msgstr "重新整理軟體列表失敗"
+
+#: ../aptdaemon/enums.py:385
+msgid "Removing the vendor from the list of trusted ones failed"
+msgstr "從可信任列表中移除供應者失敗"
+
+#: ../aptdaemon/enums.py:387
+msgid "Removing software failed"
+msgstr "移除軟體失敗"
+
+#: ../aptdaemon/enums.py:388
+msgid "Updating software failed"
+msgstr "更新軟體失敗"
+
+#: ../aptdaemon/enums.py:389
+msgid "Upgrading the system failed"
+msgstr "升級系統失敗"
+
+#: ../aptdaemon/enums.py:390
+msgid "Applying software changes failed"
+msgstr "套用軟體改變失敗"
+
+#: ../aptdaemon/enums.py:391
+msgid "Repairing incomplete installation failed"
+msgstr "不完整的安裝修復失敗"
+
+#: ../aptdaemon/enums.py:393
+msgid "Repairing broken dependencies failed"
+msgstr "損壞的相依性修復失敗"
+
+#: ../aptdaemon/enums.py:394
+msgid "Adding software source failed"
+msgstr "加入軟體來源時失敗"
+
+#: ../aptdaemon/enums.py:395
+msgid "Enabling component of the distribution failed"
+msgstr "啟用發行版元件時失敗"
+
+#: ../aptdaemon/enums.py:397 ../aptdaemon/enums.py:398
+msgid "Removing downloaded package files failed"
+msgstr "移除已下載的套件失敗"
+
+#: ../aptdaemon/enums.py:399
+msgid "Search failed"
+msgstr "搜尋失敗"
+
+#: ../aptdaemon/enums.py:400
+msgid "Adding license key"
+msgstr "正在加入授權金鑰"
+
+#: ../aptdaemon/enums.py:404 ../aptdaemon/enums.py:405
+msgid "Check your Internet connection."
+msgstr "檢查您的網際網路連線。"
+
+#: ../aptdaemon/enums.py:406
+msgid ""
+"Check if you are using third party repositories. If so disable them, since "
+"they are a common source of problems.\n"
+"Furthermore run the following command in a Terminal: apt-get install -f"
+msgstr ""
+"檢查您是否正在使用第三方套件庫。若有使用請關閉它們,因為它們是常見的問題來"
+"源。\n"
+"此外在終端機中執行以下指令:apt-get install -f"
+
+#: ../aptdaemon/enums.py:411
+msgid "The selected file may not be a GPG key file or it might be corrupt."
+msgstr "選定的檔案可能不是 GPG 金鑰,或者內容已損壞。"
+
+#: ../aptdaemon/enums.py:413
+msgid ""
+"The selected key couldn't be removed. Check that you provided a valid "
+"fingerprint."
+msgstr "所選的金鑰無法移除。請檢查您提供的指紋是否有效。"
+
+#: ../aptdaemon/enums.py:415
+msgid ""
+"Check if you are currently running another software management tool, e.g. "
+"Synaptic or aptitude. Only one tool is allowed to make changes at a time."
+msgstr ""
+"請檢查您目前是否正在執行其它軟體管理工具,例如:Synaptic 或 aptitude。同一時"
+"間內只允許一項工具處理變更。"
+
+#: ../aptdaemon/enums.py:418
+msgid ""
+"This is a serious problem. Try again later. If this problem appears again, "
+"please report an error to the developers."
+msgstr "有一個嚴重問題。請稍候重試。若此問題再次出現,請向開發者回報錯誤。"
+
+#: ../aptdaemon/enums.py:421
+msgid ""
+"Check the spelling of the package name, and that the appropriate repository "
+"is enabled."
+msgstr "請檢查套件名稱的拼寫,以及是否啟用合適的套件庫。"
+
+#: ../aptdaemon/enums.py:423
+msgid "There isn't any need for an update."
+msgstr "不需要任何更新。"
+
+#: ../aptdaemon/enums.py:424
+msgid "There isn't any need for an installation"
+msgstr "不需要任何安裝"
+
+#: ../aptdaemon/enums.py:426
+msgid "There isn't any need for a removal."
+msgstr "不需要任何移除"
+
+#: ../aptdaemon/enums.py:427
+msgid ""
+"You requested to remove a package which is an essential part of your system."
+msgstr "您要求移除一個系統必要的套件。"
+
+#: ../aptdaemon/enums.py:430
+msgid ""
+"The connection to the daemon was lost. Most likely the background daemon "
+"crashed."
+msgstr "背景服務的連線已遺失。背景服務很有可能已當機。"
+
+#: ../aptdaemon/enums.py:432
+msgid "The installation or removal of a software package failed."
+msgstr "安裝或移除軟體套件失敗。"
+
+#: ../aptdaemon/enums.py:434
+msgid "The requested feature is not supported."
+msgstr "請求的功能尚未支援。"
+
+#: ../aptdaemon/enums.py:435
+msgid ""
+"There seems to be a programming error in aptdaemon, the software that allows "
+"you to install/remove software and to perform other package management "
+"related tasks."
+msgstr ""
+"在 aptdaemon 中似乎有程式上的設計錯誤。該軟體允許您安裝或移除軟體,以及執行其"
+"他與套件管理相關的事務。"
+
+#: ../aptdaemon/enums.py:439
+msgid ""
+"This error could be caused by required additional software packages which "
+"are missing or not installable. Furthermore there could be a conflict "
+"between software packages which are not allowed to be installed at the same "
+"time."
+msgstr ""
+"此錯誤可能由於所需的額外軟體套件遺失或無法安裝所造成。甚至軟體套件間可能存在"
+"衝突,使得無法同時安裝。"
+
+#: ../aptdaemon/enums.py:445
+msgid "This requires installing packages from unauthenticated sources."
+msgstr "這需要安裝來自未受驗證來源的套件。"
+
+#: ../aptdaemon/enums.py:447
+msgid ""
+"The installation could have failed because of an error in the corresponding "
+"software package or it was cancelled in an unfriendly way. You have to "
+"repair this before you can install or remove any further software."
+msgstr ""
+"這個安裝可能已失敗,可能起因於對應的軟體套件有錯誤,或是安裝過程被以一種不友"
+"善的方式取消。在您可以進一步安裝或移除任何軟體前,您必須修復此安裝。"
+
+#: ../aptdaemon/enums.py:453
+msgid ""
+"Please copy the file to your local computer and check the file permissions."
+msgstr "請將該檔案複製到您的本地電腦上並檢查檔案權限。"
+
+#: ../aptdaemon/enums.py:456
+msgid ""
+"The installation of a package which violates the quality standards isn't "
+"allowed. This could cause serious problems on your computer. Please contact "
+"the person or organisation who provided this package file and include the "
+"details beneath."
+msgstr ""
+"不允許安裝違反品質標準的套件。這可能對您的電腦造成嚴重傷害。請聯絡提供此套件"
+"檔案的個人或組織,並將下方的細節轉送給他們。"
+
+#: ../aptdaemon/enums.py:463
+msgid ""
+"The downloaded license key which is required to run this piece of software "
+"is not valid or could not be installed correctly.\n"
+"See the details for more information."
+msgstr ""
+"要執行這份軟體需要下載授權金鑰,但此金鑰無效或無法正確安裝。\n"
+"請見詳細資料瞭解更多訊息。"
+
+#: ../aptdaemon/enums.py:469
+msgid "All available upgrades have already been installed."
+msgstr "已經安裝所有可用的升級。"
+
+#: ../aptdaemon/enums.py:471
+msgid ""
+"The license key which allows you to use this piece of software could not be "
+"downloaded. Please check your network connection."
+msgstr "無法下載讓您使用這份軟體的授權金鑰。請檢查您的網路連線。"
+
+#: ../aptdaemon/enums.py:475
+#, fuzzy
+msgid "You don't have the required privileges to perform this action."
+msgstr "您不被許可執行此動作。"
+
+#: ../aptdaemon/enums.py:477
+msgid ""
+"You either provided a wrong password or cancelled the authorization.\n"
+"Furthermore there could also be a technical reason for this error if you "
+"haven't seen a password dialog: your desktop environment doesn't provide a "
+"PolicyKit session agent."
+msgstr ""
+
+#: ../aptdaemon/enums.py:485
+msgid "Failed to download package files"
+msgstr "下載套件檔案失敗"
+
+#: ../aptdaemon/enums.py:486
+msgid "Failed to download repository information"
+msgstr "下載套件庫資訊失敗"
+
+#: ../aptdaemon/enums.py:488
+msgid "Package dependencies cannot be resolved"
+msgstr "套件相依性無法解析"
+
+#: ../aptdaemon/enums.py:489
+msgid "The package system is broken"
+msgstr "套件系統損壞"
+
+#: ../aptdaemon/enums.py:490
+msgid "Key was not installed"
+msgstr "金鑰未安裝"
+
+#: ../aptdaemon/enums.py:491
+msgid "Key was not removed"
+msgstr "金鑰未移除"
+
+#: ../aptdaemon/enums.py:492
+msgid "Failed to lock the package manager"
+msgstr "鎖定套件管理員失敗"
+
+#: ../aptdaemon/enums.py:493
+msgid "Failed to load the package list"
+msgstr "載入套件列表失敗"
+
+#: ../aptdaemon/enums.py:494
+msgid "Package does not exist"
+msgstr "套件不存在"
+
+#: ../aptdaemon/enums.py:495
+msgid "Package is already up to date"
+msgstr "套件已經是最新狀態"
+
+#: ../aptdaemon/enums.py:496
+msgid "Package is already installed"
+msgstr "套件已經安裝"
+
+#: ../aptdaemon/enums.py:497
+msgid "Package isn't installed"
+msgstr "套件未安裝"
+
+#: ../aptdaemon/enums.py:498
+msgid "Failed to remove essential system package"
+msgstr "移除必要系統套件失敗"
+
+#: ../aptdaemon/enums.py:500
+msgid "Task cannot be monitored or controlled"
+msgstr "任務無法被監控或控制"
+
+#: ../aptdaemon/enums.py:501
+msgid "Package operation failed"
+msgstr "套件作業失敗"
+
+#: ../aptdaemon/enums.py:502
+msgid "Requires installation of untrusted packages"
+msgstr "需要安裝未受信任的套件"
+
+#: ../aptdaemon/enums.py:504
+msgid "Previous installation hasn't been completed"
+msgstr "上一次的安裝尚未完整"
+
+#: ../aptdaemon/enums.py:505
+msgid "The package is of bad quality"
+msgstr "該套件品質不良"
+
+#: ../aptdaemon/enums.py:506
+msgid "Package file could not be opened"
+msgstr "無法開啟套件檔案"
+
+#: ../aptdaemon/enums.py:507
+msgid "Not supported feature"
+msgstr "未支援的功能"
+
+#: ../aptdaemon/enums.py:508
+msgid "Failed to download the license key"
+msgstr "無法下載授權金鑰"
+
+#: ../aptdaemon/enums.py:509
+msgid "Failed to install the license key"
+msgstr "無法安裝授權金鑰"
+
+#: ../aptdaemon/enums.py:510
+msgid "The system is already up to date"
+msgstr "系統已經是最新狀態"
+
+#: ../aptdaemon/enums.py:511
+msgid "You could not be authorized"
+msgstr ""
+
+#: ../aptdaemon/enums.py:512
+msgid "You are not allowed to perform this action"
+msgstr ""
+
+#: ../aptdaemon/enums.py:513
+msgid "An unhandlable error occured"
+msgstr "遭遇到無法處理的錯誤"
+
+#: ../aptdaemon/enums.py:516
+msgid "Waiting for service to start"
+msgstr "等待服務啟動中"
+
+#: ../aptdaemon/enums.py:518
+msgid "Waiting"
+msgstr "正在等待"
+
+#: ../aptdaemon/enums.py:519
+msgid "Waiting for required medium"
+msgstr "等待需要的媒體中"
+
+#: ../aptdaemon/enums.py:520
+msgid "Waiting for other software managers to quit"
+msgstr "等帶其它軟體管理員退出中"
+
+#: ../aptdaemon/enums.py:521
+msgid "Waiting for configuration file prompt"
+msgstr "等待設定檔提示中"
+
+#: ../aptdaemon/enums.py:523
+msgid "Running task"
+msgstr "執行任務中"
+
+#: ../aptdaemon/enums.py:524
+msgid "Downloading"
+msgstr "正在下載"
+
+#: ../aptdaemon/enums.py:525
+msgid "Querying software sources"
+msgstr "正在查詢軟體來源"
+
+#: ../aptdaemon/enums.py:526
+msgid "Cleaning up"
+msgstr "清理中"
+
+#: ../aptdaemon/enums.py:529
+msgid "Finished"
+msgstr "已完成"
+
+#: ../aptdaemon/enums.py:530
+msgid "Cancelling"
+msgstr "取消中"
+
+#: ../aptdaemon/enums.py:531
+msgid "Loading software list"
+msgstr "載入軟體列表中"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:536
+#, python-format
+msgid "Installing %s"
+msgstr "正在安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:538
+#, python-format
+msgid "Configuring %s"
+msgstr "正在設定 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:540
+#, python-format
+msgid "Removing %s"
+msgstr "正在移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:542
+#, python-format
+msgid "Completely removing %s"
+msgstr "正在完全移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:544
+#, python-format
+msgid "Noting disappearance of %s"
+msgstr "剛注意到 %s 消失"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:546
+#, python-format
+msgid "Running post-installation trigger %s"
+msgstr "正在執行安裝後套件後續處理程式 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:548
+#, python-format
+msgid "Upgrading %s"
+msgstr "正在升級 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:550
+#, python-format
+msgid "Unpacking %s"
+msgstr "正在解開 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:552
+#, python-format
+msgid "Preparing installation of %s"
+msgstr "正在準備安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:554
+#, python-format
+msgid "Preparing configuration of %s"
+msgstr "正在準備設定 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:556
+#, python-format
+msgid "Preparing removal of %s"
+msgstr "正在準備移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:558
+#, python-format
+msgid "Preparing complete removal of %s"
+msgstr "正在準備完整移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:560
+#, python-format
+msgid "Installed %s"
+msgstr "已安裝 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:562
+#, python-format
+msgid "Completely removed %s"
+msgstr "已完整移除 %s"
+
+#. TRANSLATORS: %s is the name of a package
+#: ../aptdaemon/enums.py:564
+#, python-format
+msgid "Removed %s"
+msgstr "已移除 %s"
+
+#: ../aptdaemon/enums.py:567
+msgid "Done"
+msgstr "完成"
+
+#: ../aptdaemon/enums.py:568
+msgid "Authentication failed"
+msgstr "認證失敗"
+
+#: ../aptdaemon/enums.py:570
+msgid "Fetching"
+msgstr "接收中"
+
+#: ../aptdaemon/enums.py:571
+msgid "Idle"
+msgstr "閒置"
+
+#: ../aptdaemon/enums.py:572
+msgid "Network isn't available"
+msgstr "網路不可用"
+
+#: ../aptdaemon/enums.py:704
+#, python-format
+msgid "Processing %s"
+msgstr "正在處理 %s"
+
+#: ../aptdaemon/gtk3widgets.py:306
+#, python-format
+msgid "Downloaded %sB of %sB at %sB/s"
+msgstr "已下載 %sB,共 %sB,速率 %sB/s"
+
+#: ../aptdaemon/gtk3widgets.py:311 ../aptdaemon/gtk3widgets.py:510
+#, python-format
+msgid "Downloaded %sB of %sB"
+msgstr "已下載 %sB,共 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:323
+msgid "Details"
+msgstr "詳細資料"
+
+#: ../aptdaemon/gtk3widgets.py:474
+msgid "File"
+msgstr "檔案"
+
+#. TRANSLATORS: header of the progress download column
+#: ../aptdaemon/gtk3widgets.py:479
+msgid "%"
+msgstr "%"
+
+#: ../aptdaemon/gtk3widgets.py:515
+#, python-format
+msgid "Downloaded %sB"
+msgstr "已下載 %sB"
+
+#: ../aptdaemon/gtk3widgets.py:518
+msgid "Downloaded"
+msgstr "已下載"
+
+#. TRANSLATORS: %s represents the name of a CD or DVD
+#: ../aptdaemon/gtk3widgets.py:853
+#, python-format
+msgid "CD/DVD '%s' is required"
+msgstr "需要 CD/DVD 「%s」"
+
+#. TRANSLATORS: %s is the name of the CD/DVD drive
+#: ../aptdaemon/gtk3widgets.py:855
+#, python-format
+msgid ""
+"Please insert the above CD/DVD into the drive '%s' to install software "
+"packages from it."
+msgstr "請將上述的 CD/DVD 置入光碟機「%s」以從該碟片安裝軟體套件。"
+
+#: ../aptdaemon/gtk3widgets.py:859 ../aptdaemon/gtk3widgets.py:880
+msgid "C_ontinue"
+msgstr "繼續(_O)"
+
+#: ../aptdaemon/gtk3widgets.py:931
+msgid "Install"
+msgstr "安裝"
+
+#: ../aptdaemon/gtk3widgets.py:932
+msgid "Reinstall"
+msgstr "重新安裝"
+
+#: ../aptdaemon/gtk3widgets.py:933
+msgid "Remove"
+msgstr "移除"
+
+#: ../aptdaemon/gtk3widgets.py:934
+msgid "Purge"
+msgstr "徹底清除"
+
+#: ../aptdaemon/gtk3widgets.py:935
+msgid "Upgrade"
+msgstr "升級"
+
+#: ../aptdaemon/gtk3widgets.py:936
+msgid "Downgrade"
+msgstr "降級"
+
+#: ../aptdaemon/gtk3widgets.py:937
+msgid "Skip upgrade"
+msgstr "略過升級"
+
+#. If there is only one type of changes (e.g. only installs) expand the
+#. tree
+#. FIXME: adapt the title and message accordingly
+#. FIXME: Should we have different modes? Only show dependencies, only
+#. initial packages or both?
+#: ../aptdaemon/gtk3widgets.py:948
+msgid "Please take a look at the list of changes below."
+msgstr "請查看下方的變更清單。"
+
+#: ../aptdaemon/gtk3widgets.py:956
+msgid "Additional software has to be installed"
+msgstr "必須安裝額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:958
+msgid "Additional software has to be re-installed"
+msgstr "必須重新安裝額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:960
+msgid "Additional software has to be removed"
+msgstr "必須移除額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:962
+msgid "Additional software has to be purged"
+msgstr "必須徹底移除額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:964
+msgid "Additional software has to be upgraded"
+msgstr "必須升級額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:966
+msgid "Additional software has to be downgraded"
+msgstr "必須降級額外軟體"
+
+#: ../aptdaemon/gtk3widgets.py:968
+msgid "Updates will be skipped"
+msgstr "將略過更新"
+
+#: ../aptdaemon/gtk3widgets.py:976
+msgid "Additional changes are required"
+msgstr "需要額外變更"
+
+#: ../aptdaemon/gtk3widgets.py:981
+#, python-format
+msgid "%sB will be downloaded in total."
+msgstr "總共要下載 %sB。"
+
+#: ../aptdaemon/gtk3widgets.py:985
+#, python-format
+msgid "%sB of disk space will be freed."
+msgstr "將釋放 %sB 的磁碟空間。"
+
+#: ../aptdaemon/gtk3widgets.py:989
+#, python-format
+msgid "%sB more disk space will be used."
+msgstr "將使用大於 %sB 的磁碟空間。"
+
+#. TRANSLATORS: %s is a file path
+#: ../aptdaemon/gtk3widgets.py:1061
+#, python-format
+msgid ""
+"Replace your changes in '%s' with a later version of the configuration file?"
+msgstr "在 '%s' 中以較新的設定檔版本取代您的變更?"
+
+#: ../aptdaemon/gtk3widgets.py:1063
+msgid ""
+"If you don't know why the file is there already, it is usually safe to "
+"replace it."
+msgstr "若您不清楚為何此檔案已經存在,通常取代它是安全的。"
+
+#: ../aptdaemon/gtk3widgets.py:1072
+msgid "_Changes"
+msgstr "變更(_C)"
+
+#: ../aptdaemon/gtk3widgets.py:1075
+msgid "_Keep"
+msgstr "保留(_K)"
+
+#: ../aptdaemon/gtk3widgets.py:1076
+msgid "_Replace"
+msgstr "取代(_R)"
+
+#: ../aptdaemon/gtk3widgets.py:1179
+msgid "_Details"
+msgstr "詳細資料(_D)"
+
+#. TRANSLATORS: %s is the name of a package manager
+#: ../aptdaemon/lock.py:182
+#, python-format
+msgid "Waiting for %s to exit"
+msgstr "正在等候 %s 結束"
+
+#. TRANSLATORS: %s is a list of package names
+#: ../aptdaemon/progress.py:169
+#, python-format
+msgid "Downloading %(files)s"
+msgid_plural "Downloading %(files)s"
+msgstr[0] "正在下載 %(files)s"
+
+#. TRANSLATORS: the string is used as a fallback if we cannot
+#. get the URI of a local repository
+#: ../aptdaemon/progress.py:281 ../aptdaemon/progress.py:320
+msgid "local repository"
+msgstr "本地端套件庫"
+
+#. TRANSLATORS: %s is a list of repository names
+#: ../aptdaemon/progress.py:284
+#, python-format
+msgid "Downloading from %s"
+msgid_plural "Downloading from %s"
+msgstr[0] "正在從 %s 下載"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:324
+#, python-format
+msgid "Structure of %s"
+msgstr "%s 的結構"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:327
+#, python-format
+msgid "Description of %s"
+msgstr "%s 的描述"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:330
+#, python-format
+msgid "Description signature of %s"
+msgstr "%s 的描述簽章"
+
+#: ../aptdaemon/progress.py:335
+#, python-format
+msgid "Available packages from %s"
+msgstr "來自 %s 的可用套件"
+
+#: ../aptdaemon/progress.py:339
+#, python-format
+msgid "Available sources from %s"
+msgstr "來自 %s 的可用來源"
+
+#. TRANSLATORS: repo is the name of a repository
+#: ../aptdaemon/progress.py:342
+#, python-format
+msgid "Available translations from %s"
+msgstr "來自 %s 的可用翻譯"
+
+#: ../aptdaemon/progress.py:359
+#, python-format
+msgid "Translations for %s (%s) from %s"
+msgstr "來自 %s 的 %s (%s) 翻譯"
+
+#. TRANSLATORS: %s is the name of a language. The second one is
+#. the name of the repository
+#: ../aptdaemon/progress.py:363
+#, python-format
+msgid "Translations for %s from %s"
+msgstr "來自 %s 的 %s 翻譯"
+
+#. TRANSLATORS: %s is the code of a language, e.g. ru_RU.
+#. The second one is the name of the repository
+#: ../aptdaemon/progress.py:368
+#, python-format
+msgid "Translations (%s) from %s"
+msgstr "翻譯 (%s) 從 %s"
+
+#: ../aptdaemon/worker/aptworker.py:374 ../aptdaemon/worker/aptworker.py:671
+#: ../aptdaemon/worker/aptworker.py:748 ../aptdaemon/worker/aptworker.py:791
+#, python-format
+msgid "Package %s isn't available"
+msgstr "套件 %s 無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:379 ../aptdaemon/worker/aptworker.py:675
+#: ../aptdaemon/worker/aptworker.py:752 ../aptdaemon/worker/aptworker.py:795
+#, python-format
+msgid "Package %s isn't installed"
+msgstr "套件 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:383
+#, python-format
+msgid "The version %s of %s isn't installed"
+msgstr "版本 %s 的 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:398
+#, python-format
+msgid "Package %s is already installed"
+msgstr "%s 套件已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:407 ../aptdaemon/worker/aptworker.py:821
+#, python-format
+msgid "The version %s of %s isn't available."
+msgstr "%s 版本的 %s 無法使用"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:565
+#, python-format
+msgid "The keyserver URL is invalid: %s"
+msgstr "金鑰伺服器 URL 無效:%s"
+
+#. TRANSLATORS: %s is the URL of GnuPG
+#. keyserver
+#: ../aptdaemon/worker/aptworker.py:571
+#, python-format
+msgid "Invalid protocol of the server: %s"
+msgstr "無效的伺服器協定:%s"
+
+#. TRANSLATORS: %s is the id of a GnuPG key
+#. e.g. E08ADE95
+#: ../aptdaemon/worker/aptworker.py:579 ../aptdaemon/worker/aptworker.py:623
+#, python-format
+msgid "Invalid key id: %s"
+msgstr "無效的金鑰 id:%s"
+
+#: ../aptdaemon/worker/aptworker.py:587
+#, python-format
+msgid ""
+"Failed to download and install the key %s from %s:\n"
+"%s"
+msgstr ""
+"無法下載與安裝金鑰 %s (來自 %s):\n"
+"%s"
+
+#: ../aptdaemon/worker/aptworker.py:604
+#, python-format
+msgid "Key file %s couldn't be installed: %s"
+msgstr "金鑰檔案 %s 無法安裝:%s"
+
+#: ../aptdaemon/worker/aptworker.py:628
+#, python-format
+msgid "Key with fingerprint %s couldn't be removed: %s"
+msgstr "指紋為 %s 的金鑰無法移除:%s"
+
+#: ../aptdaemon/worker/aptworker.py:679
+#, python-format
+msgid "Package %s cannot be removed."
+msgstr "%s 套件無法移除。"
+
+#: ../aptdaemon/worker/aptworker.py:683
+#, python-format
+msgid "The version %s of %s is not installed"
+msgstr "版本 %s 的 %s 未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:763
+#, python-format
+msgid "The former version %s of %s is already installed"
+msgstr "較舊版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:768 ../aptdaemon/worker/aptworker.py:814
+#, python-format
+msgid "The version %s of %s is already installed"
+msgstr "版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:775
+#, python-format
+msgid "The version %s of %s isn't available"
+msgstr "%s 版本的 %s 無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:779
+#, python-format
+msgid "You need to specify a version to downgrade %s to"
+msgstr "您需要指定要將 %s 降級至哪個版本"
+
+#: ../aptdaemon/worker/aptworker.py:807
+#, python-format
+msgid "The later version %s of %s is already installed"
+msgstr "較新版本 %s 的 %s 已經安裝"
+
+#: ../aptdaemon/worker/aptworker.py:838
+#, python-format
+msgid "The package %s isn't available in the %s release."
+msgstr "%s 套件在 %s 發行版本內無法使用"
+
+#: ../aptdaemon/worker/aptworker.py:1026
+#, python-format
+msgid "Package %s cannot be removed"
+msgstr "套件 %s 無法移除"
+
+#: ../aptdaemon/worker/aptworker.py:1123
+msgid ""
+"The package doesn't provide a valid Installed-Size control field. See Debian "
+"Policy 5.6.20."
+msgstr "套件未提供有效的已安裝大小控制欄位。請見 Debian Policy 5.6.20。"
+
+#: ../aptdaemon/worker/aptworker.py:1265
+msgid "The license key is empty"
+msgstr "授權金鑰為空白"
+
+#: ../aptdaemon/worker/aptworker.py:1281
+msgid "The license key is not allowed to contain executable code."
+msgstr "授權金鑰不可含有執行代碼。"
+
+#: ../aptdaemon/worker/aptworker.py:1290
+#, python-format
+msgid "The license key path %s is invalid"
+msgstr "授權金鑰路徑 %s 無效"
+
+#: ../aptdaemon/worker/aptworker.py:1294
+#, python-format
+msgid "The license key already exists: %s"
+msgstr "授權金鑰已存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1299
+#, python-format
+msgid ""
+"The location of the license key is unsecure since it contains symbolic "
+"links. The path %s maps to %s"
+msgstr "授權金鑰的位置不安全,因為它包含符號連結。路徑 %s 對應至 %s"
+
+#: ../aptdaemon/worker/aptworker.py:1307
+#, python-format
+msgid "The directory where to install the key to doesn't exist yet: %s"
+msgstr "金鑰所要安裝的目錄尚未存在:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1318
+#, python-format
+msgid "Failed to write key file to: %s"
+msgstr "無法寫入金鑰檔至:%s"
+
+#: ../aptdaemon/worker/aptworker.py:1353
+msgid "The following packages have unmet dependencies:"
+msgstr "下列套件有無法滿足的相依關係:"
+
+#: ../aptdaemon/worker/aptworker.py:1406
+msgid "but it is a virtual package"
+msgstr "但它只是虛擬套件"
+
+#: ../aptdaemon/worker/aptworker.py:1409
+msgid "but it is not installed"
+msgstr "但是 %s 卻尚未安裝"
+
+#: ../aptdaemon/worker/aptworker.py:1411
+msgid "but it is not going to be installed"
+msgstr "但是它卻不會被安裝"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1415
+#, python-format
+msgid "but %s is installed"
+msgstr "但是 %s 卻已經安裝"
+
+#. TRANSLATORS: %s is a version number
+#: ../aptdaemon/worker/aptworker.py:1419
+#, python-format
+msgid "but %s is to be installed"
+msgstr "但是 %s 卻已經安裝"
+
+#~ msgid "Adding the key to the list of trused software vendors failed"
+#~ msgstr "加入信任的軟體供應者金鑰至列表失敗"
diff --git a/pylintrc b/pylintrc
new file mode 100644
index 0000000..8afe730
--- /dev/null
+++ b/pylintrc
@@ -0,0 +1,8 @@
+[BASIC]
+# Allow CamelCase method names (DBus convention)
+#method-rgx=[a-zA-Z_][a-zA-Z0-9_]{2,30}$
+
+[DESIGN]
+max-args=10
+max-attributes=20
+min-public-methods=0
diff --git a/release.sh b/release.sh
new file mode 100755
index 0000000..837adb3
--- /dev/null
+++ b/release.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# release.sh - Prepare a release and upload it
+
+set -e
+
+USAGE="USAGE: release.sh VERSION"
+
+VERSION=$1
+VERSION_TAG=$(echo "$VERSION" | perl -pi -e "s/\./_/g")
+TARBALL=dist/aptdaemon-$VERSION.tar.gz
+DATE=$(LC_TIME=C date +%c)
+
+if [ -z "$(bzr status | grep -v shelve)" ]; then
+ echo "ERROR: Uncommitted changes, aborting" >&2
+ exit 1
+fi
+
+
+if [ ! $(echo $VERSION | egrep "^[0-9\.]+$") ]; then
+ echo "ERROR: Specify a vaild version number as argument" >&2
+ echo $USAGE
+ exit 1
+fi
+
+
+if [ -e $TARBALL.gz ]; then
+ echo "ERROR: Tarball already exists!" >&2
+ echo $USAGE
+ exit 1
+fi
+
+echo "Preparing $VERSION release..."
+
+# Run the test suite
+# python3 setup.py test
+# python setup.py test
+
+bzr clean-tree --ignored
+
+# Set the version number
+sed -i "1s/.*/VERSION $VERSION - released on $DATE/" NEWS
+sed -i "s/^\(__version__ = \).*/\1'$VERSION'/" aptdaemon/__init__.py
+
+# Create the tarball
+bzr inventory --kind file | sed "s/^/include /" > MANIFEST.in
+bzr log --gnu-changelog -n0 > ChangeLog
+echo "include ChangeLog" >> MANIFEST.in
+
+read -p "Do you want to publish the release? (y/N) " PUBLISH
+echo ""
+
+if [ "$PUBLISH" != "y" ]; then
+ echo "Cancelling..."
+ exit 1
+fi
+
+echo "Uploading to Python Package Index..."
+python3 setup.py sdist upload
+
+gpg --armor --sign --detach-sig $TARBALL
+
+echo "Commiting to VCS repository..."
+bzr commit NEWS aptdaemon/__init__.py -m "Release version $VERSION"
+bzr tag APTDAEMON_$VERSION_TAG
+
+echo "Uploading to Launchpad..."
+lp-project-upload aptdaemon $VERSION $TARBALL
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..09d9080
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,14 @@
+[nosetests]
+verbose=2
+detailed-errors=1
+#pdb=1
+#pdb-failures=1
+nologcapture=1
+
+[build]
+i18n=True
+icons=True
+
+[build_i18n]
+domain=aptdaemon
+xml_files=[("share/polkit-1/actions/", ("data/org.debian.apt.policy.in",))]
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..c08cb5e
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+
+# Work around "TypeError: 'NoneType' object is not callable"
+# during `python setup.py test`
+# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html
+import multiprocessing
+multiprocessing # pyflakes
+
+
+import glob
+import os
+import sys
+from setuptools import *
+
+import aptdaemon
+
+readme = open(os.path.join(os.path.dirname(__file__), "README")).read()
+
+# The transaction class has got it's own gettext translation
+# Don't set bug-contact in setup.cfg since p-d-u-e will overwrite
+# XGETTEXT_ARGS otherwise.
+os.environ["XGETTEXT_ARGS"] = "--keyword=self.trans.gettext"
+
+setup(name="aptdaemon",
+ version=aptdaemon.__version__,
+ description="DBus driven daemon for APT",
+ long_description=readme,
+ author="Sebastian Heinlein",
+ author_email="devel@glatzor.de",
+ packages=["aptdaemon", "aptdaemon.worker"],
+ scripts=["aptd", "aptdcon"],
+ test_suite="nose.collector",
+ license="GNU LGPL",
+ keywords="apt package manager deb dbus d-bus debian ubuntu dpkg",
+ classifiers=["Development Status :: 5 - Production/Stable",
+ "Intended Audience :: System Administrators",
+ "License :: OSI Approved :: GNU Library or Lesser General " \
+ "Public License (LGPL)",
+ "Programming Language :: Python :: 2.6",
+ "Topic :: System :: Systems Administration",
+ "Topic :: System :: Software Distribution"],
+ url="http://launchpad.net/sessioninstaller",
+ data_files=[("../etc/dbus-1/system.d/",
+ ["data/org.debian.apt.conf",
+ "data/org.freedesktop.PackageKit-aptd.conf"]),
+ ("../etc/apt/apt.conf.d/",
+ ["data/20dbus"]),
+ ("share/apport/package-hooks",
+ ["apport/aptdaemon.py"]),
+ ("share/dbus-1/system-services/",
+ ["data/org.debian.apt.service",
+ "data/org.freedesktop.PackageKit.service"]),
+ ("share/man/man1",
+ ["doc/aptd.1", "doc/aptdcon.1"]),
+ ("share/man/man7",
+ ["doc/org.debian.apt.7",
+ "doc/org.debian.apt.transaction.7"]),
+ ],
+ platforms="posix",
+ )
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/__init__.py
diff --git a/tests/_test_py2_string_handling.py b/tests/_test_py2_string_handling.py
new file mode 100644
index 0000000..86709fb
--- /dev/null
+++ b/tests/_test_py2_string_handling.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011 Michael Vogt <mvo@ubuntu.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.
+# Licensed under the GNU General Public License Version 2
+
+"""Regression test for a unicode decoding error in the status_details,
+progress_download or error_properties attributes of the transaction,
+see LP #724735.
+"""
+
+__author__ = "Michael Vogt <mvo@glatzor.de>"
+
+import os
+import sys
+import unittest
+
+import dbus
+from dbus.lowlevel import ErrorMessage, Message
+
+from aptdaemon.core import Transaction
+from aptdaemon.errors import TransactionFailed
+from aptdaemon.test import AptDaemonTestCase, Chroot
+
+
+class TestUnicodeDecoding(AptDaemonTestCase):
+
+ """Test the workaround."""
+
+ def setUp(self):
+ self.chroot = Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.start_dbus_daemon()
+ self.dbus = dbus.bus.BusConnection(self.dbus_address)
+ self.trans = Transaction(None, "role-test", None,
+ os.getpid(), os.getuid(), os.getgid(),
+ sys.argv[0],
+ "org.debian.apt.test", bus=self.dbus)
+
+ def test(self):
+ # ensure we don't crash regardless if str or unicode is passed here
+ self.trans.status_details = "äää"
+ self.trans.status_details = u"äää"
+
+ self.trans.progress_download = ("äö", "ß", "üöä", 1L, 2L, "ö")
+ self.trans.progress_download = (u"äö", u"ß", u"üöä", 1L, 2L, u"ö")
+
+ self.trans.error = TransactionFailed("ERROR_TEST", "Mixed ä %s", u"öä")
+ self.trans.error = TransactionFailed("ERROR_TEST", u"Mixed ü %s", "öä")
+ self.trans.error = TransactionFailed("ERROR_TEST", "Str ä %s", "öä")
+ self.trans.error = TransactionFailed("ERROR_TEST", u"Uni ä %s", u"öä")
+
+ def test_dbus_exception(self):
+ """This tests simulates the steps taken by the DBus bindings to
+ send an error reply, see LP# 761386"""
+ # The original error message that we get from python-apt
+ orig = "E:Die Paketliste oder die Statusdatei konnte nicht " \
+ "eingelesen oder ge\xc3\xb6ffnet werden."
+ for msg in [u"E:Die Paketliste oder die Statusdatei konnte nicht "
+ u"eingelesen oder geöffnet werden.",
+ "E:Die Paketliste oder die Statusdatei konnte nicht "
+ "eingelesen oder geöffnet werden.", orig]:
+ # Create a simple DBus exception
+ error = TransactionFailed("ERROR_TEST", msg)
+
+ # Taken from dbus.service._method_reply_error()
+ name = error.get_dbus_name()
+ content = error.get_dbus_message()
+ self.assertEqual(orig, content[12:])
+ # The constructor of the ErrorMessage fails since we only use
+ # a fake Message
+ self.assertRaises(MemoryError, ErrorMessage, Message(), name,
+ content)
+
+ def test_dbus_exception_lp846044(self):
+ e = TransactionFailed("foo", "bar")
+ e.details = u"ä"
+ foo = unicode(e)
+ self.assertEqual(foo, u"Transaction failed: None\nä")
+ foo = str(e)
+ self.assertEqual(foo, u"Transaction failed: None\nä".encode("utf-8"))
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/_test_py3_string_handling.py b/tests/_test_py3_string_handling.py
new file mode 100644
index 0000000..9773412
--- /dev/null
+++ b/tests/_test_py3_string_handling.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011 Michael Vogt <mvo@ubuntu.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.
+# Licensed under the GNU General Public License Version 2
+
+"""Regression test for a unicode decoding error in the status_details,
+progress_download or error_properties attributes of the transaction,
+see LP #724735.
+"""
+
+__author__ = "Michael Vogt <mvo@glatzor.de>"
+
+import unittest
+
+from aptdaemon.errors import TransactionFailed
+from aptdaemon.test import AptDaemonTestCase
+
+
+class TestUnicodeDecodingPy3(AptDaemonTestCase):
+
+ def test_dbus_exception_lp846044(self):
+ e = TransactionFailed("foo", "bar")
+ e.details = "ä"
+ self.assertEqual(str(e), "Transaction failed: None\nä")
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/aptdaemon b/tests/aptdaemon
new file mode 120000
index 0000000..d2811fd
--- /dev/null
+++ b/tests/aptdaemon
@@ -0,0 +1 @@
+../aptdaemon \ No newline at end of file
diff --git a/tests/data/high-trust-repository-whitelist-broken.cfg b/tests/data/high-trust-repository-whitelist-broken.cfg
new file mode 100644
index 0000000..513e99c
--- /dev/null
+++ b/tests/data/high-trust-repository-whitelist-broken.cfg
@@ -0,0 +1,13 @@
+
+This line makes this no longer a valid file and that is used in the tests
+
+[repo name1]
+origin = Ubuntu
+component = main
+pkgnames = foo.*
+
+[repo name2]
+origin = Debian-Security
+component = non-free
+pkgnames = ^bar$
+
diff --git a/tests/data/high-trust-repository-whitelist.cfg b/tests/data/high-trust-repository-whitelist.cfg
new file mode 100644
index 0000000..68113ac
--- /dev/null
+++ b/tests/data/high-trust-repository-whitelist.cfg
@@ -0,0 +1,10 @@
+
+[repo name1]
+origin = Ubuntu
+component = main
+pkgnames = foo.*
+
+[repo whitelist2]
+origin = Debian-Security
+component = non-free
+pkgnames = ^bar$ \ No newline at end of file
diff --git a/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist-broken.cfg b/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist-broken.cfg
new file mode 120000
index 0000000..3dea1a9
--- /dev/null
+++ b/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist-broken.cfg
@@ -0,0 +1 @@
+../high-trust-repository-whitelist-broken.cfg \ No newline at end of file
diff --git a/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist.cfg b/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist.cfg
new file mode 120000
index 0000000..b5972cc
--- /dev/null
+++ b/tests/data/high-trust-repository-whitelist.d/high-trust-repository-whitelist.cfg
@@ -0,0 +1 @@
+../high-trust-repository-whitelist.cfg \ No newline at end of file
diff --git a/tests/dbus.conf b/tests/dbus.conf
new file mode 100644
index 0000000..6d7c2bc
--- /dev/null
+++ b/tests/dbus.conf
@@ -0,0 +1,21 @@
+<!-- This configuration file controls the per-user-login-session message bus.
+ Add a session-local.conf and edit that rather than changing this
+ file directly. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <type>system</type>
+
+ <listen>unix:tmpdir=/tmp</listen>
+
+ <policy context="default">
+ <!-- Allow everything to be sent -->
+ <allow send_destination="*" eavesdrop="true"/>
+ <!-- Allow everything to be received -->
+ <allow eavesdrop="true"/>
+ <!-- Allow anyone to own anything -->
+ <allow own="*"/>
+ </policy>
+
+</busconfig>
diff --git a/tests/debconf/aptdaemon.config b/tests/debconf/aptdaemon.config
new file mode 100755
index 0000000..c7a8d43
--- /dev/null
+++ b/tests/debconf/aptdaemon.config
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+db_input high aptdaemon/test || true
+db_go || true
+
+exit 0
diff --git a/tests/debconf/aptdaemon.templates b/tests/debconf/aptdaemon.templates
new file mode 100644
index 0000000..e226272
--- /dev/null
+++ b/tests/debconf/aptdaemon.templates
@@ -0,0 +1,5 @@
+Template: aptdaemon/test
+Type: string
+Default: bli bla blub
+Description: This is a test
+ Huhu
diff --git a/tests/dpkg-wrapper.sh b/tests/dpkg-wrapper.sh
new file mode 100755
index 0000000..3880036
--- /dev/null
+++ b/tests/dpkg-wrapper.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /usr/bin/fakeroot /usr/bin/dpkg $*
diff --git a/tests/fake-polkitd.py b/tests/fake-polkitd.py
new file mode 100755
index 0000000..e8dfa70
--- /dev/null
+++ b/tests/fake-polkitd.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python3
+"""Fake a PolicyKit daemon."""
+
+from optparse import OptionParser
+import sys
+
+import dbus
+import dbus.mainloop.glib
+import dbus.service
+from gi.repository import GLib
+
+# Setup the DBus main loop
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+
+class FakePolicyKitDaemon(dbus.service.Object):
+
+ def __init__(self, allowed_actions):
+ self.allowed_actions = allowed_actions
+ bus_name = dbus.service.BusName("org.freedesktop.PolicyKit1",
+ dbus.SystemBus(),
+ do_not_queue=True)
+ dbus.service.Object.__init__(self, bus_name,
+ "/org/freedesktop/PolicyKit1/Authority")
+ self.loop = GLib.MainLoop()
+
+ def run(self):
+ self.loop.run()
+
+ @dbus.service.method("org.freedesktop.PolicyKit1.Authority",
+ in_signature='(sa{sv})sa{ss}us',
+ out_signature='(bba{ss})')
+ def CheckAuthorization(self, subject, action_id, details, flags,
+ cancellation_id):
+ if "all" in self.allowed_actions:
+ allowed = True
+ else:
+ allowed = action_id in self.allowed_actions
+ challenged = False
+ details = {"test": "test"}
+ return (allowed, challenged, details)
+
+ @dbus.service.method("org.freedesktop.PolicyKit1.Authority",
+ in_signature='', out_signature='')
+ def Quit(self):
+ GLib.idle_add(self._quit)
+
+ def _quit(self):
+ self.loop.quit()
+ sys.exit()
+
+
+def main():
+ parser = OptionParser()
+ parser.add_option("-a", "--allowed-actions",
+ default="", action="store", type="string",
+ dest="allowed_actions",
+ help="Comma separated list of allowed action ids")
+ options, args = parser.parse_args()
+ polkitd = FakePolicyKitDaemon(options.allowed_actions.split(","))
+ polkitd.run()
+
+if __name__ == "__main__":
+ main()
diff --git a/tests/fakeroot-apt-key b/tests/fakeroot-apt-key
new file mode 100755
index 0000000..7be9971
--- /dev/null
+++ b/tests/fakeroot-apt-key
@@ -0,0 +1,2 @@
+#!/bin/sh
+fakeroot /usr/bin/apt-key $*
diff --git a/tests/regressions/aptdaemon b/tests/regressions/aptdaemon
new file mode 120000
index 0000000..9b3d444
--- /dev/null
+++ b/tests/regressions/aptdaemon
@@ -0,0 +1 @@
+../../aptdaemon \ No newline at end of file
diff --git a/tests/regressions/test_lp722228.py b/tests/regressions/test_lp722228.py
new file mode 100644
index 0000000..1f84376
--- /dev/null
+++ b/tests/regressions/test_lp722228.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2010 Michael Vogt <mvo@ubuntu.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.
+# Licensed under the GNU General Public License Version 2
+
+"""Regression test for the security issue CVE-2011-0725 tracked
+in LP #722228.
+
+Thanks to Sergey Nizovtsev for spotting this issue.
+
+The UpdateCache method allows to specify an alternative sources.list
+snippet to only update the repositories specified in the corresponding
+configuration file.
+
+Aptdaemon did not restrict the path to the sources.list.d directory and
+allowed to inject packages from malicious sources specified in a custom
+sources.list and even to read every file on the system.
+"""
+
+__author__ = "Michael Vogt <mvo@glatzor.de>"
+
+import os
+import tempfile
+import time
+import unittest2
+
+import apt_pkg
+import dbus
+import mock
+
+import aptdaemon.client
+import aptdaemon.test
+from aptdaemon.worker import AptWorker
+from aptdaemon.errors import AptDaemonError
+
+
+class TestFix(unittest2.TestCase):
+
+ """Test the fix."""
+
+ def test_closed(self):
+ worker = AptWorker()
+ # We don't want to perform any cache changes
+ worker._cache = mock.Mock()
+ trans = mock.Mock()
+ # ensure normal operation keeps working
+ worker.update_cache(trans, None)
+ self.assertTrue(worker._cache.update.called)
+ worker._cache.reset_mock()
+ worker.update_cache(trans, "foobar.list")
+ self.assertTrue(worker._cache.update.called)
+ worker._cache.reset_mock()
+ worker.update_cache(trans, "/etc/apt/sources.list.d/foobar.list")
+ self.assertTrue(worker._cache.update.called)
+ worker._cache.reset_mock()
+ worker.update_cache(trans, "/etc/apt/sources.list")
+ self.assertTrue(worker._cache.update.called)
+
+ # ensure absolute path is no longer working
+ worker._cache.reset_mock()
+ self.assertRaises(AptDaemonError, worker.update_cache, trans,
+ "/etc/fstab")
+ self.assertFalse(worker._cache.update.called)
+ worker._cache.reset_mock()
+ self.assertRaises(AptDaemonError, worker.update_cache, trans,
+ "/tmp/etc/apt/sources.list.d")
+ self.assertFalse(worker._cache.update.called)
+ worker._cache.reset_mock()
+ self.assertRaises(AptDaemonError, worker.update_cache, trans,
+ "/etc/apt/sources.list.d/../../tmp/evil.list")
+ self.assertFalse(worker._cache.update.called)
+ worker._cache.reset_mock()
+ self.assertRaises(AptDaemonError, worker.update_cache, trans,
+ "../../../../../../../../../tmp/evil.list")
+ self.assertFalse(worker._cache.update.called)
+
+
+class TestExploit(aptdaemon.test.AptDaemonTestCase):
+
+ """Test if the a possible exploit still exists."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(1)
+ # Create a file which containts a virtual secret
+ self.secrets_file = tempfile.NamedTemporaryFile(dir=self.chroot.path,
+ delete=False)
+ self.secrets_file.write("Oh oh!")
+ self.secrets_file.close()
+
+ @unittest2.expectedFailure
+ def test(self):
+ """A possible exploit of the security issue.
+ Originally provided by Sergey Nizovtsev.
+ """
+ repo_path = os.path.join(self.chroot.path, "repo")
+ lst_path = os.path.join(self.chroot.path, "malicious.list")
+
+ arch = apt_pkg.config["APT::Architecture"]
+
+ # Setup a pseudo repository and link the file which should be extracted
+ # to the Packages file
+ dir = os.path.join(repo_path, "dists/a/a/binary-%s" % arch)
+ os.makedirs(dir)
+ os.symlink(self.secrets_file.name, "%s/Packages" % dir)
+ # Create a malicious list file which injects the repo
+ with open(lst_path, "w") as lst_file:
+ lst_file.write("deb file://%s a a" % repo_path)
+
+ client = aptdaemon.client.AptClient(self.bus)
+ exit = client.update_cache(sources_list=lst_path, wait=True)
+ self.assertEqual(exit, aptdaemon.enums.EXIT_SUCCESS)
+
+ # Check if succeeded to leak the file content!
+ repo_path_encoded = apt_pkg.uri_to_filename("file://%s" % repo_path)
+ leaked_path = os.path.join(self.chroot.path, "var/lib/apt/lists/",
+ "%s_dists_a_a_binary-%s_"
+ "Packages" % (repo_path_encoded, arch))
+ with open(leaked_path, "r") as leaked_file:
+ self.assertEqual(leaked_file.read(), "Oh oh!")
+
+
+if __name__ == "__main__":
+ unittest2.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/regressions/test_lp768691.py b/tests/regressions/test_lp768691.py
new file mode 100644
index 0000000..14e5fe9
--- /dev/null
+++ b/tests/regressions/test_lp768691.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests if we can handle different encodings well."""
+
+import locale
+import logging
+import os
+import sys
+import unittest
+
+from aptdaemon import core, enums, test, errors, utils
+
+DEBUG = True
+
+if sys.version >= '3':
+ unicode = str
+
+
+class GettextTest(test.AptDaemonTestCase):
+
+ """Regression test for LP: #768691 and LP: #926340
+
+ The gettext.translation.gettext() method returns a string in Python 2.
+ If we try to perform a string format operation, Python wants to convert
+ string to unicode. If the daemon is running with a different
+ default encoding as the translated message this results in an error.
+ By defaulf aptdaemon runs as C if activated by D-Bus.
+ """
+
+ def setUp(self):
+ # Use the mo files from the build
+ local_mo_files = os.path.join(test.get_tests_dir(),
+ "../build/mo")
+ if not os.path.isdir(local_mo_files):
+ self.skipTest("Please run setup.py build before since local mo "
+ "files are required. Run python setup.py build_i18n")
+ core.gettext._default_localedir = local_mo_files
+
+ self.trans = core.Transaction(None, enums.ROLE_FIX_BROKEN_DEPENDS,
+ None, os.getpid(), os.getuid(),
+ sys.argv[0], "org.debian.apt.test",
+ connect=False)
+ self.codes = utils.IsoCodes("iso_639", tag="iso_639_1_code",
+ fallback_tag="iso_639_2T_code")
+
+ def test(self):
+ """Test if the installation of an unauthenticated packages fails
+ if simulate hasn't been called explicitly before.
+ """
+ self.trans._set_locale("de_DE.UTF-8")
+ ret = self.trans.gettext("CD/DVD '%s' is required")
+ self.assertTrue(isinstance(ret, unicode))
+ error = errors.TransactionFailed(enums.ERROR_NO_PACKAGE,
+ "CD/DVD '%s' is required", "lala")
+ self.trans.error = error
+
+ utils.gettext._default_localedir = "/usr/share/locale"
+ lang = self.codes.get_localised_name("en", "ru.UTF-8")
+ self.assertTrue(isinstance(lang, unicode))
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/repo/Packages b/tests/repo/Packages
new file mode 100644
index 0000000..68b585f
--- /dev/null
+++ b/tests/repo/Packages
@@ -0,0 +1,217 @@
+Package: silly-important
+Priority: important
+Section: admin
+Installed-Size: 32
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-important_0.1-0_all.deb
+Size: 1792
+MD5sum: ef9a1eefd088a375ef58773831256205
+SHA1: 4075517d20fdd81d8642ab0febe7ad8c5fcde4f0
+SHA256: 3003723f0f2686a6ed700f364b0c13c966026c5e5f3b383969d87b5dba411d5e
+Description: an essential package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package is an essential one.
+
+Package: silly-fail
+Priority: extra
+Section: admin
+Installed-Size: 36
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-fail_0.1-0_all.deb
+Size: 1874
+MD5sum: 623a67e49bb7a1351a9bf1ae72fc6cfb
+SHA1: 76417770f2b788b680ef18be66b5a6c4ec51bc62
+SHA256: 45fea3eb64a427a288a90b12f42cc3a6abea8e8387efd4879b319db736890ebd
+Description: installation fails
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This installation of this package will always fail.
+
+Package: silly-broken
+Priority: extra
+Section: admin
+Installed-Size: 32
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Depends: silly-unavailable
+Filename: ./silly-broken_0.1-0_all.deb
+Size: 1840
+MD5sum: 78bbe306af637c18f5df9dc47bfbf41f
+SHA1: bb63cdbde699fe2100349b0418af095e6d9f80fe
+SHA256: a816e61369de433e261b5ad041e913ee3c140637825ce6613a5c99efbfd4c21b
+Description: package with broken dependencies
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package cannot be installed because of a missing dependency.
+
+Package: silly-depend-base-lintian-broken
+Priority: extra
+Section: admin
+Installed-Size: 32
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Depends: silly-base
+Filename: ./silly-depend-base-lintian-broken_0.1-0_all.deb
+Size: 1758
+MD5sum: ba9e0b746b08fae8f8a8fbb4cf9ba41e
+SHA1: 8bcaf6034b09383e461f0e366762e6b6683e69e2
+SHA256: ff1302170d232c21ab66f332e38c51b2af9b6d06d8f377ae5944465be9467c22
+Description: package depending on silly-base (but lintian broken)
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package depends on silly-base and has no "Maintainer" set
+ and the file owner is totally wrong so lintian complains about it.
+
+Package: silly-essential
+Essential: yes
+Priority: extra
+Section: admin
+Installed-Size: 32
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-essential_0.1-0_all.deb
+Size: 1800
+MD5sum: 492c977ce9b2f1b6a51d7c475aad058b
+SHA1: 06fb9a5efb07f72edbd297d2a21cffd1787a2388
+SHA256: e516159e99bd40d860515e4c9af251ab056eaabae58ea3f5ee11eecc4f3bee50
+Description: an essential package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package is an essential one.
+
+Package: silly-postinst-input
+Priority: extra
+Section: admin
+Installed-Size: 36
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-postinst-input_0.1-0_all.deb
+Size: 1906
+MD5sum: 99eecdacbcdf95b9e7b3b0c50f812a8d
+SHA1: c066b13414faa9931ff688c29f6dbcf4809861a9
+SHA256: ce6e4f7f59c3d1da45ff0b3e8e54ebdcf9a5b44edeccf9fc04c96daec5cfa020
+Description: breaks your non-interactive package manager
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package will wait for user input in the postinst script.
+
+Package: silly-config
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-config_0.1-0_all.deb
+Size: 1928
+MD5sum: 565698b052640ed3d514f6b38ad457c7
+SHA1: e7169cc58f10e8ff9481cf31b2ffb947bc99f617
+SHA256: 255f025bae5b24a91158e7daa986f9bf59146ab1895f39452104eb97c412d190
+Description: wants to update a locally changed config file
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package will install a configuration file.
+
+Package: gstreamer0.10-silly
+Priority: extra
+Section: admin
+Installed-Size: 168
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Depends: libc6 (>= 2.7-1), libglib2.0-0 (>= 2.16.0), libgstreamer-plugins-base0.10-0 (>= 0.10.0), libgstreamer0.10-0 (>= 0.10.14), libogg0 (>= 1.0rc3)
+Filename: ./gstreamer0.10-silly_0.1-0_all.deb
+Size: 52016
+MD5sum: bbaf259e0dfcb39050061181d2a13755
+SHA1: be59be2d82b7f57097f387a22f5f295d202d9c1d
+SHA256: 6b91b67de10ae547cd4c648ef343c8acd35e626e4a1ac20df1aaae51d6ec6328
+Description: gstreamer plugin test package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package is a GStreamer test plugin package.
+Gstreamer-Version: 0.10
+Gstreamer-Decoders: audio/ac3; audio/mpeg, mpegversion=(int){ 1, 2, 4 };
+Gstreamer-Elements: ac3parse
+
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 32
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Filename: ./silly-base_0.1-0_all.deb
+Size: 1824
+MD5sum: 81ba1cf86142c466f35a36a11b5b7b52
+SHA1: f949c8e5962a43fbcd4f7d67df0ebe741052c497
+SHA256: a7c2a30abdb6488d5c3d2894db398f5dfafbc6be098da1135822be4e3ac94b32
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
+Package: silly-depend-base
+Priority: extra
+Section: admin
+Installed-Size: 32
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages
+Version: 0.1-0
+Depends: silly-base
+Filename: ./silly-depend-base_0.1-0_all.deb
+Size: 1812
+MD5sum: 3ee7181283e4926558d2afdf7b2657f1
+SHA1: 8294794b1727e22b123866f9124431a2c7b79380
+SHA256: 5fa74f7bdc0d207188790419130330becb0cf7484a972762ed512090885016f9
+Description: package depending on silly-base
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package depends on silly-base.
+
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
diff --git a/tests/repo/Release b/tests/repo/Release
new file mode 100644
index 0000000..1a116a9
--- /dev/null
+++ b/tests/repo/Release
@@ -0,0 +1,22 @@
+Date: Wed, 09 May 2012 01:24:59 UTC
+MD5Sum:
+ da80d4a76b8c6119b697558524cdaf71 7325 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+ 0bd018b62f0031d1ee4993896f50ddd5 782 backports/Packages
+ cec65a680d0777c2f8f06bbaa503d345 899 backports/Release
+ 0bd018b62f0031d1ee4993896f50ddd5 782 security/Packages
+ 4fa3f7d1e32aa2bc06b63bf7519d9e64 895 security/Release
+SHA1:
+ c911274d83557d97f04bbab8d681efd11450b695 7325 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 backports/Packages
+ 71e98c6dbe072ebbf7c959c4ebc496743fc4d3ae 899 backports/Release
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 security/Packages
+ 8e14bd91f977a2e12d3e30b3649c3f772e84126e 895 security/Release
+SHA256:
+ 9ee3b2e2d7cd1d6f567a7914d4a78e201b80b65d01d21a0865f1d5a9f5cceab2 7325 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 backports/Packages
+ 6e85dc9fc5506e5564bd9914abc165f0c50ac15d34ede44c31b363468ef641b5 899 backports/Release
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 security/Packages
+ cfdf15ef290d6ab0c9e3afff718dec679d78a07b4364cbfc46be9d9ad4296ca1 895 security/Release
diff --git a/tests/repo/Release.gpg b/tests/repo/Release.gpg
new file mode 100644
index 0000000..868d5ef
--- /dev/null
+++ b/tests/repo/Release.gpg
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAABCAAGBQJPqculAAoJEB8w/lhZqRjZCeEH/jpt4El5MNKUR3Eu0nUR9CYn
+MNo0ZuFGQ+y11yL+FZ7nkwKIFdbFDwcR/5GFPZBPvltTmuBkbSa7sWNU9jyPwJHC
+7IcKVw40C87lMUDN/rRFdGMhYZzpu5n2F74P7frwlgu16yRq5towprwNdRt+6k9F
+LmVvo/os8/p/WwFCPX10ARdm+JTZa/G8OTfSSu6iWmoClOQ/JvYGnmzxyqVICFiF
+lR2YGLAW+RXOo/B9jhJWpz6f5/0MPVd8SpHaONV8RxZeOEkJVTeWYXg9HCIBCjUc
+azCiflzQpTC/cVFvjfEaEP23KHaSV2dTMp0fq91yMCiPq/wDqyB0M64Q8xAMN00=
+=FgqZ
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/backports/Packages b/tests/repo/backports/Packages
new file mode 100644
index 0000000..b8492c6
--- /dev/null
+++ b/tests/repo/backports/Packages
@@ -0,0 +1,20 @@
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
diff --git a/tests/repo/backports/Packages.gpg b/tests/repo/backports/Packages.gpg
new file mode 100644
index 0000000..3b72d67
--- /dev/null
+++ b/tests/repo/backports/Packages.gpg
@@ -0,0 +1,34 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQEcBAEBCAAGBQJO3ZylAAoJEGg8U8fPmC0YooQH/inTQPInDCiN3pTDvzWfV16F
+Ea+UpwBN0vzuyS6f3xmhLRxLQpuz/yk8buc1H+f/XKn6eygydJRFwIEgtdWAN/Tk
+eG9I4c5zYiHzZnNWe4XNBhRdPVkIHPkbmbRs/RvDiM5Cq0LvXIe0X0RV+empJyrC
+EgKbt3PJxh8qpMfrf/OIF+GkSqAug4tq0i0n6QxLOi0raeb9PjfDwErmBpbLDSFg
+XyDnNvPET5BtWxjgupOwoFqs2QRkrLv10JBdGRz+7qG6WhH1BCAOfzYxxCtn++Ip
+kmwo8c/pmtOr1BzZyyNMWP8nvVtB728eb/M84WGYynIEyCObUQ+Q2HVsXcsPQLc=
+=j3Nx
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/backports/Release b/tests/repo/backports/Release
new file mode 100644
index 0000000..0ed3dca
--- /dev/null
+++ b/tests/repo/backports/Release
@@ -0,0 +1,16 @@
+Origin: Debian
+Suite: sid-backports
+Codename: lalelu
+Date: Tue, 06 Dec 2011 04:40:53 UTC
+MD5Sum:
+ 0bd018b62f0031d1ee4993896f50ddd5 782 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+SHA1:
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+SHA256:
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+SHA512:
+ 984c9203b8e534b9b9cc486b21da94cf807428dc1d2daa56427a870f4d53111c58ce749c35509a5fcf7112433d7a403830378a0f482354fb382c0aa7a25bdbc2 782 Packages
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 Release
diff --git a/tests/repo/backports/Release.gpg b/tests/repo/backports/Release.gpg
new file mode 100644
index 0000000..38f5901
--- /dev/null
+++ b/tests/repo/backports/Release.gpg
@@ -0,0 +1,30 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Origin: Debian
+Suite: sid-backports
+Codename: lalelu
+Date: Tue, 06 Dec 2011 04:40:53 UTC
+MD5Sum:
+ 0bd018b62f0031d1ee4993896f50ddd5 782 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+SHA1:
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+SHA256:
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+SHA512:
+ 984c9203b8e534b9b9cc486b21da94cf807428dc1d2daa56427a870f4d53111c58ce749c35509a5fcf7112433d7a403830378a0f482354fb382c0aa7a25bdbc2 782 Packages
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 Release
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQEcBAEBCAAGBQJO3aBFAAoJEGg8U8fPmC0Y+esIAMigdsJQneBznIwfTsA6EMSB
+wKegB/IAl7VJDPMXoUAdu9kVxaJbScrrhHJ6lFdIobgIA+5zWfJjMnvujsM5PDAv
+t8xzh/sU3m3HzR8iBDi10BO+SleKps/fKHnnQZOP8msf03rzydYUTbQI2KVhy+C1
+MSx/KTAD4a/0NPKMw09kKNqfU0uoFLnJFZEO3kVYt3hIZyGjtvw2QoEPMphNMixk
+Qq7YVhKiXw/QB318dPb065bXQePvc1EWxQuR9RgtCCM+9FMyOyF1NwAzOc8XzjEY
+qHib6JzkbH+tBLqq5AmVLOTR07rndGQQuNtu70BkIGkuZC8KpDRMRTq5mi1cipg=
+=CUOV
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/glatzor.gpg b/tests/repo/glatzor.gpg
new file mode 100644
index 0000000..8bb45d3
--- /dev/null
+++ b/tests/repo/glatzor.gpg
@@ -0,0 +1,115 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+mQENBE0hzl4BCADSYPRyP0ZiI/FC+ds375PrW59JRf150kK3nPuEdH8hWQFzO0Sq
+5d3xa7GLGzD2/kk6T7GwSVdH9TVoNBr2aDXdbSIykd04gFvuetFpc/TrB94yHf9F
+1GNSJCVzX4ICzoazMk08Nj/8p+3swp8r4mG1rgIMiV4Vf1mvTL+tN8v68/DleHw2
+8RI0NFK1YdoOh5M46VVFzpBrzkf2aymoA3th8q5ufnOGnDzt867DRu4czLMICqFI
+jSurKIzP0B+ABGZQUpvptGnNOQyYG1rxR1GXXXfXAIInucvDUOrMqq1mJRySgzFC
+xXpJFgWqyaTt1+hzazgzCqCQgtp0CSte8FBBABEBAAG0J1NlYmFzdGlhbiBIZWlu
+bGVpbiA8Z2xhdHpvckB1YnVudHUuY29tPokBNwQTAQgAIQUCT2BikQIbAwULCQgH
+AwUVCgkICwUWAgMBAAIeAQIXgAAKCRBoPFPHz5gtGK6DCADOgqivyWrAXWRTH/9W
+Nl9Vt38QPuS+OOFJxzPcxqCGc8zfvmNDmCQksnZ7i3pkyrGagofUNLJVN8OgXrmJ
+51IXYAZxtqxY9WBjfWMEiOTkt7bszZ/6f5GBg5easEEjHGcOmjR21B8R6AvPV2y1
+hWAgt0KMve4uImd9DPuxUmzGy045BS30BPndWglPDFajecnKC0clQroeV7A31NwY
+WhFCEP2ZXyGv0GHDJ50Ts76nJQAHytJoGgwEkcjb8q5phJROIna8jXUyGV5+1p3E
+UB9bZfwejmAFoy4+PvscqBwE5k2lyJbZ2Z1d5FwsnzsPn+KcdZbrFYhHsABaE24v
+WYuItCVTZWJhc3RpYW4gSGVpbmxlaW4gPGdsYXR6b3JAZnNmZS5vcmc+iQE3BBMB
+CAAhBQJPWv41AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEGg8U8fPmC0Y
+sMgIAIYjmhICQ/Cwxk39MkgKWOoXQaqwZJA67Z5LFxPewolyRfhfYjzpPLSxUg0Y
+389WNtM6ufh6aHzsM9qnNkMpTL1K8Bq+V2HuAghLA1eVyonjs74yx3UVjOr97RqX
+Urkp4iv9udPK92pa43oIH4R6DLzt8sqEVDStmLSV5h0Qx1qKS14FFXEJfExf33Ds
+Kfo2AlSib0G/1qGshlde8+vahGE7BklWWMDaiZV9HSROd/Q66IL0qzSjz6C4qPse
+aVJTmjaP6pJ6lrI983eRdjmSxIL2Xsdg+ELT0S1EndvC1pEwmEIlR/3aACY+KVF4
+Gj/vsSlPABT6eq/S2c9nBUVPYJy0JFNlYmFzdGlhbiBIZWlubGVpbiA8c2ViaUBn
+bGF0em9yLmRlPokBNwQTAQgAIQUCTSHO0AIbAwULCQgHAwUVCgkICwUWAgMBAAIe
+AQIXgAAKCRBoPFPHz5gtGKypB/47mW4RP/c+YLv7b30Fvt2GSYMZqIFbSN4Y0dGo
+1Pkd+XWq/wo2h1UPoZb6K7DTfAXNTCHoqyP5qSe/DO5CrxJuiL5F5mQGTqe+QmSy
+5YYdK3cInddWNwE+ZMBCe2U5oRxBItACq4R0VJ3ZEP3ivYA+/p8FR6H0ya08KEku
+frMoHScG3CfmcWWqxL3ZK4+7XVAdrO3tiuRIEVjT7Luzfmxforc0N63izBhvGqmf
+1uKDRc9qMILbATJRHEQbYxR9d1g/gIY+KIBvrXVSdcRzLC3y1wXM6Zy7XHhx5Mvs
+gvhP1YlfM24Gx23KsJCE9v1120mqt5ZifMkqvPhoiAIlJjwBiEoEEBEIAAoFAk0h
+zyoDBQJ4AAoJEHro6KyTTCLVrAQAnRP5U517+leetoollvfkFGscY9eyAKCHNu7/
+2NJP532vH/h1TAFanzTq+rQyU2ViYXN0aWFuIEhlaW5sZWluIDxzZWJhc3RpYW4u
+aGVpbmxlaW5AZ2xhdHpvci5kZT6JATcEEwEIACEFAk0hzl4CGwMFCwkIBwMFFQoJ
+CAsFFgIDAQACHgECF4AACgkQaDxTx8+YLRiRbQgAg0BT+6RR4pRgORGML4QcBROJ
+Tb51GFe83Fx/cKBJiChSarbdbS5/dDzfq2fzbMjSNOpfPnusDpAvUe1gTcXBTxzz
+V0hcOZHTPLbp6hbLANVbFsjIV+HLDL2VD3RX5XmK/zt62WhB/iHQkSytfFPJb1x8
+kigh5z5pfdb78j+US0cAWF9RpWBjYs0xzIXaxYe0UI7UGu20PwvEbbmAheG/exS2
+ezL8cebnXT1ymlz55ba3Y052XFupNOd5H7KH8MS4Ex4Y0hNaP3zcK01eEe5IdZqq
+afb3XtkxojgzV43OMgWs2o1Yqp58DvuUNSPd5zL90NE57v/Y3Zw5026cQf1KM4hK
+BBARCAAKBQJNIc8qAwUCeAAKCRB66Oisk0wi1SD7AJ9W0wtzT9iL0ZN2Ke+WVyy5
+ndMX/wCfaTLHEIYtgZVsezi1yXKZnejFzIe0LVNlYmFzdGlhbiBIZWlubGVpbiAo
+ZGV2ZWwpIDxkZXZlbEBnbGF0em9yLmRlPokBNwQTAQgAIQUCTSHOogIbAwULCQgH
+AwUVCgkICwUWAgMBAAIeAQIXgAAKCRBoPFPHz5gtGCpWB/9r7Fv4lZgbhmdBAQPE
+rEwWu8Zmr7aLquNcvs2PcBqtQU9JiU8oOJBGskQ6gDT6DAzymobyvALkQB6csf9E
+Lo+JL2HjL0iuytXwEoRAFy3D8ddnEnAC/iVfFsWkMrIsfXkfbNpD7RsOkthsXl8J
+wnA8OBoEayG3mj+cUyddmuLLzbD9k0sF3S8NIiqyp8YkobbP4veAjyBBrOjQEXDC
+pDudYoP9zDE81wUZABU8uj1LcXlK75JpZKJnrMMNXX17VzHbYWPiOThRNLARNidh
+d/rVzSgJbcs5ETbODWH60lZS3LwHYjbqxTp4+FZOyQw+FvNYTCd0dkAVGanc2k/J
+bTaPiEoEEBEIAAoFAk0hzyoDBQJ4AAoJEHro6KyTTCLVQr4Amwdi5Y/Fs4uvA+O5
+xqZeNQMbSxFJAJ49mVdpeO2I1DXxsPqzC3XM6CB3FbQpU2ViYXN0aWFuIEhlaW5s
+ZWluIChkcG9vbCkgPHNoQGRwb29sLm5ldD6JATcEEwEIACEFAk0hzr0CGwMFCwkI
+BwMFFQoJCAsFFgIDAQACHgECF4AACgkQaDxTx8+YLRhB/gf+LsJo0C27+UpisfS+
+AG6ngR/LE9DY4+YMC5gTVT3u6Rnc8rQrvWb9sQgQ1BEl5FAp98EHqbpAq+AGhYMj
+56QedcXFl8ATgV24PkVarUrypo2r99H//f5fMB8mUI2I17lYxuvRNbeEnro9kzqS
+fiQD/P796endPmy+9JtwZ6IiAoov/9WvwQB8i6U3I1mj4eI665QpDaxqVu7XwXeR
+3JN2ezMoz+KJqgpL5IQrwHPP2VyLSOv1lPdrdbWk/rBWDcv+kHxDnIXWlsiLr/Ge
+dPwRhPFK4yOtTxDqrzZxQI6/ySMkVzXFv26lyXEqSfOH/B7hdkMj3x5FeRs4ZOFU
+RJgRi4hKBBARCAAKBQJNIc8qAwUCeAAKCRB66Oisk0wi1bklAJ9taZygn7ZKxw/L
+VEgyacvMeS53nwCghWZr/5o3x4NzPsb7OCKNYb7ftSu5AQ0ET1ot8gEIALYo/VgD
+I2nXjn7bOanslizePCpsYMHp9nRfTYRwKLTukV9cpd0MirqlrYKM8/TZxJqLzd1Q
+mrLQembUU0SW/kaFGYvRpTP/LQcZojyrgN8cJpc1idrgF+pSR7YCIFvUnowdP85u
+rj+My2rAmx5F5qxLXbeTXNcnO60GZs1MfRFN5yU4tKxGuq5FfZPtWtxG8sS2lqAH
+4/ciSI4wjHlVycCtCH0vT9x+S16JZnnIG52o4zGHI0T08ojI8FjvRiSnfwuKYQ4C
+nNbQbaOxHxpz+lIjYQ0QVkzdhFwHBsD744bXWR1ehCOEax2ehF89P62Dw9FvlZSU
+HAgDe0id/W5FpH0AEQEAAYkBHwQYAQgACQUCT1ot8gIbIAAKCRBoPFPHz5gtGPJI
+B/473IbrXxfjSEf85+cIj0JP8VRLoVsZMnOxzUyQkpVEAfLXLHkmRwMc9/aheX9O
+9796p//PSiMP/ig9e8oF4mv5wssN6oBphe9uLpg9eQ9PW/aIbakRlJhhwDCZON6Q
+RPPyQR6zQSjsouePGMstgH+w/OFyKRKcUCDUDJVOr63VsSSoOJN8OarHCi7m6QuW
+Lh0/TnoZBp1cAgd8py6r6bXELj9R2T4I/LtoL74dlbFPZ7Ct+k6j9TgaDl/pbL81
+462D7hMcARZAJLP1e+Q/6ha2w5BhUYoYfpF0wYriKlEl2jX98+lPBk610H8GhgkV
+9X4g615HwQkQWQa8cKIlEcE0uQENBE9bL7MBCADJJbyU4pbHK06wul9RAzHI5h/A
+EoUBo6K5j45HcAx3LHWW4ZRFN6JBmudgKcRTKpu5ij7U61ndi/FXnOctLBQ4BtAM
+nFU5y2I4HIKy7o5ZkaKFbrQJJCy7DuxoN4sj7THGBOoeE2JZQYKXGKfGb/c5qM5p
+ljeZkYt26nrRuPbKMcxg3Kbm0WNaKQli1WYuUkOEyKAlcQWYE9Kuj8kmTBN3+kSq
+PwPBWzdIEWPzQp2a5ZY3Svq4zDaWvaWCz/18J+CzISeqlF7sLoiv8yqJ/E7kxD18
+GZxLxt7Cqd/6/I/4nup1f2vhd77y8PTR9Psl2fhmBDd6AC9yaAHYvr5NGySnABEB
+AAGJAR8EGAEIAAkFAk9bL7MCGwwACgkQaDxTx8+YLRgqjwf/b6VPE/5gVOrAgJVv
+76Xa6N9lqU0Hs026nJ0u5zhcU7WIBBvJiL+irQ4pDTKQZdu3QYV8vIeYa9ssGoQd
+P8OHksq3ZOBvBEsjzblfb1uhDpBHgvsxk7c2lfuDawn0+lQFy94AcV0f/jyYKGKp
+5I9AEgSOhuhrtxqD1fGlRBIjdAqhTKC9cASsS3qGGMuLIjbD6gfRSeSPf+ncpeCb
+6Jw0xJDLIb3xXP2JTvRkgKDVWVZ0Cyvgmvx8ox1vKZABVH8TjGrH3IdRUgb643O4
+BHAnk99PwM7yoRJkP2O2fIICZdY0ZpUaqPCF0QgNXY4TJhI8i0xgnkwbCJA/8lZJ
+w3pqTbkBDQRPWzBBAQgAqyMOJPED8bxfksgtFHp20c/CloKR+dkCIV2Xz7jdlG6h
+U85PniHukuHY1i7BDQofVo8nAjWj0QPPZN6nrHUhAjyxWH41dyd4vI+w8Ryf1fru
+aEk6SpoSr5HimAthyXPPs+wZEXwrGI2AGzdP6HDX7WX+nlHT8J9nnFUa7OyIUnJU
+rd7yv3+z4yKaKKpFmqo3LnXx5ltLuz9X6bOcj07XGdTPijztS1cCHmZdcbPcVQbS
+2yugGtqw7x02dL6sZm8gtEhzaQIAptxwirq5/H7y7Vqy5TWe3Z859PHNcA5cXrg8
+Rhi/tDxSFqlo/1mOmHInaMbssRFgWJ5wHGpBKFBwkwARAQABiQI+BBgBCAAJBQJP
+WzBBAhsCASkJEGg8U8fPmC0YwF0gBBkBCAAGBQJPWzBBAAoJEB8w/lhZqRjZ5gkH
+/jdrZ+9eTHOlUkOT+nGdvG2xI9QnVnoxNeO+V5PO2BgjRcju8U3Cv320KjSJhzIF
+PLXwRSy8x24Uc36ARLj69YM8fwF9ZiCPrameBvECL5qDYFCmSe8WQAEi/ckrhTbG
+RFlpgMc1Z52LnhOcZNw5E7lK15QBxZybwJe8dWsZwqf0AJU/1XUSoxhhZF2kffWf
+5c2hjRrCdldxgT+do5Fr6v0rQOWyc8nv88fb3wawXXasBSD/a6tS6upwtrQJpoXt
+ZI8lukBjQYzWhGKpi0GVrqj6lre1YeZHuTHWEmesfCSYiTLAe4mdEQ3P3SYRNKX1
+rnZOCO0/EW92NQR/iSXWBW9fGAf/fihEurEYFdiquQVhAx0xyeBs1iDwa9LtRY6E
+5CPTRkmQK+Glcjm1NL7fvClYVc9iWLfDEXGl+7t7XpUwlwku9BKxQcstfMhV0uAe
+VnbJ9uDur78j6JYyXTuxh5RopBk3mmH0XE9rBoy5ytPYftoAs9p3FT1qI9Azb584
+1aeWnxbJghqi9a08Iwxr5i596aF6Ilxd6phfmEVufxJ/W5BwX46LpbO8kqlf5+qn
+h6hMcSDFexAJb/RKiGLGqg2OO9U7ghW7Ldk9vQPGLogowHlNpWn609uYO/C2QORH
+4zmRcHf2KEbctxLFj5bZKepgzX0+xPBmIP1rlj8wL7dkFGcbVLkBDQRNIc5eAQgA
+2lDY2Uq/1H1ZbiW9KgAfo4qgahCsOrY2PTq3wQUMaSucdSUn9vZPHhw8OwZh9cnM
+oofoZKW3ub5ZHDxcgZnB/hKBfdchTpNmwIu0PtXy9Bm2e8t7qGChbzVPiaSRanOo
+cpUWnOYXHIooSM84iCCKXCIidRemlq3X+/PjxAMmRyM9MNxPmENoJbFVgjaK1uEz
+7haQnpcvH3NytXbxhGceTInO0PJP1uMBmmCdkpacBddxYdcW9PAVCFv3cusa+GX0
+SSsVIHRB79pA2UM3ZKiErZkK/vSsM6PaLLGfB+PFwSOjKPdBZHlXvC4vp8/MLues
+dtv8pq4jHQz+lNmqmsnC5wARAQABiQEfBBgBCAAJBQJNIc5eAhsMAAoJEGg8U8fP
+mC0YnUEH/32IQgeswnN8JWzEmi5vOmzNI8NB0zri08ECo/+FUMg/flMzKnfV2+fB
+sg5ea0UMOi7XGzm60nvEuFp8C3N+VZrslUOAjc4RErzhy7UZfVZttNb1hGUqwUAm
+fU8jwEGAx69qwHxFqZ7KgcljHl+MHzZl82PkV/v/vnTTxTqvQZ1Xinmu4wPlfGCQ
+5fMj6n/foJpKq7C3xAnxcexD7FPAznFI51xqMCILe7TnsjT4NYUyVKdfPheBG1gh
+ukdmn7rMSUBeaswlSvl4qC7rMEOHovV0NgJR7z+edOBp6+mJiv9Q66zbeIbaZt7i
+8fwzmD4MW2kyoYtEl1VGBL9PjLSZ8Ns=
+=BAJh
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tests/repo/gstreamer0.10-silly_0.1-0_all.deb b/tests/repo/gstreamer0.10-silly_0.1-0_all.deb
new file mode 100644
index 0000000..7eee4ea
--- /dev/null
+++ b/tests/repo/gstreamer0.10-silly_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/security/Packages b/tests/repo/security/Packages
new file mode 100644
index 0000000..b8492c6
--- /dev/null
+++ b/tests/repo/security/Packages
@@ -0,0 +1,20 @@
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
diff --git a/tests/repo/security/Packages.gpg b/tests/repo/security/Packages.gpg
new file mode 100644
index 0000000..3b72d67
--- /dev/null
+++ b/tests/repo/security/Packages.gpg
@@ -0,0 +1,34 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQEcBAEBCAAGBQJO3ZylAAoJEGg8U8fPmC0YooQH/inTQPInDCiN3pTDvzWfV16F
+Ea+UpwBN0vzuyS6f3xmhLRxLQpuz/yk8buc1H+f/XKn6eygydJRFwIEgtdWAN/Tk
+eG9I4c5zYiHzZnNWe4XNBhRdPVkIHPkbmbRs/RvDiM5Cq0LvXIe0X0RV+empJyrC
+EgKbt3PJxh8qpMfrf/OIF+GkSqAug4tq0i0n6QxLOi0raeb9PjfDwErmBpbLDSFg
+XyDnNvPET5BtWxjgupOwoFqs2QRkrLv10JBdGRz+7qG6WhH1BCAOfzYxxCtn++Ip
+kmwo8c/pmtOr1BzZyyNMWP8nvVtB728eb/M84WGYynIEyCObUQ+Q2HVsXcsPQLc=
+=j3Nx
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/security/Release b/tests/repo/security/Release
new file mode 100644
index 0000000..e8ebce5
--- /dev/null
+++ b/tests/repo/security/Release
@@ -0,0 +1,16 @@
+Origin: Debian
+Label: Debian-Security
+Suite: sid
+Date: Tue, 06 Dec 2011 04:40:53 UTC
+MD5Sum:
+ 0bd018b62f0031d1ee4993896f50ddd5 782 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+SHA1:
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+SHA256:
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+SHA512:
+ 984c9203b8e534b9b9cc486b21da94cf807428dc1d2daa56427a870f4d53111c58ce749c35509a5fcf7112433d7a403830378a0f482354fb382c0aa7a25bdbc2 782 Packages
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 Release
diff --git a/tests/repo/security/Release.gpg b/tests/repo/security/Release.gpg
new file mode 100644
index 0000000..d012876
--- /dev/null
+++ b/tests/repo/security/Release.gpg
@@ -0,0 +1,30 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Origin: Debian
+Label: Debian-Security
+Suite: sid
+Date: Tue, 06 Dec 2011 04:40:53 UTC
+MD5Sum:
+ 0bd018b62f0031d1ee4993896f50ddd5 782 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+SHA1:
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+SHA256:
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+SHA512:
+ 984c9203b8e534b9b9cc486b21da94cf807428dc1d2daa56427a870f4d53111c58ce749c35509a5fcf7112433d7a403830378a0f482354fb382c0aa7a25bdbc2 782 Packages
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 Release
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQEcBAEBCAAGBQJO3aA1AAoJEGg8U8fPmC0YigkIAK9CXZukop9g2byChtM8TRsN
+t5K3epgmAoxws7yFF0gZJdFk7p6EMVp+13o5R4WYZhTfVQO8AFcYrEFvb17CGY9g
+Y7JYAl79lkewZJuG5LYFaxUlyczft0p8yqRShpEMp+kKHUuHbpvABfVsLVh8dRWD
+ydm4xIxHD558QSctn0Do+yEuzEJvKuYfp2h5LedXcpylhXjgMchfDhZyvNhPhCEB
+uEb8/o458SILq4XWMSlkyOof/Rn/X7afbtJlG/oq0tSZ8SNYYkVj49TUPPGjD+zw
+cU7LY3G+oEsDMl9XvUTEjX8zfeqcvpfBDa/d5KyXV2ZRg0EJB7mgLVIdBNdhxqA=
+=8bi0
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/silly-base_0.1-0_all.deb b/tests/repo/silly-base_0.1-0_all.deb
new file mode 100644
index 0000000..cb10c10
--- /dev/null
+++ b/tests/repo/silly-base_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-base_0.1-0update1_all.deb b/tests/repo/silly-base_0.1-0update1_all.deb
new file mode 100644
index 0000000..858514f
--- /dev/null
+++ b/tests/repo/silly-base_0.1-0update1_all.deb
Binary files differ
diff --git a/tests/repo/silly-broken_0.1-0_all.deb b/tests/repo/silly-broken_0.1-0_all.deb
new file mode 100644
index 0000000..ced1e29
--- /dev/null
+++ b/tests/repo/silly-broken_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-bully_0.1-0_all.deb b/tests/repo/silly-bully_0.1-0_all.deb
new file mode 100644
index 0000000..54c3b5d
--- /dev/null
+++ b/tests/repo/silly-bully_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-config_0.1-0_all.deb b/tests/repo/silly-config_0.1-0_all.deb
new file mode 100644
index 0000000..c75ec3a
--- /dev/null
+++ b/tests/repo/silly-config_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-depend-base-lintian-broken_0.1-0_all.deb b/tests/repo/silly-depend-base-lintian-broken_0.1-0_all.deb
new file mode 100644
index 0000000..34c09b8
--- /dev/null
+++ b/tests/repo/silly-depend-base-lintian-broken_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-depend-base_0.1-0_all.deb b/tests/repo/silly-depend-base_0.1-0_all.deb
new file mode 100644
index 0000000..56cdc36
--- /dev/null
+++ b/tests/repo/silly-depend-base_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-essential_0.1-0_all.deb b/tests/repo/silly-essential_0.1-0_all.deb
new file mode 100644
index 0000000..43c3079
--- /dev/null
+++ b/tests/repo/silly-essential_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-fail_0.1-0_all.deb b/tests/repo/silly-fail_0.1-0_all.deb
new file mode 100644
index 0000000..f08cfc0
--- /dev/null
+++ b/tests/repo/silly-fail_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-important_0.1-0_all.deb b/tests/repo/silly-important_0.1-0_all.deb
new file mode 100644
index 0000000..5d9ab51
--- /dev/null
+++ b/tests/repo/silly-important_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/silly-postinst-input_0.1-0_all.deb b/tests/repo/silly-postinst-input_0.1-0_all.deb
new file mode 100644
index 0000000..89e0c3d
--- /dev/null
+++ b/tests/repo/silly-postinst-input_0.1-0_all.deb
Binary files differ
diff --git a/tests/repo/whitelisted/Packages b/tests/repo/whitelisted/Packages
new file mode 100644
index 0000000..af8eaef
--- /dev/null
+++ b/tests/repo/whitelisted/Packages
@@ -0,0 +1,34 @@
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
+Package: other-pkg
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Version: 2.0
+Filename: ./other-pkg_2.0_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: another working package
diff --git a/tests/repo/whitelisted/Packages.gpg b/tests/repo/whitelisted/Packages.gpg
new file mode 100644
index 0000000..3b72d67
--- /dev/null
+++ b/tests/repo/whitelisted/Packages.gpg
@@ -0,0 +1,34 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Package: silly-base
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-packages (0.1-0)
+Version: 0.1-0update1
+Filename: ./silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+SHA512: e9eded74e2449a98b02828539c55a83de85a762d2361cd8c929292eb9c5a6e5a9b8eb9b64c26c45d7b73280e12a280cd799a9b831126e484bcf55b56456d559f
+Description: working package
+ Silly packages is a set of packages which will break your package
+ management tool. They are created only for debugging purposes.
+ .
+ This package doesn't contain any files and should always be installable.
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iQEcBAEBCAAGBQJO3ZylAAoJEGg8U8fPmC0YooQH/inTQPInDCiN3pTDvzWfV16F
+Ea+UpwBN0vzuyS6f3xmhLRxLQpuz/yk8buc1H+f/XKn6eygydJRFwIEgtdWAN/Tk
+eG9I4c5zYiHzZnNWe4XNBhRdPVkIHPkbmbRs/RvDiM5Cq0LvXIe0X0RV+empJyrC
+EgKbt3PJxh8qpMfrf/OIF+GkSqAug4tq0i0n6QxLOi0raeb9PjfDwErmBpbLDSFg
+XyDnNvPET5BtWxjgupOwoFqs2QRkrLv10JBdGRz+7qG6WhH1BCAOfzYxxCtn++Ip
+kmwo8c/pmtOr1BzZyyNMWP8nvVtB728eb/M84WGYynIEyCObUQ+Q2HVsXcsPQLc=
+=j3Nx
+-----END PGP SIGNATURE-----
diff --git a/tests/repo/whitelisted/Release b/tests/repo/whitelisted/Release
new file mode 100644
index 0000000..859c02c
--- /dev/null
+++ b/tests/repo/whitelisted/Release
@@ -0,0 +1,17 @@
+Origin: Ubuntu
+Label: Ubuntu-Whitelisted
+Components: main
+Suite: sid
+Date: Tue, 06 Dec 2011 04:40:53 UTC
+MD5Sum:
+ 0bd018b62f0031d1ee4993896f50ddd5 782 Packages
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
+SHA1:
+ 42201c0ab580cb2d557ca22a7ed04717a68b2e6e 782 Packages
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
+SHA256:
+ 950233659ae7e86ac11ae886298963e57f4414691881af1357456c6a4038ef91 782 Packages
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
+SHA512:
+ 984c9203b8e534b9b9cc486b21da94cf807428dc1d2daa56427a870f4d53111c58ce749c35509a5fcf7112433d7a403830378a0f482354fb382c0aa7a25bdbc2 782 Packages
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 Release
diff --git a/tests/repo/whitelisted/Release.gpg b/tests/repo/whitelisted/Release.gpg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/repo/whitelisted/Release.gpg
diff --git a/tests/repo/whitelisted/silly-base_0.1-0update1_all.deb b/tests/repo/whitelisted/silly-base_0.1-0update1_all.deb
new file mode 120000
index 0000000..a960865
--- /dev/null
+++ b/tests/repo/whitelisted/silly-base_0.1-0update1_all.deb
@@ -0,0 +1 @@
+../silly-base_0.1-0update1_all.deb \ No newline at end of file
diff --git a/tests/test_cdrom.py b/tests/test_cdrom.py
new file mode 100644
index 0000000..352bbbe
--- /dev/null
+++ b/tests/test_cdrom.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the client module."""
+
+import logging
+import time
+import unittest
+
+import defer
+import dbus
+
+import aptdaemon.client
+import aptdaemon.loop
+import aptdaemon.enums
+
+import aptdaemon.test
+
+DEBUG = True
+
+
+class CDROMTestCase(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the installation from removable media, e.g. CDROMs."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_trusted_key()
+ self.chroot.add_cdrom_repository()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(1)
+ self.called = False
+
+ @defer.inline_callbacks
+ def _on_medium_required_cancel(self, trans, medium, mount_point):
+ yield trans.cancel()
+
+ @defer.inline_callbacks
+ def _on_medium_required(self, trans, medium, mount_point):
+ if self.called:
+ # Abort if we get asked twice for the cdrom
+ yield trans.cancel()
+ self.chroot.mount_cdrom()
+ self.called = True
+ yield trans.provide_medium(medium)
+
+ def _on_finished(self, trans, exit):
+ """Callback to stop the mainloop after a transaction is done."""
+ aptdaemon.loop.mainloop.quit()
+
+ def test(self):
+ """Test changing media."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-depend-base"])
+ trans.connect("finished", self._on_finished)
+ trans.connect("medium-required", self._on_medium_required)
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+
+ def test_cancel(self):
+ """Test cancelling a required medium request."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-depend-base"])
+ trans.connect("finished", self._on_finished)
+ trans.connect("medium-required", self._on_medium_required_cancel)
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_CANCELLED)
+
+ self.chroot.mount_cdrom()
+
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_client.py b/tests/test_client.py
new file mode 100644
index 0000000..c7370c6
--- /dev/null
+++ b/tests/test_client.py
@@ -0,0 +1,174 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the client module."""
+
+import logging
+import time
+import unittest
+
+import dbus
+import defer
+
+from gi.repository import GObject
+
+import aptdaemon.client
+import aptdaemon.loop
+import aptdaemon.enums
+import aptdaemon.errors
+
+import aptdaemon.test
+
+DEBUG = True
+
+
+class ClientTestNotAuthorized(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the python client."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_test_repository()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon and disallow all actions
+ self.start_fake_polkitd("none")
+ time.sleep(1)
+
+ def _on_finished(self, trans, exit):
+ """Callback to stop the mainloop after a transaction is done."""
+ aptdaemon.loop.mainloop.quit()
+
+ def test_auth_failed(self):
+ """Test the failing of an unauthorized transaction"""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.update_cache()
+ trans.connect("finished", self._on_finished)
+ try:
+ yield trans.run()
+ except aptdaemon.errors.NotAuthorizedError as error:
+ print(error)
+ except Exception as error:
+ self.fail("Wrong exception: %s" % error)
+ else:
+ self.fail("Authorization passed (sic!)")
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.error.code,
+ aptdaemon.enums.ERROR_NOT_AUTHORIZED)
+
+
+class ClientTest(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the python client."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_test_repository()
+ self.chroot.add_trusted_key()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(1)
+
+ def _on_finished(self, trans, exit):
+ """Callback to stop the mainloop after a transaction is done."""
+ aptdaemon.loop.mainloop.quit()
+
+ def test_sync(self):
+ """Test synchronous calls to the client."""
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = self.client.update_cache()
+ trans.connect("finished", self._on_finished)
+ trans.run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(trans.exit, aptdaemon.enums.EXIT_SUCCESS)
+
+ def test_deferred(self):
+ """Test deferred calls to the client."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.update_cache()
+ trans.connect("finished", self._on_finished)
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+
+ def test_client_methods_sync(self):
+ """ Test most client methods (syncronous) """
+ test_methods = [
+ ("enable_distro_component", ("universe",)),
+ ("add_repository", ("deb", "http://archive.ubuntu.com/ubuntu",
+ "lucid", "restricted"))]
+ client = aptdaemon.client.AptClient(self.bus)
+ for (method, args) in test_methods:
+ f = getattr(client, method)
+ exit = f(*args, wait=True)
+ self.assertEqual(exit, aptdaemon.enums.EXIT_SUCCESS)
+
+ def test_simulation_error(self):
+ """Test if a simulation fails in a correct way."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-broken"])
+ trans.connect("finished", self._on_finished)
+ yield trans.simulate()
+ self.fail("We should never have been here")
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.value.code,
+ aptdaemon.enums.ERROR_DEP_RESOLUTION_FAILED)
+
+ def test_run_error(self):
+ """Test if a simulation during run fails in a correct way."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-broken"])
+ trans.connect("finished", self._on_finished)
+ yield trans.run()
+ self.fail("We should never have been here")
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.value.code,
+ aptdaemon.enums.ERROR_DEP_RESOLUTION_FAILED)
+
+ def test_tid_caching(self):
+ """Test if calling Client with identical TIDs uses caching."""
+
+ tid = "/meep"
+ trans = aptdaemon.client.AptTransaction(tid, bus=self.bus)
+ trans2 = aptdaemon.client.AptTransaction(tid, bus=self.bus)
+ trans3 = aptdaemon.client.AptTransaction("/meep2", bus=self.bus)
+ self.assertEqual(trans, trans2)
+ self.assertNotEqual(trans, trans3)
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_configfileprompt.py b/tests/test_configfileprompt.py
new file mode 100644
index 0000000..2f1ede4
--- /dev/null
+++ b/tests/test_configfileprompt.py
@@ -0,0 +1,147 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the config file handling."""
+
+import logging
+import os
+import time
+import unittest
+
+import defer
+import dbus
+
+import aptdaemon.client
+import aptdaemon.loop
+import aptdaemon.enums
+
+import aptdaemon.test
+
+DEBUG = True
+REPO_PATH = os.path.join(aptdaemon.test.get_tests_dir(), "repo")
+
+
+class ConfigFilePromptTestCase(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the replacement of config files."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_test_repository()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(1)
+ self.called = False
+ # Create a fake config file which gets overwritten by silly-config
+ self.config_path = os.path.join(self.chroot.path,
+ "etc/silly-packages.cfg")
+ with open(self.config_path, "w") as config:
+ config.write("BliBlaBlub")
+
+ @defer.inline_callbacks
+ def _on_config_file_conflict(self, trans, config_old, config_new, answer):
+ self.assertEqual(trans.config_file_conflict, (config_old, config_new))
+ if answer == "urgs":
+ # Check if cancelling is forbidden
+ try:
+ yield trans.cancel()
+ except aptdaemon.errors.AptDaemonError as error:
+ self.assertTrue(str(error),
+ "org.debian.apt: Could not cancel transaction")
+ # Check if we fail correctly on wrong answers
+ try:
+ yield trans.resolve_config_file_conflict(config_old,
+ "a&&dasmk")
+ except aptdaemon.errors.AptDaemonError as error:
+ self.assertTrue(str(error).index("Invalid value"))
+ yield trans.resolve_config_file_conflict(config_old, "replace")
+ else:
+ self.fail("Failed to detect invalid answer")
+ else:
+ yield trans.resolve_config_file_conflict(config_old, answer)
+
+ def _on_finished(self, trans, exit):
+ """Callback to stop the mainloop after a transaction is done."""
+ aptdaemon.loop.mainloop.quit()
+
+ def test_keep(self):
+ """Test keeping the current configuration file."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-config"])
+ trans.connect("finished", self._on_finished)
+ trans.connect("config-file-conflict",
+ self._on_config_file_conflict,
+ "keep")
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+ with open(self.config_path) as config:
+ self.assertEqual(config.read(),
+ "BliBlaBlub")
+ with open("%s.dpkg-dist" % self.config_path) as config_dist:
+ self.assertEqual(config_dist.read(),
+ "#Just another config file.\n")
+
+ def test_replace(self):
+ """Test replacing the current configuration file."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-config"])
+ trans.connect("finished", self._on_finished)
+ trans.connect("config-file-conflict",
+ self._on_config_file_conflict,
+ "replace")
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+ with open(self.config_path) as config:
+ self.assertEqual(config.read(),
+ "#Just another config file.\n")
+ with open("%s.dpkg-old" % self.config_path) as config_old:
+ self.assertEqual(config_old.read(),
+ "BliBlaBlub")
+
+ def test_fail(self):
+ """Test failing correctly."""
+ @defer.inline_callbacks
+ def run():
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = yield self.client.install_packages(["silly-config"])
+ yield trans.set_locale("C")
+ trans.connect("finished", self._on_finished)
+ trans.connect("config-file-conflict",
+ self._on_config_file_conflict,
+ "urgs")
+ yield trans.run()
+ defer.return_value(trans)
+ deferred = run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
+ with open(self.config_path) as config:
+ self.assertEqual(config.read(),
+ "#Just another config file.\n")
+ with open("%s.dpkg-old" % self.config_path) as config_old:
+ self.assertEqual(config_old.read(),
+ "BliBlaBlub")
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_configparser.py b/tests/test_configparser.py
new file mode 100644
index 0000000..006404b
--- /dev/null
+++ b/tests/test_configparser.py
@@ -0,0 +1,100 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides unit tests for the APT configuration file parser"""
+# Copyright (C) 2010 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import os
+import sys
+import unittest
+
+import apt_pkg
+
+from aptdaemon.config import ConfigWriter
+
+
+class ConfigurationParserTestCase(unittest.TestCase):
+
+ """Test suite for the configuration parser."""
+
+ def setUp(self):
+ self.parser = ConfigWriter()
+
+ def test_comment_in_value(self):
+ """ ensure that comment strings in values are parsed correctly """
+ s = """// Server information for apt-changelog
+ APT {
+ Changelogs { # bar
+ Server "http://changelogs.ubuntu.com/changelogs"; // foo
+ }
+ }
+ """
+ cf = self.parser.parse(s.split("\n"))
+ self.assertEqual(cf["apt::changelogs::server"].string,
+ "http://changelogs.ubuntu.com/changelogs")
+
+ def test_multi_line_comments(self):
+ s = """/*
+ * APT configuration file for Zope Debian packages.
+ */
+
+DPkg {
+ Post-Invoke {"which dzhandle";};
+}
+ """
+ cf = self.parser.parse(s.split("\n"))
+ self.assertEqual(cf["dpkg::post-invoke"][0].string, "which dzhandle")
+
+ def test_(self):
+ config = {}
+ config_check = {}
+
+ for filename in os.listdir("/etc/apt/apt.conf.d"):
+ path = "/etc/apt/apt.conf.d/%s" % filename
+ config_apt = apt_pkg.Configuration()
+ with open(path, "r") as fd:
+ apt_pkg.read_config_file(config_apt, path)
+ config = self.parser.parse(fd.readlines())
+ for key in config_apt.keys():
+ if key.endswith("::"):
+ key = key[:-2]
+ value_list_apt = config_apt.value_list(key)
+ if value_list_apt:
+ value_list = [val.string for val in
+ config[key.lower()]]
+ self.assertTrue(value_list_apt == value_list,
+ "%s: %s != %s" % (key, value_list_apt,
+ value_list))
+ else:
+ value_apt = config_apt[key]
+ if value_apt:
+ self.assertTrue(
+ value_apt == config[key.lower()].string)
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Only Python3")
+def setUp():
+ pass
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_dbus_type.py b/tests/test_dbus_type.py
new file mode 100644
index 0000000..b7ffcac
--- /dev/null
+++ b/tests/test_dbus_type.py
@@ -0,0 +1,196 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Test index handling."""
+
+from collections import namedtuple
+import os
+import re
+import sys
+import unittest
+
+import dbus
+from gi.repository import GLib
+
+from aptdaemon.worker import aptworker
+from aptdaemon import core
+from aptdaemon import enums
+from aptdaemon import test
+
+REGEX_SIG = "([ibxsdt])|(a{[ibxsdt]+?})|(a[ixbsdt]+?)|(\([ibxsdt]+?\))"
+REGEX_IFACE = r"\n(org\.debian\.apt[a-z\.]*) --- "
+REGEX_ATTRIB = (r"\n\.\.\s+attribute::\s+(?P<name>[a-zA-Z]+)\s+:\s+"
+ "(?P<sig>[a-z\(\)\{\}]+)")
+
+# Setup the DBus main loop
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+DOC_PATH = os.path.join(test.get_tests_dir(), "../doc")
+
+
+class DBusTypeTest(test.AptDaemonTestCase):
+
+ """Make sure that the specified types are returned over D-Bus."""
+
+ def setUp(self):
+ # Extract the property type specification from the documentation
+ self.ifaces = {}
+ with open(os.path.join(DOC_PATH, "source/dbus.rst")) as rst_file:
+ docu = rst_file.read()
+ doc = ""
+ iface = ""
+ for match in re.split(REGEX_IFACE, docu, re.MULTILINE):
+ if match.startswith("org.debian.apt"):
+ iface = match
+ self.ifaces[iface] = {}
+ doc = ""
+ else:
+ doc = match
+ if doc and iface:
+ for match_attrib in re.finditer(REGEX_ATTRIB, doc):
+ name = match_attrib.group("name")
+ sig = match_attrib.group("sig")
+ self.ifaces[iface][name] = sig
+ self.start_dbus_daemon()
+ self.dbus = dbus.bus.BusConnection(self.dbus_address)
+ self.loop = GLib.MainLoop()
+ self.error = None
+
+ def _on_property_changed(self, name, value, iface):
+ if name == "Progress" and value == 100:
+ self.loop.quit()
+ try:
+ self._check_property_type(iface, name, value)
+ except:
+ self.loop.quit()
+ raise
+
+ def _check_property_type(self, iface, name, value, signature=None):
+ if signature is None:
+ signature = self.ifaces[iface][name]
+ if isinstance(value, dbus.String):
+ self.assertEqual(signature, "s",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.String):
+ self.assertEqual(signature, "s",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Int32):
+ self.assertEqual(signature, "i",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Int64):
+ self.assertEqual(signature, "x",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.UInt64):
+ self.assertEqual(signature, "t",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Double):
+ self.assertEqual(signature, "d",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Boolean):
+ self.assertEqual(signature, "b",
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Dictionary):
+ self.assertEqual(signature, "a{%s}" % value.signature,
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ elif isinstance(value, dbus.Struct):
+ if value.signature:
+ self.assertEqual(signature, "s(%s)" % value.signature,
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ else:
+ # The dbus proxy doesn't set the signature property
+ for val, sig in map(lambda x, y: (x, y), value,
+ ["".join(matches) for matches in
+ re.findall(REGEX_SIG, signature[1:-1])]):
+ self._check_property_type(iface, name, val, sig)
+ elif isinstance(value, dbus.Array):
+ self.assertEqual(signature, "a%s" % value.signature,
+ "Property %s on %s doesnt' comply with the "
+ "spec: %s" % (name, iface, value))
+ else:
+ raise Exception("Unkown type %s for property %s of %s" %
+ (type(value), name, iface))
+
+ def _error_cb(self, error):
+ """Errback of the GetAll call."""
+ self.loop.quit()
+ raise error
+
+ def _get_all_cb(self, iface, props):
+ """Callback of the GetAll call."""
+ try:
+ for name, value in props.items():
+ self._check_property_type(iface, name, value)
+ except Exception as error:
+ self.error = error
+ raise
+ finally:
+ self.loop.quit()
+
+ @unittest.skip("Requires to be convert to a C based test client")
+ def test_transaction_properties(self):
+ """Test object properties."""
+ trans = core.Transaction(None, enums.ROLE_REMOVE_PACKAGES, None,
+ os.getpid(), os.getuid(), sys.argv[0],
+ "org.debian.apt.test", bus=self.dbus)
+ proxy = self.dbus.get_object(core.APTDAEMON_DBUS_INTERFACE,
+ trans.tid)
+ iface = core.APTDAEMON_TRANSACTION_DBUS_INTERFACE
+ proxy.GetAll(iface,
+ reply_handler=lambda x: self._get_all_cb(iface, x),
+ error_handler=self._error_cb,
+ dbus_interface=dbus.PROPERTIES_IFACE)
+ self.loop.run()
+ self.assertEqual(self.error, None, self.error)
+
+ @unittest.skip("Requires to be convert to a C based test client")
+ def test_transaction_signals(self):
+ """Test signal emittion."""
+ trans = core.Transaction(None, enums.ROLE_COMMIT_PACKAGES, None,
+ os.getpid(), os.getuid(), sys.argv[0],
+ "org.debian.apt.test", bus=self.dbus,
+ packages=[["silly-base"], [], [], [], [], []])
+ proxy = self.dbus.get_object("org.debian.apt", trans.tid)
+ proxy.connect_to_signal("PropertyChanged",
+ self._on_property_changed,
+ dbus_interface="org.debian.apt.transaction",
+ interface_keyword="iface")
+ chroot = test.Chroot()
+ self.addCleanup(chroot.remove)
+ chroot.setup()
+ chroot.add_test_repository()
+ apt_worker = aptworker.AptWorker(load_plugins=False,
+ chroot=chroot.path)
+ apt_worker.run(trans)
+ self.loop.run()
+ self.assertEqual(self.error, None)
+
+ @unittest.skip("Requires to be convert to a C based test client")
+ def test_aptdaemon_properties(self):
+ """Test aptdaemon properties."""
+ Options = namedtuple("Options", "dummy")
+ opt = Options(True)
+ self.daemon = core.AptDaemon(opt, bus=self.dbus)
+
+ proxy = self.dbus.get_object(core.APTDAEMON_DBUS_SERVICE,
+ core.APTDAEMON_DBUS_PATH)
+ iface = core.APTDAEMON_DBUS_INTERFACE
+ proxy.GetAll(iface,
+ reply_handler=lambda x: self._get_all_cb(iface, x),
+ error_handler=self._error_cb,
+ dbus_interface=dbus.PROPERTIES_IFACE)
+ self.loop.run()
+ self.assertEqual(self.error, None)
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_debconf.py b/tests/test_debconf.py
new file mode 100644
index 0000000..eca31cd
--- /dev/null
+++ b/tests/test_debconf.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the debconf forwarding"""
+
+import logging
+import os
+import subprocess
+import sys
+import tempfile
+import unittest
+
+import apt_pkg
+from gi.repository import GLib
+
+from aptdaemon import test
+from aptdaemon.debconf import DebconfProxy
+
+DEBUG = False
+
+
+class DebconfTestBasic(unittest.TestCase):
+
+ def _stop(self):
+ self.proxy.stop()
+ self.loop.quit()
+
+ def setUp(self):
+ self.loop = GLib.MainLoop()
+ self.debconf_socket_path = tempfile.mktemp(prefix="debconf-socket-")
+ self._set_input_value()
+ self.proxy = DebconfProxy("editor", self.debconf_socket_path)
+ self.proxy.start()
+
+ def _set_input_value(self, template="aptdaemon/test", value="lalelu"):
+ os.environ["DEBIAN_PRIORITY"] = "high"
+ os.environ["EDITOR"] = "sed -ie 's/\\(%s=\\).*/\\1\\\"%s\\\"/i'" % \
+ (template.replace("/", "\\/"), value)
+
+ def _spawn_config_script(self, config_db_path, command=None):
+ if command is None:
+ command = [os.path.join(test.get_tests_dir(),
+ "debconf/aptdaemon.config")]
+ env = {}
+ env["DEBCONF_DB_REPLACE"] = "File{%s}" % config_db_path
+ env["DEBIAN_FRONTEND"] = "passthrough"
+ env["DEBCONF_PIPE"] = self.debconf_socket_path
+ if DEBUG:
+ env["DEBCONF_DEBUG"] = ".*"
+ env_str = ["%s=%s" % (key, val) for key, val in env.items()]
+
+ proc = subprocess.Popen(command, env=env)
+ return proc
+
+ def testBasic(self):
+ def config_done(pid, cond):
+ self.assertEqual(cond, 0,
+ "Config script failed: %s" % os.WEXITSTATUS(cond))
+ self._stop()
+ debconf_db_path = tempfile.mktemp(suffix=".dat",
+ prefix="config-basic-")
+ proc = self._spawn_config_script(debconf_db_path)
+ GLib.child_watch_add(GLib.PRIORITY_DEFAULT, proc.pid, config_done)
+ self.loop.run()
+ # Check the results
+ self._check_value(debconf_db_path)
+
+ @unittest.skipIf(sys.version_info.major < 3 and "nose" in sys.modules,
+ "For unknown reasons lets other tests fail "
+ "(test_simulate) if performed under Python2 and nose")
+ def testSerial(self):
+ """Run several config scripts in a row."""
+ def config_done(pid, cond):
+ self.assertEqual(cond, 0,
+ "Config script failed: %s" % os.WEXITSTATUS(cond))
+ self.config_scripts -= 1
+ if self.config_scripts <= 0:
+ self._stop()
+ else:
+ proc = self._spawn_config_script(debconf_db_path)
+ GLib.child_watch_add(GLib.PRIORITY_DEFAULT,
+ proc.pid, config_done)
+ debconf_db_path = tempfile.mktemp(suffix=".dat", prefix="config-row-")
+ self.config_scripts = 10
+ proc = self._spawn_config_script(debconf_db_path)
+ GLib.child_watch_add(GLib.PRIORITY_DEFAULT, proc.pid, config_done)
+ self.loop.run()
+ # Check the results
+ self._check_value(debconf_db_path)
+
+ def testRace(self):
+ def config_done(pid, cond):
+ self.assertEqual(cond, 0,
+ "Config script failed: %s" % os.WEXITSTATUS(cond))
+ self.workers -= 1
+ if self.workers <= 0:
+ self._stop()
+ debconf_dbs = []
+ self.workers = 0
+ for i in range(10):
+ debconf_db_path = tempfile.mktemp(suffix=".dat",
+ prefix="config-race-")
+ proc = self._spawn_config_script(debconf_db_path)
+ GLib.child_watch_add(GLib.PRIORITY_DEFAULT, proc.pid, config_done)
+ debconf_dbs.append(debconf_db_path)
+ self.workers += 1
+ self.loop.run()
+ # Check the results
+ for db_path in debconf_dbs:
+ self._check_value(db_path)
+
+ def _check_value(self, db_path, template=None, value="lalelu"):
+ with open(db_path) as db_file:
+ for section in apt_pkg.TagFile(db_file):
+ if template == section["Template"] or template is None:
+ self.assertEqual(section["Value"], value)
+ return
+ os.remove(db_path)
+ self.fail("Database doesn't contain any matching value or template")
+
+ def tearDown(self):
+ os.remove(self.debconf_socket_path)
+ self.proxy = None
+ self.loop.quit()
+ self.loop = None
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_gtk3widgets.py b/tests/test_gtk3widgets.py
new file mode 100644
index 0000000..ca3d73f
--- /dev/null
+++ b/tests/test_gtk3widgets.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+"""Test gtk3widgets.py."""
+
+import os
+import codecs
+import shutil
+import tempfile
+import unittest
+
+from aptdaemon.gtk3widgets import DiffView
+
+
+class TestLP1120322(unittest.TestCase):
+
+ def setUp(self):
+ tempdir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, tempdir)
+ self.a = os.path.join(tempdir, 'a.txt')
+ self.b = os.path.join(tempdir, 'b.txt')
+ with codecs.open(self.a, 'w', encoding='utf-8') as f:
+ f.write('one\n')
+ with codecs.open(self.b, 'w', encoding='utf-8') as f:
+ f.write('onee\n')
+
+ def test_lp_1120322(self):
+ # UnboundLocalError when the diff is one line long.
+ dv = DiffView()
+ # This simply should not traceback.
+ dv.show_diff(self.a, self.b)
+
+
+class TestGoodPath(unittest.TestCase):
+
+ def setUp(self):
+ tempdir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, tempdir)
+ self.a = os.path.join(tempdir, 'a.txt')
+ self.b = os.path.join(tempdir, 'b.txt')
+ with codecs.open(self.a, 'w', encoding='utf-8') as f:
+ f.write('one\ntwo\n')
+ with codecs.open(self.b, 'w', encoding='utf-8') as f:
+ f.write('one\ntoo\n')
+
+ def test_lp_1120322(self):
+ # UnboundLocalError when the diff is multiple lines long.
+ dv = DiffView()
+ # This simply should not traceback.
+ dv.show_diff(self.a, self.b)
diff --git a/tests/test_high_trust_repository_whitelist.py b/tests/test_high_trust_repository_whitelist.py
new file mode 100644
index 0000000..38da3c5
--- /dev/null
+++ b/tests/test_high_trust_repository_whitelist.py
@@ -0,0 +1,200 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides unit tests for the APTDAEMON high-trust-repo feature."""
+# Copyright (C) 2011 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Michael Vogt <michael.vogt@ubuntu.com>"
+
+import os
+import sys
+import time
+import unittest
+
+import dbus
+from gi.repository import GLib
+from mock import (
+ patch)
+
+import aptdaemon.client
+from aptdaemon.policykit1 import (
+ PK_ACTION_INSTALL_PACKAGES_FROM_HIGH_TRUST_REPO as PK_ACTION)
+import aptdaemon.test
+
+from aptdaemon.worker.aptworker import (
+ _read_high_trust_repository_whitelist_file,
+ read_high_trust_repository_dir,
+ trans_only_installs_pkgs_from_high_trust_repos,
+ AptWorker)
+from aptdaemon.core import Transaction
+from aptdaemon import enums
+
+
+REPO_PATH = os.path.join(aptdaemon.test.get_tests_dir(), "repo")
+
+PY3K = sys.version_info.major > 2
+
+
+class BaseHighTrustTestCase(aptdaemon.test.AptDaemonTestCase):
+
+ def setUp(self):
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.loop = GLib.MainLoop()
+
+
+class HighTrustRepositoryTestCase(BaseHighTrustTestCase):
+
+ """ Test the worker low-level bits of the high-trust repo implementation"""
+
+ def setUp(self):
+ super(HighTrustRepositoryTestCase, self).setUp()
+ self.queue = aptdaemon.test.MockQueue()
+ self.worker = AptWorker(chroot=self.chroot.path, load_plugins=False)
+ self.worker.connect("transaction-done", lambda w, t: self.loop.quit())
+ self.worker.connect("transaction-simulated",
+ lambda w, t: self.loop.quit())
+
+ def test_read_high_trust_repository_whitelist_dir(self):
+ whitelist = read_high_trust_repository_dir(
+ os.path.join(aptdaemon.test.get_tests_dir(),
+ "data/high-trust-repository-whitelist.d"))
+ self.assertEqual(
+ whitelist, set([("Ubuntu", "main", "foo.*"),
+ ("Debian-Security", "non-free", "^bar$")]))
+
+ def test_read_high_trust_repository_whitelist(self):
+ whitelist = _read_high_trust_repository_whitelist_file(
+ os.path.join(aptdaemon.test.get_tests_dir(),
+ "data/high-trust-repository-whitelist.cfg"))
+ self.assertEqual(
+ whitelist, set([("Ubuntu", "main", "foo.*"),
+ ("Debian-Security", "non-free", "^bar$")]))
+
+ @patch("aptdaemon.worker.log")
+ def test_read_high_trust_repository_whitelist_broken(self, mock_log):
+ """ test that a broken repo file results in a empty whitelist """
+ whitelist = _read_high_trust_repository_whitelist_file(
+ os.path.join(aptdaemon.test.get_tests_dir(),
+ "data/high-trust-repository-whitelist-broken.cfg"))
+ self.assertEqual(whitelist, set())
+ # ensure we log a error if the config file is broken
+ # Skip due to LP: #1487087
+ #mock_log.error.assert_called()
+
+ @patch("aptdaemon.worker.log")
+ def test_read_high_trust_repository_whitelist_not_there(self, mock_log):
+ whitelist = _read_high_trust_repository_whitelist_file(
+ "lalalala-not-there-really.cfg")
+ self.assertEqual(whitelist, set())
+ # ensure we log no error if there is no config file
+ self.assertFalse(mock_log.called)
+
+ def test_high_trust_repository(self):
+ """Test if using a high_trust repo is working """
+ self.chroot.add_repository(os.path.join(aptdaemon.test.get_tests_dir(),
+ "repo/whitelisted"))
+ # setup a whitelist
+ self.worker._high_trust_repositories.add(
+ ("Ubuntu", "", "silly.*"))
+ # a high-trust whitelisted pkg and a non-whitelisted one
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base", "other-pkg"], [], [], [],
+ [], []])
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.high_trust_packages, ["silly-base"])
+ self.assertFalse(
+ trans_only_installs_pkgs_from_high_trust_repos(
+ trans, self.worker._high_trust_repositories))
+ # whitelisted only
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertTrue(
+ trans_only_installs_pkgs_from_high_trust_repos(
+ trans, self.worker._high_trust_repositories))
+
+
+class HighTrustRepositoryIntegrationTestCase(BaseHighTrustTestCase):
+ """ Test the whitelist feature inside the chroot """
+
+ def setUp(self):
+ super(HighTrustRepositoryIntegrationTestCase, self).setUp()
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ # setup the environment first including the high-trust whitelist
+ self.chroot.add_repository(os.path.join(aptdaemon.test.get_tests_dir(),
+ "repo/whitelisted"))
+ whitelist_file = os.path.join(
+ self.chroot.path, "etc", "aptdaemon",
+ "high-trust-repository-whitelist.d", "test.cfg")
+ os.makedirs(os.path.dirname(whitelist_file))
+
+ with open(whitelist_file, "w") as f:
+ f.write("""
+[test repo"]
+origin = Ubuntu
+component =
+pkgnames = silly.*
+""")
+ # *after* that start the aptdaemon
+ self.start_session_aptd(self.chroot.path)
+ time.sleep(1)
+ # start policykit and *only* allow from-whitelisted repo pk action
+ self.start_fake_polkitd(PK_ACTION)
+ time.sleep(1)
+
+ def test_high_trust_polkit_ok(self):
+ self.client = aptdaemon.client.AptClient(self.bus)
+ # test that the high trust whitelist works
+ trans = self.client.install_packages(["silly-base"])
+ trans.simulate()
+ trans.connect("finished", lambda a, b: self.loop.quit())
+ trans.run()
+ self.loop.run()
+ self.assertEqual(trans.exit, aptdaemon.enums.EXIT_SUCCESS)
+ # plus ensure removal will not work
+ trans = self.client.remove_packages(["silly-base"])
+ with self.assertRaises(aptdaemon.errors.NotAuthorizedError):
+ trans.run()
+
+ def test_high_trust_polkit_not_ok(self):
+ self.client = aptdaemon.client.AptClient(self.bus)
+ # ensure that non-whitelisted packages can not be installed
+ trans = self.client.install_packages(["other-pkg"])
+ trans.simulate()
+ trans.connect("finished", lambda a, b: self.loop.quit())
+ with self.assertRaises(aptdaemon.errors.NotAuthorizedError):
+ trans.run()
+
+
+if __name__ == "__main__":
+ # import logging
+ # logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_index.py b/tests/test_index.py
new file mode 100644
index 0000000..52c2717
--- /dev/null
+++ b/tests/test_index.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Test index handling."""
+
+import os.path
+
+import apt
+import apt_pkg
+import unittest
+
+import aptdaemon.test
+
+
+class IndexRaceTest(unittest.TestCase):
+
+ """If the indexes are deleted or manipulated at the time
+ apt.Cache.required_download was called we get the following error:
+ SystemError: I wasn't able to locate file for the XXX package.
+ This might mean you need to manually fix this package.
+
+ See lp:#659438
+ """
+
+ def setUp(self):
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.chroot.add_test_repository()
+ # Check if installing an uninstalled package works
+ self.cache = apt.Cache(rootdir=self.chroot.path)
+ self.cache["silly-base"].mark_install()
+ self.assertEqual(self.cache.required_download, 0)
+ self.cache.clear()
+
+ def test(self):
+ lists_path = apt_pkg.config.find_dir("Dir::State::Lists")
+ for file_name in os.listdir(lists_path):
+ if file_name.endswith("Packages"):
+ os.remove(os.path.join(lists_path, file_name))
+ self.cache["silly-base"].mark_install()
+ self.assertRaises(SystemError,
+ lambda: self.cache.required_download)
+# self.cache.required_download
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_lock.py b/tests/test_lock.py
new file mode 100644
index 0000000..d7aa000
--- /dev/null
+++ b/tests/test_lock.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests locking."""
+
+import logging
+import os
+import socket
+import subprocess
+import sys
+import unittest
+
+import aptdaemon.test
+
+import aptdaemon.worker.aptworker
+
+DEBUG = False
+
+import apt_pkg
+apt_pkg.init()
+
+
+class LockTest(unittest.TestCase):
+
+ REMOTE_REPO = "deb copy://%s/repo ./" % aptdaemon.test.get_tests_dir()
+
+ def setUp(self):
+ self.chroot = aptdaemon.test.Chroot("-lock-test")
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ # Required to change the lock pathes to the chroot
+ self.worker = aptdaemon.worker.aptworker.AptWorker(
+ chroot=self.chroot.path,
+ load_plugins=False)
+ pkg_path = os.path.join(aptdaemon.test.get_tests_dir(),
+ "repo/silly-base_0.1-0_all.deb")
+ self.dpkg_cmd = ["fakeroot", "dpkg", "--root", self.chroot.path,
+ "--log=%s/var/log/dpkg.log" % self.chroot.path,
+ "--install", pkg_path]
+ self.inst_cmd = ('apt-get install silly-base '
+ '-o "Dir"="%s" '
+ '-o "Dir::state::status"="%s/var/lib/dpkg/status" '
+ '-o "Dir::Bin::Dpkg"="%s/dpkg-wrapper.sh" '
+ '-o "DPkg::Options::"="--root=%s" -y --force-yes' %
+ (self.chroot.path, self.chroot.path,
+ aptdaemon.test.get_tests_dir(), self.chroot.path))
+ self.apt_cmd = ('apt-get update -o "Dir"="%s" -o "Dir::state::status="'
+ '"%s/var/lib/dpkg/status"' %
+ (self.chroot.path, self.chroot.path))
+ # ensure to kill /etc/apt/apt.conf.d, otherwise stuff like
+ # the (root only) Dpkg::Post-Invoke actions are run
+ with open("%s/etc/apt/apt.conf" % self.chroot.path, "w") as conf:
+ conf.write('Dir::Etc::parts "/directory-does-not-exist";')
+ self.env = {
+ # override the default apt conf to kill off apt.conf.d includes
+ "APT_CONFIG": "%s/etc/apt/apt.conf" % self.chroot.path,
+ # provide a path for dpkg
+ "PATH": "/sbin:/bin:/usr/bin:/usr/sbin"}
+
+ def test_global_lock(self):
+ """Check if the lock blocks dpkg and apt-get."""
+ # Lock!
+ aptdaemon.worker.aptworker.lock.acquire()
+ self.assertEqual(2, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(100, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ # Relase and all should work again!
+ aptdaemon.worker.aptworker.lock.release()
+ self.assertEqual(0, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+
+ def test_status_lock(self):
+ """Test the lock on the status lock."""
+ # Lock!
+ aptdaemon.worker.aptworker.lock.status_lock.acquire()
+ self.assertEqual(2, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ # Relase and all should work again!
+ aptdaemon.worker.aptworker.lock.status_lock.release()
+ self.assertEqual(0, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+
+ def test_lists_lock(self):
+ """Test the lock on the repository packages lists."""
+ # Lock!
+ aptdaemon.worker.aptworker.lock.lists_lock.acquire()
+ # Dpkg doesn't care about the lock
+ self.assertEqual(0, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(100, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ # Relase and all should work again!
+ aptdaemon.worker.aptworker.lock.lists_lock.release()
+ self.assertEqual(0, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+
+ def test_archives_lock(self):
+ """Test the lock on the download archives."""
+ # Skip the test if we don't have networking
+ aptdaemon.worker.aptworker.lock.archive_lock.acquire()
+ lst_path = os.path.join(self.chroot.path, "etc/apt/sources.list")
+ with open(lst_path, "w") as lst_file:
+ lst_file.write(self.REMOTE_REPO)
+ # Dpkg and apt-get doen't care about the lock as long as there aren't
+ # any downloads required
+ self.assertEqual(0, subprocess.call(self.dpkg_cmd, env=self.env))
+ self.assertEqual(100, subprocess.call(self.apt_cmd, env=self.env,
+ shell=True))
+ self.assertEqual(100, subprocess.call(self.inst_cmd, env=self.env,
+ shell=True))
+ # Relase and all should work again!
+ aptdaemon.worker.aptworker.lock.archive_lock.release()
+ self.assertEqual(0, subprocess.call(self.inst_cmd, env=self.env,
+ shell=True))
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Python 3 only")
+def setUp():
+ pass
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_lock_location.py b/tests/test_lock_location.py
new file mode 100644
index 0000000..7f11b8a
--- /dev/null
+++ b/tests/test_lock_location.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests locking."""
+
+import imp
+import logging
+import os
+import subprocess
+import sys
+import unittest
+
+DEBUG = False
+
+
+class LockFileLocationTest(unittest.TestCase):
+
+ def test_lock_file_location(self):
+ """Make sure that the correct lock files are used."""
+ # Make sure that the lock module is reloaded if called from
+ # within a test suite (to ensure no stale apt_pkg.config values
+ # hanging around)
+ import aptdaemon.lock
+ imp.reload(aptdaemon.lock)
+ # the actual test
+ self.assertEqual(aptdaemon.lock.status_lock.path,
+ os.path.join(os.path.dirname(self.STATUS_PATH),
+ "lock"))
+ self.assertEqual(aptdaemon.lock.lists_lock.path,
+ os.path.join(self.LISTS_PATH, "lock"))
+ self.assertEqual(aptdaemon.lock.archive_lock.path,
+ os.path.join(self.ARCHIVES_PATH, "lock"))
+
+ def setUp(self):
+ """Extract the currently used pathes."""
+ for var, lock in [("self.STATUS_PATH", "'dir::state::status'/f"),
+ ("self.LISTS_PATH", "'dir::state::lists'/d"),
+ ("self.ARCHIVES_PATH", "'dir::cache::archives'/d")]:
+ cmd = subprocess.Popen("/usr/bin/apt-config shell %s %s" % (var,
+ lock),
+ shell=True, stdout=subprocess.PIPE)
+ exec(cmd.communicate()[0])
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Only Python 3")
+def setUp():
+ pass
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_pep8.py b/tests/test_pep8.py
new file mode 100644
index 0000000..42faaaa
--- /dev/null
+++ b/tests/test_pep8.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Make sure that the code conforms the PEP8 conventions."""
+# Copyright (C) 2012 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import subprocess
+import unittest
+
+
+@unittest.skip("Does not work")
+class AptDaemonPep8TestCase(unittest.TestCase):
+
+ def test(self):
+ """Check if the source code matches the PEP8 style conventions."""
+ subprocess.check_call([
+ "pep8", "--statistics", "--show-source",
+ "--show-pep8", "--exclude",
+ "pkenums.py,aptdaemon,tests,debian,doc,.pc,gtk3-demo.py,setup.py",
+ "--ignore=E402"])
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_pk.py b/tests/test_pk.py
new file mode 100644
index 0000000..1c73632
--- /dev/null
+++ b/tests/test_pk.py
@@ -0,0 +1,601 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the PackageKit compatibility layer.
+
+Since the PackageKit client doesn't support changing system D-Bus sockets,
+run the tests only by using nose (e.g. nosetests3 tests.test_pk.PackageKitTest)
+or by running the main routine (python3 test_pk.py).
+
+If a test fails all subsequent ones will fail, too. You will get the following
+error message:
+gi._glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown:
+The name :1.16 was not provided by any .service files
+"""
+
+import atexit
+import logging
+import os
+import os.path
+import shutil
+import subprocess
+import tempfile
+import time
+import sys
+import unittest
+
+import apt_pkg
+import apt.auth
+from gi.repository import GLib
+from gi.repository import PackageKitGlib as pk
+
+import aptdaemon.test
+
+REPO_PATH = os.path.join(aptdaemon.test.get_tests_dir(), "repo")
+DEBUG = True
+
+
+@unittest.skip("Removed PackageKit compat")
+class PackageKitTest(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the PackageKit compatibility layer."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.chroot.add_test_repository()
+ # set up scratch dir
+ self.workdir = tempfile.mkdtemp()
+ # allow tests to add plugins, etc.
+ self.orig_pythonpath = os.environ.get("PYTHONPATH")
+ os.environ["PYTHONPATH"] = "%s:%s" % (self.workdir,
+ os.environ.get("PYTHONPATH", ""))
+ # write apt config for calling apt-key
+ apt_conf = os.path.join(self.chroot.path, 'aptconfig')
+ with open(apt_conf, 'w') as f:
+ f.write('Dir "%s";\n' % self.chroot.path)
+ os.environ['APT_CONFIG'] = apt_conf
+
+ # if tests install keys, have aptd query a local fake server
+ os.environ['APTDAEMON_KEYSERVER'] = 'hkp://localhost:19191'
+
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(2.0)
+
+ def tearDown(self):
+ shutil.rmtree(self.workdir)
+ if self.orig_pythonpath:
+ os.environ["PYTHONPATH"] = self.orig_pythonpath
+
+ def test_install(self):
+ """Test installing a package."""
+ pkg_name = "silly-depend-base"
+
+ client = pk.Client()
+
+ # Resolve the id of the package
+ res = client.resolve(pk.FilterEnum.NONE, [pkg_name], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ ids = []
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_name(), pkg_name)
+ ids.append(pkg.get_id())
+ break
+ else:
+ self.fail("Failed to resolve %s" % pkg_name)
+
+ # Simulate
+ res = client.install_packages(2 ** pk.TransactionFlagEnum.SIMULATE,
+ ids, None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_name(), "silly-base")
+ self.assertEqual(pkg.get_info(),
+ pk.info_enum_from_string("installing"))
+ break
+ else:
+ self.fail("Failed to get dependencies of %s" % pkg_name)
+
+ # Install
+ res = client.install_packages(pk.TransactionFlagEnum.NONE, ids, None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ # verify list of files
+ res = client.get_files(ids, None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ files = res.get_files_array()[0].get_property('files')
+ # ships two files, plus directories
+ self.assertGreaterEqual(len(files), 2,
+ 'expect two files in ' + str(files))
+ self.assertTrue('/usr/share/doc/silly-depend-base/copyright' in files,
+ files)
+
+ def test_install_files(self):
+ """Test installing local package files."""
+
+ path_pkg_config = os.path.join(
+ REPO_PATH,
+ "silly-config_.1-0_all.deb")
+ path_pkg = os.path.join(
+ REPO_PATH,
+ "silly-depend-base_0.1-0_all.deb")
+
+ client = pk.Client()
+
+ # Fail if more than package should be installed
+ try:
+ client.install_files(pk.TransactionFlagEnum.NONE,
+ [path_pkg_config, path_pkg], None,
+ lambda p, t, d: True, None)
+ except GLib.GError as error:
+ self.assertTrue("Only one package" in error.message)
+ else:
+ self.fail("Installing multiple package files didn't fail")
+
+ # Check simulating
+ res = client.install_files(2 ** pk.TransactionFlagEnum.SIMULATE,
+ [path_pkg], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = res.get_package_array()
+ if len(pkgs) != 1:
+ self.fail("Failed to get dependencies")
+ self.assertEqual(pkgs[0].get_name(), "silly-base")
+ self.assertEqual(pkgs[0].get_version(), "0.1-0update1")
+
+ # Check the actual installtion
+ res = client.install_files(pk.TransactionFlagEnum.NONE,
+ [path_pkg], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ # verify list of files
+ res = client.get_files(["silly-depend-base;0.1-0;all;"],
+ None, lambda p, t, d: True, None)
+ files = res.get_files_array()[0].get_property('files')
+ # ships two files, plus directories
+ self.assertGreaterEqual(len(files), 2,
+ 'expect two files in ' + str(files))
+ self.assertTrue('/usr/share/doc/silly-depend-base/copyright' in files,
+ files)
+
+ def test_download(self):
+ """Test downloading packages."""
+ pkg_filename = "silly-base_0.1-0update1_all.deb"
+ pkg_id = "silly-base;0.1-0update1;all;"
+ temp_dir = tempfile.mkdtemp(prefix="aptd-download-test-")
+
+ client = pk.Client()
+ res = client.download_packages([pkg_id], temp_dir,
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ if not os.path.exists(os.path.join(temp_dir, pkg_filename)):
+ self.fail("Failed to download the package")
+
+ shutil.rmtree(temp_dir)
+
+ def test_filters(self):
+ """Test filters."""
+ pkg = "silly-base_0.1-0_all.deb"
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+
+ client = pk.Client()
+
+ # All version
+ res = client.resolve(pk.FilterEnum.NONE, ["silly-base"], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = res.get_package_array()
+ if len(pkgs) != 2:
+ self.fail("Failed to get versions")
+ versions = ["0.1-0", "0.1-0update1"]
+ for pkg in pkgs:
+ self.assertEqual(pkg.get_name(), "silly-base")
+ versions.remove(pkg.get_version())
+
+ # Newest version
+ res = client.resolve(2 ** pk.FilterEnum.NEWEST, ["silly-base"], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = res.get_package_array()
+ if len(pkgs) != 1:
+ self.fail("Failed to get version")
+ self.assertEqual(pkgs[0].get_name(), "silly-base")
+ self.assertEqual(pkgs[0].get_version(), "0.1-0update1")
+
+ # Installed version
+ res = client.resolve(2 ** pk.FilterEnum.INSTALLED, ["silly-base"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = res.get_package_array()
+ if len(pkgs) != 1:
+ self.fail("Failed to get version")
+ self.assertEqual(pkgs[0].get_name(), "silly-base")
+ self.assertEqual(pkgs[0].get_version(), "0.1-0")
+
+ # Available version
+ res = client.resolve(2 ** pk.FilterEnum.NOT_INSTALLED, ["silly-base"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = res.get_package_array()
+ if len(pkgs) != 1:
+ self.fail("Failed to get version")
+ self.assertEqual(pkgs[0].get_name(), "silly-base")
+ self.assertEqual(pkgs[0].get_version(), "0.1-0update1")
+
+ def test_get_updates(self):
+ """Test getting updates."""
+ pkg = "silly-base_0.1-0_all.deb"
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+
+ client = pk.Client()
+
+ res = client.get_updates(pk.FilterEnum.NONE, None,
+ lambda p, t, d: True, None)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_name(), "silly-base")
+ self.assertEqual(pkg.get_version(), "0.1-0update1")
+ self.assertEqual(pkg.get_info(),
+ pk.info_enum_from_string("normal"))
+ break
+ else:
+ self.fail("Failed to detect upgrade")
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ def test_get_updates_security(self):
+ """Test if security updates are detected correctly."""
+ self.chroot.add_repository(os.path.join(aptdaemon.test.get_tests_dir(),
+ "repo/security"))
+ pkg = "silly-base_0.1-0_all.deb"
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+
+ client = pk.Client()
+
+ res = client.get_updates(pk.FilterEnum.NONE, None,
+ lambda p, t, d: True, None)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_name(), "silly-base")
+ self.assertEqual(pkg.get_version(), "0.1-0update1")
+ self.assertEqual(pkg.get_info(),
+ pk.info_enum_from_string("security"))
+ break
+ else:
+ self.fail("Failed to detect upgrade")
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ def test_get_updates_backports(self):
+ """Test if backports are detected correctly."""
+ self.chroot.add_repository(os.path.join(aptdaemon.test.get_tests_dir(),
+ "repo/backports"))
+ pkg = "silly-base_0.1-0_all.deb"
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+
+ client = pk.Client()
+
+ res = client.get_updates(pk.FilterEnum.NONE, None,
+ lambda p, t, d: True, None)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_name(), "silly-base")
+ self.assertEqual(pkg.get_version(), "0.1-0update1")
+ self.assertEqual(pkg.get_info(),
+ pk.info_enum_from_string("enhancement"))
+ break
+ else:
+ self.fail("Failed to detect upgrade")
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ def test_require_restart(self):
+ """Test if the restart-required signal gets emitted."""
+ os.makedirs(os.path.join(self.chroot.path, "var/run"))
+ with open(os.path.join(self.chroot.path, "var/run/reboot-required"),
+ "w") as reboot_stamp:
+ reboot_stamp.write("")
+ client = pk.Client()
+
+ res = client.get_updates(pk.FilterEnum.NONE, None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ self.assertEqual(res.get_require_restart_worst(),
+ pk.RestartEnum.SYSTEM)
+
+ def test_dependencies(self):
+ """Test getting dependencies and dependants."""
+ pkg_id_depend = "silly-depend-base;0.1-0;all;"
+ pkg_id = "silly-base;0.1-0update1;all;"
+
+ client = pk.Client()
+
+ # Get depends
+ res = client.get_depends(pk.FilterEnum.NONE, [pkg_id_depend], True,
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_id(), pkg_id)
+ break
+ else:
+ self.fail("Failed to get dependencies of %s" % pkg_id_depend)
+
+ # Get requires
+ res = client.get_requires(pk.FilterEnum.NONE, [pkg_id], True,
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ for pkg in res.get_package_array():
+ self.assertEqual(pkg.get_id(), pkg_id_depend)
+ break
+ else:
+ self.fail("Failed to get dependants of %s" % pkg_id)
+
+ def test_what_provides_unsupported(self):
+ """Test querying for provides for unsupported type."""
+
+ client = pk.Client()
+
+ try:
+ client.what_provides(pk.FilterEnum.NONE, pk.ProvidesEnum.CODEC,
+ ["gstreamer0.10(decoder-audio/ac3)"],
+ None, lambda p, t, d: True, None)
+ self.fail("expected GLib.Error failure")
+ except GLib.GError as e:
+ self.assertTrue("codec" in str(e), e)
+ self.assertTrue("not supported" in str(e), e)
+
+ def test_what_provides_plugin(self):
+ """Test querying for provides with plugins."""
+
+ # add plugin for extra codecs
+ f = open(os.path.join(self.workdir, "extra_codecs.py"), "w")
+ f.write("""import aptdaemon.pkenums as enums
+
+def fake_what_provides(cache, type, search):
+ if type in (enums.PROVIDES_CODEC, enums.PROVIDES_ANY):
+ if search.startswith('gstreamer'):
+ return [cache["gstreamer0.10-silly"]]
+ raise NotImplementedError('cannot handle type ' + str(type))
+""")
+ f.close()
+ os.mkdir(os.path.join(self.workdir, "extra_codecs-0.egg-info"))
+ f = open(os.path.join(self.workdir, "extra_codecs-0.egg-info",
+ 'entry_points.txt'), "w")
+ f.write("[packagekit.apt.plugins]\n"
+ "what_provides=extra_codecs:fake_what_provides\n")
+ f.close()
+
+ # invalid plugin, should not stop the valid ones
+ os.mkdir(os.path.join(self.workdir, "nonexisting-1.egg-info"))
+ f = open(os.path.join(self.workdir, "nonexisting-1.egg-info",
+ 'entry_points.txt'), "w")
+ f.write("[packagekit.apt.plugins]\n"
+ "what_provides=nonexisting:what_provides\n")
+ f.close()
+
+ # another plugin to test chaining and a new type
+ f = open(os.path.join(self.workdir, "more_stuff.py"), "w")
+ f.write("""import aptdaemon.pkenums as enums
+
+def my_what_provides(cache, type, search):
+ if type in (enums.PROVIDES_CODEC, enums.PROVIDES_ANY):
+ if search.startswith('gstreamer'):
+ return [cache["silly-base"]]
+ if type in (enums.PROVIDES_LANGUAGE_SUPPORT, enums.PROVIDES_ANY):
+ if search.startswith('locale('):
+ return [cache["silly-important"]]
+ raise NotImplementedError('cannot handle type ' + str(type))
+""")
+ f.close()
+ os.mkdir(os.path.join(self.workdir, "more_stuff-0.egg-info"))
+ f = open(os.path.join(self.workdir, "more_stuff-0.egg-info",
+ 'entry_points.txt'), "w")
+ f.write("[packagekit.apt.plugins]\n"
+ "what_provides=more_stuff:my_what_provides\n")
+ f.close()
+
+ client = pk.Client()
+
+ # search for CODEC
+ res = client.what_provides(pk.FilterEnum.NONE, pk.ProvidesEnum.CODEC,
+ ["gstreamer0.10(decoder-audio/vorbis)"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = [p.get_id().split(";")[0] for p in res.get_package_array()]
+ self.assertEqual(pkgs, ["gstreamer0.10-silly", "silly-base"])
+
+ # search for LANGUAGE_SUPPORT
+ res = client.what_provides(pk.FilterEnum.NONE,
+ pk.ProvidesEnum.LANGUAGE_SUPPORT,
+ ["locale(de_DE)"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = [p.get_id().split(";")[0] for p in res.get_package_array()]
+ self.assertEqual(pkgs, ["silly-important"])
+
+ # search ANY
+ res = client.what_provides(pk.FilterEnum.NONE, pk.ProvidesEnum.ANY,
+ ["gstreamer0.10(decoder-audio/vorbis)"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = [p.get_id().split(";")[0] for p in res.get_package_array()]
+ self.assertEqual(pkgs, ["gstreamer0.10-silly", "silly-base"])
+
+ res = client.what_provides(pk.FilterEnum.NONE, pk.ProvidesEnum.ANY,
+ ["locale(de_DE)"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ pkgs = [p.get_id().split(";")[0] for p in res.get_package_array()]
+ self.assertEqual(pkgs, ["silly-important"])
+
+ res = client.what_provides(pk.FilterEnum.NONE, pk.ProvidesEnum.ANY,
+ ["modalias(pci:1)"],
+ None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ self.assertEqual(res.get_package_array(), [])
+
+ # unsupported type with plugins
+ try:
+ client.what_provides(pk.FilterEnum.NONE,
+ pk.ProvidesEnum.PLASMA_SERVICE,
+ ["plasma4(dataengine-weather)"],
+ None, lambda p, t, d: True, None)
+ self.fail("expected GLib.Error failure")
+ except GLib.GError as e:
+ self.assertTrue("plasma" in str(e), e)
+ self.assertTrue("not supported" in str(e), e)
+
+ def test_repo_enable(self):
+ """Test adding a repository."""
+ client = pk.Client()
+
+ # create test update repo
+ repo = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, repo)
+ with open(os.path.join(repo, 'Packages'), 'w') as f:
+ f.write('''Package: silly-new
+Priority: extra
+Section: admin
+Installed-Size: 44
+Maintainer: Sebastian Heinlein <devel@glatzor.de>
+Architecture: all
+Source: silly-new (0.1-0)
+Version: 1.2.3
+Filename: %s/silly-base_0.1-0update1_all.deb
+Size: 1934
+MD5sum: 8e20af56a63a1e0cf40db3b0d07e7989
+SHA1: 7ce87423d9c7a734478c464021994944d07fbf1b
+SHA256: d3693c0e3e7a9519b2833fdf1301c7e03e0620edf15b95b4c7329d9eb0bee553
+Description: new package from a third-party repo
+''' % self.chroot.path)
+
+ # without the new repo, we do not have it yet
+ self.assertRaises(GLib.GError, client.resolve, pk.FilterEnum.NONE,
+ ['silly-new'], None, lambda p, t, d: True, None)
+
+ # now add the new repo
+ apt_source = 'deb file://%s /' % repo
+ res = client.repo_enable(apt_source, True, None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ with open(os.path.join(self.chroot.path, 'etc', 'apt',
+ 'sources.list')) as f:
+ for line in f:
+ if line.strip() == apt_source:
+ break
+ else:
+ self.fail('did not find newly added repository in '
+ 'sources.list')
+
+ # should not actually download the indexes yet
+ self.assertRaises(GLib.GError, client.resolve, pk.FilterEnum.NONE,
+ ['silly-new'], None, lambda p, t, d: True, None)
+
+ res = client.refresh_cache(False, None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ # we should now see the new package
+ res = client.resolve(pk.FilterEnum.NONE, ['silly-new'], None,
+ lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+ packages = res.get_package_array()
+ self.assertEqual(len(packages), 1)
+ self.assertEqual(packages[0].get_name(), "silly-new")
+ self.assertEqual(packages[0].get_version(), "1.2.3")
+ self.assertEqual(packages[0].get_info(),
+ pk.info_enum_from_string("available"))
+
+ def test_repo_enable_errors(self):
+ """Test errors when adding a repository."""
+ client = pk.Client()
+ client.set_locale("C")
+
+ try:
+ client.repo_enable('bogus', True, None, lambda p, t, d: True, None)
+ except GLib.GError as e:
+ self.assertTrue('format' in str(e))
+ self.assertTrue('bogus' in str(e))
+
+ try:
+ client.repo_enable('deb http://example.com', True, None,
+ lambda p, t, d: True, None)
+ except GLib.GError as e:
+ self.assertTrue('format' in str(e), e)
+ self.assertTrue('http://example.com' in str(e), e)
+
+ def test_install_signature(self):
+ """Test installing a new GPG key"""
+ # we do not have any key initially
+ self.assertEqual(len(apt.auth.list_keys()), 0)
+
+ # launch our keyserver
+ self.start_keyserver()
+
+ # now add one
+ client = pk.Client()
+ res = client.install_signature(
+ pk.SigTypeEnum.GPG,
+ 'D0BF65B7DBE28DB62BEDBF1B683C53C7CF982D18',
+ '', None, lambda p, t, d: True, None)
+ self.assertEqual(res.get_exit_code(), pk.ExitEnum.SUCCESS)
+
+ # key was imported correctly
+ key = apt.auth.list_keys()[0]
+ self.assertEqual('CF982D18', key.keyid)
+
+ def test_install_signature_error(self):
+ """Test installing a new GPG key with failing server"""
+
+ # do not start keyserver, so http://localhost.. will not exist
+ client = pk.Client()
+ client.set_locale("C")
+ try:
+ client.install_signature(
+ pk.SigTypeEnum.GPG,
+ '1111111111111111111111111111111111111111',
+ '', None, lambda p, t, d: True, None)
+ except GLib.GError as e:
+ self.assertTrue('Failed to download' in str(e), e)
+ self.assertTrue('11111111' in str(e), e)
+
+ def test_unimplemented(self):
+ """Test proper error message on unimplemented method."""
+ client = pk.Client()
+ client.set_locale("C")
+ try:
+ client.upgrade_system("sid", pk.UpgradeKindEnum.COMPLETE, None,
+ lambda p, t, d: True, None)
+ except GLib.GError as e:
+ self.assertTrue('implemented' in str(e))
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Python3 only")
+def setUp():
+ """The PackageKit client cannot handle a changed system D-Bus address.
+ So we need to setup a static one for the whole test suite.
+
+ This requires to run nosetests to launch this test suite.
+ """
+ proc, address = aptdaemon.test.start_dbus_daemon()
+ os.environ["DBUS_SYSTEM_BUS_ADDRESS"] = address
+ # The pk.Client uses a DBus connection with exit-on-disconnect set to
+ # True which cannot be modified. Furthermore the registered signal
+ # handlers cannot be removed. Since GIO would kill the test suite if
+ # the daemon disappears we have to delay killing the daemon
+ atexit.register(os.kill, proc.pid, 9)
+
+
+def tearDown():
+ os.environ["DBUS_SYSTEM_BUS_ADDRESS"] = ""
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ setUp()
+ unittest.main()
+ tearDown()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_progress.py b/tests/test_progress.py
new file mode 100644
index 0000000..b691212
--- /dev/null
+++ b/tests/test_progress.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the debconf forwarding"""
+
+import apt
+import logging
+import mock
+import sys
+import unittest
+
+import aptdaemon.test
+from aptdaemon.progress import DaemonOpenProgress
+
+
+class TestProgress(unittest.TestCase):
+
+ def setUp(self):
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+
+ def test_open_progress(self):
+ transaction = mock.Mock()
+ begin = 0
+ end = 5
+ d = DaemonOpenProgress(transaction, begin=begin, end=end)
+ # simulate cache open (c = apt.Cache(d)))
+ for j in range(4):
+ for i in range(0, 100, 10):
+ d.update(i)
+ self.assertTrue(d.progress >= begin)
+ self.assertTrue(d.progress <= end)
+ d.done()
+ # ensure we use the full range
+ self.assertEqual(d.progress, end)
+
+ def test_open_progress_real_cache(self):
+ transaction = mock.Mock()
+ begin = 0
+ end = 5
+ d = DaemonOpenProgress(transaction, begin=begin, end=end)
+ c = apt.Cache(d)
+ # ensure we use the full range
+ self.assertEqual(d.progress, end)
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Python 3 only")
+def setUp():
+ pass
+
+if __name__ == "__main__":
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_py2_string_handling.py b/tests/test_py2_string_handling.py
new file mode 100644
index 0000000..ab921f6
--- /dev/null
+++ b/tests/test_py2_string_handling.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2011 Michael Vogt <mvo@ubuntu.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.
+# Licensed under the GNU General Public License Version 2
+
+"""Regression test for a unicode decoding error in the status_details,
+progress_download or error_properties attributes of the transaction,
+see LP #724735.
+"""
+
+__author__ = "Michael Vogt <mvo@glatzor.de>"
+
+import sys
+import unittest
+
+if sys.version_info.major == 2:
+ from _test_py2_string_handling import *
+else:
+ try:
+ from _test_py3_string_handling import *
+ except ImportError:
+ from ._test_py3_string_handling import *
+
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_simulate.py b/tests/test_simulate.py
new file mode 100644
index 0000000..15da129
--- /dev/null
+++ b/tests/test_simulate.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests if the daemon forces a simualte during run."""
+
+import logging
+import time
+import unittest
+
+from gi.repository import GObject
+import dbus
+
+import aptdaemon.client
+import aptdaemon.loop
+import aptdaemon.enums
+
+import aptdaemon.test
+
+DEBUG = True
+
+
+class DaemonTest(aptdaemon.test.AptDaemonTestCase):
+
+ """Test the python client."""
+
+ def setUp(self):
+ """Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
+ # Setup chroot
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ # Start aptdaemon with the chroot on the session bus
+ self.start_dbus_daemon()
+ self.bus = dbus.bus.BusConnection(self.dbus_address)
+ self.start_session_aptd(self.chroot.path)
+ # Start the fake PolikcyKit daemon
+ self.start_fake_polkitd()
+ time.sleep(1)
+
+ def _on_finished(self, trans, exit):
+ """Callback to stop the mainloop after a transaction is done."""
+ aptdaemon.loop.mainloop.quit()
+
+ def test_detect_unauthenticated(self):
+ """Test if the installation of an unauthenticated packages fails
+ if simulate hasn't been called explicitly before.
+ """
+ self.chroot.add_test_repository(copy_sig=False)
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = self.client.install_packages(["silly-base"])
+ trans.connect("finished", self._on_finished)
+ trans.run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(trans.exit, aptdaemon.enums.EXIT_FAILED)
+ self.assertEqual(trans.error.code,
+ aptdaemon.enums.ERROR_PACKAGE_UNAUTHENTICATED)
+ self.assertEqual(trans.unauthenticated, ["silly-base"])
+
+ def test_environment(self):
+ """Ensure that the test environment works."""
+ self.chroot.add_test_repository()
+ self.client = aptdaemon.client.AptClient(self.bus)
+ trans = self.client.install_packages(["silly-base"])
+ trans.connect("finished", self._on_finished)
+ trans.run()
+ aptdaemon.loop.mainloop.run()
+ self.assertEqual(trans.exit, aptdaemon.enums.EXIT_SUCCESS)
+
+
+if __name__ == "__main__":
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_trans_chain.py b/tests/test_trans_chain.py
new file mode 100644
index 0000000..209d7d7
--- /dev/null
+++ b/tests/test_trans_chain.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Tests the debconf forwarding"""
+import unittest
+from gi.repository import GLib
+
+from aptdaemon import enums, client
+
+DEBUG = False
+
+
+class TransChainTest(unittest.TestCase):
+
+ """These tests require an aptdaemon running with the dummy worker:
+ # sudo aptd -td --dummy
+ """
+
+ def setUp(self):
+ self.loop = GLib.MainLoop()
+ self.client = client.AptClient()
+
+ def _test_working(self):
+ def on_finished(trans, exit):
+ self.loop.quit()
+ trans1 = self.client.upgrade_packages(["huhu"])
+ trans2 = self.client.upgrade_packages(["lala"])
+ trans3 = self.client.upgrade_packages(["huhu"])
+ trans2.run_after(trans1)
+ trans3.run_after(trans2)
+ trans1.run()
+ trans3.connect("finished", on_finished)
+ self.loop.run()
+ self.assertTrue(trans1.exit == enums.EXIT_SUCCESS)
+ self.assertTrue(trans2.exit == enums.EXIT_SUCCESS)
+ self.assertTrue(trans3.exit == enums.EXIT_SUCCESS)
+
+ def _test_fail_after(self):
+ def on_finished(trans, exit):
+ self.loop.quit()
+ trans1 = self.client.update_cache()
+ trans2 = self.client.upgrade_packages(["huhululu"])
+ trans3 = self.client.upgrade_packages(["huhululu"])
+ trans2.run_after(trans1)
+ trans3.run_after(trans2)
+ trans1.run()
+ trans3.connect("finished", on_finished)
+ self.loop.run()
+ self.assertTrue(trans1.exit == enums.EXIT_FAILED)
+ self.assertTrue(trans2.exit == enums.EXIT_PREVIOUS_FAILED)
+ self.assertTrue(trans3.exit == enums.EXIT_PREVIOUS_FAILED)
+
+
+if __name__ == "__main__":
+ import logging
+ if DEBUG:
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_valid_package_names.py b/tests/test_valid_package_names.py
new file mode 100644
index 0000000..0e81ab9
--- /dev/null
+++ b/tests/test_valid_package_names.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Test index handling."""
+
+import sys
+import unittest
+
+import apt
+import mock
+
+import aptdaemon.core
+import aptdaemon.errors
+
+
+class TestValidPacakgeNames(unittest.TestCase):
+
+ """Test the code that verifies for valid package names
+ """
+
+ def setUp(self):
+ self.cache = apt.Cache()
+ opt = mock.Mock()
+ opt.dummy = True
+ self.daemon = aptdaemon.core.AptDaemon(opt, connect=False)
+
+ def test_valid_package_names(self):
+ # ensure that the code raises on invalid ones, note that we
+ # test each item individually instead of the list because each
+ # needs to raise
+ for invalid in [
+ "foo_bar", "äää", "i space", "a", "+invalidstart", "noUpper",
+ "foo=", "foo=", "foo=a", "foo=0 space"
+ "foo/", "foo/ space"]:
+ with self.assertRaises(aptdaemon.errors.AptDaemonError):
+ self.daemon._check_package_names([invalid])
+
+ # check some simple good cases
+ for pkgname in ["apt", "apt/unstable", "apt=0.3.2", "apt:i386",
+ "apt+:i386/unstable", "apt+:amd64=0.3.2"]:
+ self.daemon._check_package_names([pkgname])
+
+ # ensure the code does not wrongly label valid packages as
+ # invalid, _check_package_names will raise on error
+ for pkg in self.cache:
+ self.daemon._check_package_names([pkg.name])
+
+ # test again, this time with version number
+ for pkg in self.cache:
+ if not pkg.candidate:
+ continue
+ self.daemon._check_package_names(
+ ["%s=%s" % (pkg.name, pkg.candidate.version)])
+
+ # test again, this time with release origin
+ for pkg in self.cache:
+ if not pkg.candidate:
+ continue
+ archive = pkg.candidate.origins[0].archive
+ if archive:
+ self.daemon._check_package_names(["%s/%s" % (pkg.name,
+ archive)])
+
+
+@unittest.skipIf(sys.version_info.major < 3, "Python 3 only")
+def setUp():
+ pass
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_worker.py b/tests/test_worker.py
new file mode 100644
index 0000000..e82ace0
--- /dev/null
+++ b/tests/test_worker.py
@@ -0,0 +1,588 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Provides unit tests for the APT worker."""
+# Copyright (C) 2011 Sebastian Heinlein <devel@glatzor.de>
+#
+# 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.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import glob
+import netrc
+import os
+import shutil
+import stat
+import sys
+import tempfile
+import unittest
+
+import apt_pkg
+from gi.repository import GLib
+from mock import (
+ Mock,
+ patch)
+
+import aptdaemon.test
+from aptdaemon.worker.aptworker import (
+ AptWorker)
+from aptdaemon.core import Transaction
+from aptdaemon import enums, errors
+
+
+REPO_PATH = os.path.join(aptdaemon.test.get_tests_dir(), "repo")
+
+PY3K = sys.version_info.major > 2
+
+
+class WorkerTestCase(aptdaemon.test.AptDaemonTestCase):
+
+ """Test suite for the worker which performs the actual package
+ installation and removal."""
+
+ def setUp(self):
+ self.chroot = aptdaemon.test.Chroot()
+ self.chroot.setup()
+ self.addCleanup(self.chroot.remove)
+ self.loop = GLib.MainLoop()
+ self.queue = aptdaemon.test.MockQueue()
+ self.worker = AptWorker(chroot=self.chroot.path, load_plugins=False)
+ self.worker.connect("transaction-done", lambda w, t: self.loop.quit())
+ self.worker.connect("transaction-simulated",
+ lambda w, t: self.loop.quit())
+
+ @unittest.skipIf("nose" in sys.modules, "Fails under nosetests3")
+ def test_update_cache(self):
+ """Test updating the cache using a local repository."""
+ # Add a working and a non-working repository
+ self.chroot.add_trusted_key()
+ path = os.path.join(self.chroot.path,
+ "etc/apt/sources.list.d/test.list")
+ with open(path, "w") as part_file:
+ part_file.write("deb file://%s ./" % REPO_PATH)
+ self.chroot.add_repository("/does/not/exist", copy_list=False)
+ # Only update the repository from the working snippet
+ trans = Transaction(None, enums.ROLE_UPDATE_CACHE,
+ self.queue, os.getpid(), os.getuid(),
+ os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"sources_list": "test.list"})
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertEqual(len(self.worker._cache), 10)
+ pkg = self.worker._cache["silly-base"]
+ self.assertTrue(pkg.candidate.origins[0].trusted)
+
+ def test_upgrade_system(self):
+ """Test upgrading the system."""
+ self.chroot.add_test_repository()
+ self.chroot.install_debfile(os.path.join(REPO_PATH,
+ "silly-base_0.1-0_all.deb"))
+ # Install the package
+ trans = Transaction(None, enums.ROLE_UPGRADE_SYSTEM,
+ self.queue, os.getpid(), os.getgid(),
+ os.getuid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"safe_mode": False})
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_UPGRADE],
+ ["silly-base=0.1-0update1"])
+ self.assertTrue(trans.space > 0)
+ self.assertTrue(trans.download == 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ # Test apt history log
+ with open(os.path.join(self.chroot.path, "var/log/apt/history.log")) \
+ as history_file:
+ history = history_file.read()
+ self.assertTrue("Commandline: aptdaemon role='%s'" % trans.role in
+ history)
+
+ self.assertEqual(self.worker._cache["silly-base"].installed.version,
+ "0.1-0update1")
+
+ def test_check_unauth(self):
+ """Test if packages from an unauthenticated repo are detected."""
+ self.chroot.add_test_repository(copy_sig=False)
+ # Install the package
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ self.worker.simulate(trans)
+ self.loop.run()
+ trans.allow_unauthenticated = False
+ self.assertEqual(trans.unauthenticated, ["silly-base"])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_FAILED)
+ self.assertEqual(trans.error.code, enums.ERROR_PACKAGE_UNAUTHENTICATED)
+
+ # Allow installation of unauthenticated packages
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-base"], [], [], [], [], []])
+ trans.allow_unauthenticated = True
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.unauthenticated, ["silly-base"])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertTrue(self.worker._cache["silly-base"].is_installed)
+
+ def test_install(self):
+ """Test installation of a package from a repository."""
+ self.chroot.add_test_repository()
+ # Install the package
+ trans = Transaction(None, enums.ROLE_INSTALL_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[["silly-depend-base"], [], [], [],
+ [], []])
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_INSTALL],
+ ["silly-base=0.1-0update1"])
+ self.assertTrue(trans.space > 0)
+ self.assertTrue(trans.download == 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertTrue(self.worker._cache["silly-depend-base"].is_installed)
+
+ def test_remove_obsolete(self):
+ """Test the removal of obsoleted packages."""
+ for pkg in ["silly-base_0.1-0_all.deb",
+ "silly-depend-base_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ ext_states = apt_pkg.config.find_file("Dir::State::extended_states")
+ with open(ext_states, "w") as ext_states_file:
+ ext_states_file.write("""Package: silly-base
+Architecture: all
+Auto-Installed: 1""")
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-depend-base"], [],
+ [], []])
+ trans.remove_obsoleted_depends = True
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_REMOVE],
+ ["silly-base=0.1-0"])
+ self.assertTrue(trans.space < 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertFalse("silly-base" in self.worker._cache)
+ self.assertFalse("silly-depend-base" in self.worker._cache)
+
+ def test_remove(self):
+ """Test the removal of packages."""
+ for pkg in ["silly-base_0.1-0_all.deb",
+ "silly-essential_0.1-0_all.deb",
+ "silly-depend-base_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-base"], [], [], []])
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_REMOVE],
+ ["silly-depend-base=0.1-0"])
+ self.assertTrue(trans.space < 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ try:
+ installed = self.worker._cache["silly-depend-base"].is_installed
+ self.assertFalse(installed)
+ except KeyError:
+ pass
+ # Don't allow to remove essential packages
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], ["silly-essential"], [], [], []])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_FAILED,
+ "Allowed to remove an essential package")
+ self.assertEqual(trans.error.code,
+ enums.ERROR_NOT_REMOVE_ESSENTIAL_PACKAGE,
+ "Allowed to remove an essential package")
+
+ def test_upgrade(self):
+ """Test upgrading of packages."""
+ self.chroot.add_test_repository()
+ for pkg in ["silly-base_0.1-0_all.deb",
+ "silly-depend-base_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ ext_states = apt_pkg.config.find_file("Dir::State::extended_states")
+ with open(ext_states, "w") as ext_states_file:
+ ext_states_file.write("""Package: silly-base
+Architecture: all
+Auto-Installed: 1""")
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], [],
+ ["silly-base=0.1-0update1"], []])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertEqual(self.worker._cache["silly-base"].installed.version,
+ "0.1-0update1", "Failed to upgrade.")
+ self.assertTrue(self.worker._cache["silly-base"].is_auto_installed)
+
+ def test_downgrade(self):
+ """Test downgrading of packages."""
+ self.chroot.add_test_repository()
+ pkg = os.path.join(REPO_PATH, "silly-base_0.1-0update1_all.deb")
+ self.chroot.install_debfile(pkg)
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], [], [],
+ ["silly-base=0.1-0"]])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertEqual(self.worker._cache["silly-base"].installed.version,
+ "0.1-0", "Failed to downgrade.")
+
+ def test_purge(self):
+ """Test the purging of packages."""
+ for pkg in ["silly-base_0.1-0_all.deb", "silly-config_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg))
+ trans = Transaction(None, enums.ROLE_REMOVE_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ packages=[[], [], [], ["silly-config"], [], []])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.assertFalse(
+ os.path.exists(os.path.join(self.chroot.path,
+ "etc/silly-packages.cfg")),
+ "Configuration file wasn't removed.")
+
+ def test_install_file(self):
+ """Test the installation of a local package file."""
+ # test
+ self.chroot.add_test_repository()
+ pkg = os.path.join(REPO_PATH,
+ "silly-depend-base_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": False})
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_INSTALL],
+ ["silly-base=0.1-0update1"])
+ self.assertTrue(trans.space > 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ pkg = self.worker._cache["silly-depend-base"]
+ self.assertTrue(pkg.is_installed)
+
+ def test_install_conflicting_file(self):
+ """Test installing of a local package file that conflicts with
+ installed packages.
+
+ Regression test for LP: #750958
+ """
+ pkg_base = "silly-base_0.1-0_all.deb"
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg_base))
+ pkg = os.path.join(REPO_PATH, "silly-bully_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": True})
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_FAILED,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.assertEqual(trans.error.code, enums.ERROR_DEP_RESOLUTION_FAILED)
+ self.worker._cache.open()
+
+ def test_install_unknown_file(self):
+ """Test the installation of a local package file which is not known
+ to the cache.
+
+ Regression test for LP #702217
+ """
+ pkg = os.path.join(REPO_PATH, "silly-base_0.1-0_all.deb")
+ trans = Transaction(None, enums.ROLE_INSTALL_FILE, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False,
+ kwargs={"path": os.path.join(REPO_PATH, pkg),
+ "force": True})
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.packages, (["silly-base"], [], [], [], [], []))
+ self.assertTrue(trans.space > 0)
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertTrue(self.worker._cache["silly-base"].is_installed)
+
+ def test_fix_broken_depends(self):
+ """Test the fixing of broken dependencies."""
+ for pkg in ["silly-base_0.1-0_all.deb", "silly-broken_0.1-0_all.deb"]:
+ self.chroot.install_debfile(os.path.join(REPO_PATH, pkg), True)
+ trans = Transaction(None, enums.ROLE_FIX_BROKEN_DEPENDS, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test", connect=False)
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.depends[enums.PKGS_REMOVE],
+ ["silly-broken=0.1-0"])
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ self.worker._cache.open()
+ self.assertEqual(self.worker._cache.broken_count, 0)
+
+ def test_install_broken_depends(self):
+ """Test the that installing a package with broken dependencies
+ fails in a correct way.
+ """
+ self.chroot.add_test_repository()
+ trans = Transaction(None, enums.ROLE_COMMIT_PACKAGES, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test",
+ packages=[["silly-broken"], [], [], [], [], []],
+ connect=False)
+ self.worker.simulate(trans)
+ self.loop.run()
+ self.assertEqual(trans.error.code, enums.ERROR_DEP_RESOLUTION_FAILED)
+
+ def test_add_license_key_unsecure(self):
+ """Test if we refuse to install license key files to an unsecure
+ location or binaries."""
+ self.chroot.add_test_repository(copy_sig=False)
+ # Should fail because of an untrusted source
+ license_key = "NASTY_BLOB"
+ license_key_path = "/opt/silly-license/NASTY.KEY"
+ pkg_name = "silly-license"
+ self.assertRaises(errors.TransactionFailed,
+ self.worker._add_license_key_to_system,
+ pkg_name, license_key, license_key_path)
+ # Check if we don't allow to install executables
+ with open("/bin/ls", "rb") as sample_exec:
+ license_key = sample_exec.read()
+ if PY3K:
+ license_key = license_key.decode("UTF-8", "ignore")
+ pkg_name = "silly-license"
+ self.assertRaises(errors.TransactionFailed,
+ self.worker._add_license_key_to_system,
+ pkg_name, license_key, license_key_path)
+
+ def test_add_license_key(self):
+ """Test the installation of license key files."""
+ license_key = "Bli bla blub, I am a nasty BLOB!"
+ license_path = "/opt/silly-license/NASTY.KEY"
+
+ def get_license_key_mock(uid, pkg, oauth, server):
+ return license_key, license_path
+
+ self.chroot.add_test_repository()
+ trans = Transaction(None, enums.ROLE_ADD_LICENSE_KEY, self.queue,
+ os.getpid(), os.getuid(), os.getgid(), sys.argv[0],
+ "org.debian.apt.test",
+ kwargs={"pkg_name": "silly-license",
+ "json_token": "lalelu",
+ "server_name": "mock"},
+ connect=False)
+ os.makedirs(os.path.join(
+ aptdaemon.worker.aptworker.apt_pkg.config["Dir"],
+ "opt/silly-license/"))
+ self.worker.plugins["get_license_key"] = [get_license_key_mock]
+ self.worker.run(trans)
+ self.loop.run()
+ self.assertEqual(trans.exit, enums.EXIT_SUCCESS,
+ "%s: %s" % (trans._error_property[0],
+ trans._error_property[1]))
+ # Check the content of the installed key
+ verify_path = os.path.join(
+ aptdaemon.worker.aptworker.apt_pkg.config["Dir"], license_path[1:])
+ with open(verify_path) as verify_file:
+ self.assertEqual(license_key, verify_file.read(),
+ "Content of license key doesn't match")
+
+ def test_use_apt_auth_conf(self):
+ """Test if credentials of repositories are store securely in a
+ separate file.
+ """
+ source_file_name = "private_source.list"
+ self.worker.add_repository(Mock(), "deb",
+ "https://user:pass@host.example.com/path",
+ "natty", ["main"], "comment",
+ source_file_name)
+ # check if password was stripped (source file)
+ source_parts = apt_pkg.config.find_dir("Dir::Etc::sourceparts")
+ source_file_path = os.path.join(source_parts,
+ source_file_name)
+ with open(source_file_path) as source_file:
+ source_file_content = source_file.read()
+ self.assertFalse("user:pass" in source_file_content)
+ # check if password was stored correctly (auth.conf)
+ auth_file_path = apt_pkg.config.find_file("Dir::Etc::netrc")
+ with open(auth_file_path) as auth_file:
+ auth_file_content = auth_file.read()
+ for token in ["login user",
+ "password pass",
+ "machine host.example.com/path"]:
+ self.assertTrue(token in auth_file_content)
+ buf = os.stat(auth_file_path)
+ self.assertEqual(stat.S_IMODE(buf.st_mode), 0o640)
+ # now add the repo again with updated auth credentials and ensure
+ # that the info is not duplicated
+ self.worker.add_repository(Mock(), "deb",
+ "https://xuser:xpass@host.example.com/path",
+ "natty", ["main"], "comment",
+ source_file_name)
+ # check if password was stored correctly (auth.conf)
+ auth_file_path = apt_pkg.config.find_file("Dir::Etc::netrc")
+ netrc_file = netrc.netrc(auth_file_path)
+ self.assertEqual(len(netrc_file.hosts), 1)
+ with open(auth_file_path) as auth_file:
+ auth_file_content = auth_file.read()
+ self.assertFalse("login user" in auth_file_content)
+ for token in ["login xuser",
+ "password xpass",
+ "machine host.example.com/path"]:
+ self.assertTrue(token in auth_file_content)
+ netrc_file = netrc.netrc(auth_file_path)
+ self.assertEqual(len(netrc_file.hosts), 1)
+ # add another one
+ self.worker.add_repository(
+ Mock(), "deb", "https://user2:pass2@host.example.com/path2",
+ "natty", ["main"], "comment", source_file_name)
+ netrc_file = netrc.netrc(auth_file_path)
+ self.assertEqual(len(netrc_file.hosts), 2)
+ # change mode and add another repo
+ os.chmod(auth_file_path, 0o740)
+ self.worker.add_repository(Mock(), "deb",
+ "https://user:pass@host.example.com/path3",
+ "natty", ["main"], "comment",
+ source_file_name)
+ # and ensure auth.conf mode is kept and *not* reset
+ buf = os.stat(auth_file_path)
+ self.assertEqual(stat.S_IMODE(buf.st_mode), 0o740)
+ self.assertEqual(len(netrc.netrc(auth_file_path).hosts), 3)
+
+ def test_modify_apt_auth_fallback(self):
+ netrc_tempfile = tempfile.NamedTemporaryFile()
+ # note that the order of password/login is different than the
+ # standard order
+ netrc_tempfile.write("""
+machine private-ppa.launchpad.net/project-foo
+password baz
+login foo
+""".encode("utf8"))
+ netrc_tempfile.flush()
+ # now pretend we have a different user/pass
+ uri = "http://foo2:baz2@private-ppa.launchpad.net/project-foo"
+ self.worker._store_and_strip_password_from_uri(
+ uri, netrc_tempfile.name)
+ # ensure that it used the fallback prepend
+ with open(netrc_tempfile.name) as f:
+ self.assertEqual(f.read(), """
+machine private-ppa.launchpad.net/project-foo login foo2 password baz2
+
+machine private-ppa.launchpad.net/project-foo
+password baz
+login foo
+""")
+ # and another one with a new entry that just goes to the end
+ # and special chars, note that the python netrc parser will fail
+ # for non-ascii (yes, it does)
+ uri = "http://m%20oo:bär@private-ppa.launchpad.net/project-moobar"
+ self.worker._store_and_strip_password_from_uri(
+ uri, netrc_tempfile.name)
+ with open(netrc_tempfile.name, 'rb') as f:
+ self.assertEqual(f.read().decode("utf-8"), """
+machine private-ppa.launchpad.net/project-foo login foo2 password baz2
+
+machine private-ppa.launchpad.net/project-foo
+password baz
+login foo
+
+machine private-ppa.launchpad.net/project-moobar login m%20oo password bär
+""")
+
+
+@unittest.skipIf(not PY3K, "Only test the backend for Python3")
+def setUp():
+ pass
+
+
+if __name__ == "__main__":
+ # import logging
+ # logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
+
+# vim: ts=4 et sts=4